Establish what is happening
Record the promised preview boundary
Capture the interface’s stated behavior and the action the user took. Identify whether it was upload, validation, preview, or confirmed execution. Use a controlled fixture and known destination baseline so a later state difference can be tied to this flow rather than another editing session or background process.
Compare destination and bookkeeping state
Inspect the relevant destination records separately from upload, validation, or preview records. Record creations, updates, and timestamps for the controlled source identities. A new import-attempt record is not itself evidence that destination data was written; equally, a preview label does not establish that destination state remained unchanged.
Trace the first write boundary
Follow the controlled action to the operation that first changes destination state. Check whether validation invokes an assignment path or whether execution was actually triggered by navigation or a reused request. Preserve the sequence and observable record identities without assuming that leaving the preview screen reverses any write already made.
What to carry forward
End with the stated preview contract, exact state difference, triggering action, and first observed write boundary. Distinguish expected metadata from unintended destination changes. The next owner should be able to reproduce the boundary mismatch without treating every database write as an import or assuming a preview is harmless solely because of its label.
Technical background: Django import-export 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