Establish what is happening
Identify the source representations
Choose controlled records with an empty field, quoted empty text, an explicit null marker if supported, and an omitted field where the format allows it. Record their intended meanings separately. A spreadsheet display may show them identically even when their underlying file representations differ.
Trace parsing and field assignment
Compare the parsed values, validation messages, and saved fields for those examples. Find the first stage that collapses two meanings into one. Check whether the operation creates a new record or updates an existing one, since the consequences of assigning an empty value can differ.
Inspect one resulting workflow
Use one affected field to check the visible result and a relevant downstream behavior, such as filtering for unknown values. Keep the existing value available in the controlled update case. Do not assume that a blank display means the stored value or update instruction is also blank.
What to carry forward
End with each source representation, intended meaning, observed assignment, and first collapsing boundary. State whether the problem affects creation, updates, or display. The next investigation should start from an explicit empty/null contract rather than replacing every blank cell with the same default value.
Technical background: PostgreSQL documentation.
Keep the decision with the work.
Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.
Create an account See the product workflow