A catalogue migration supplier may show “completed” while some product mutations failed. Require a source-line register, successful-object readback and a precise retry set. This solves partial execution, separately from pagination or the meaning of a blank CSV column.
Primary evidence and claim boundaries
Shopify’s bulk-import documentation describes per-line mutation results, user errors and __lineNumber mapping. Operation status alone is not every-row success. Primary reference · Read 17 October 2026.
Filled acceptance example
Synthetic teaching scenario, not a client case, provider integration test or business result. Scroll the example table on narrow screens.
| Synthetic input line | Result evidence | Disposition |
|---|---|---|
| 0 / externalP10 | ProductID returned; no userErrors; readback matches | Confirmed success |
| 1 / externalP11 | userErrors:invalid field value | Correct row 1; do not replay row 0 blindly |
| 2 / externalP12 | No output row in available result | Unknown; reconcile before retry |
| Operation markedCOMPLETED | 3 inputs; 1 success; 1 error; 1 unknown | Not 3 products imported |
Practical handover procedure
- Freeze the input JSONL file and map stable source IDs to zero-based line numbers. Record operation ID and chosen API version; do not assume output order.
- Read the full result and per-line errors, then retrieve successful target objects to verify key business fields. Detect missing, duplicate and unmatched lines explicitly.
- Build a correction/reconciliation queue with one owner per unresolved source. Design safe create/update retry semantics before resubmitting any row.
Interpret the outcome
The example reconciles 3 = 1 confirmed + 1 failed + 1 unknown. A retry file should not be generated until the unknown row is resolved; otherwise the supplier may create a duplicate. A job status and a migration acceptance receipt answer different questions.
Acceptance decision
Require input-total reconciliation, redacted per-row outcomes and readback evidence for claimed successes. Any unresolved row must remain visible at handover.
Limits and unverified work
Synthetic JSONL result, no mutation submitted. API-version semantics and mutation support must be checked for the actual implementation. Resource URLs can expire and must be handled securely.
Download the filled bilingual acceptance record — Contains these inputs, steps, expectations and limits. This is a teaching record, not an executable integration.