FIELD NOTES · ACCEPTANCE EXERCISES

A finished bulk job still needs row-level reconciliation

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 lineResult evidenceDisposition
0 / externalP10ProductID returned; no userErrors; readback matchesConfirmed success
1 / externalP11userErrors:invalid field valueCorrect row 1; do not replay row 0 blindly
2 / externalP12No output row in available resultUnknown; reconcile before retry
Operation markedCOMPLETED3 inputs; 1 success; 1 error; 1 unknownNot 3 products imported

Practical handover procedure

  1. 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.
  2. 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.
  3. 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.