FIELD NOTES · ACCEPTANCE EXERCISES

A catalogue export must prove it reached the last cursor

The first export page is not the full catalogue. Specify how a supplier will advance pagination, detect a repeated cursor and record a terminal result. A large row count alone cannot prove all authorised items were exported, especially when a connector silently retries the same page.

Who should use this acceptance brief

Businesses buying CMS or catalogue migration exports. Use this as a scoped website handover task. Where real system evidence is required, teaching examples are not a substitute.

Source-bound platform fact

Shopify GraphQL connections use pagination information such as hasNextPage and endCursor to retrieve subsequent results. An API response is subject to permissions and current API rules. Shopify: GraphQL pagination · Checked 16 October 2026.

Filled teaching example

Synthetic example, not a client case. Finite inputs, expected decisions and counterexamples follow; no live integration is claimed.

On narrow screens, scroll to read the complete table.

Input / caseCheck basisExpected decision
page A → cursor c1 → page B terminaltwo distinct pagesterminal observed
c1 followed by c1 againno progressstop and review
hasNext=true, cursor missingincomplete evidencehold

Run the acceptance exercise

  1. Record the export scope, API version and permitted object types before retrieval.
  2. Keep each page count, next cursor and terminal flag; stop on a repeated or missing continuation.
  3. Compare distinct IDs and a permitted source count, including updates during the export window.

Interpret the result and retain evidence

The fixture examines a finite supplied page log; it makes no API calls. A terminal log proves the log reached its stated end, not that permissions exposed every business record. Deduplication, removals and changes during export still require a reconciliation policy. This is a catalogue portability contract rather than a payments revenue report.

Limits before implementation

Not an exporter or API-completeness certification. No paid API/key, account permission or customer-data access is added.

Replay the finite example

Save both files in one folder and run with Node22.13 or newer. The example sends no network requests and changes no account or site. Filled inputs and expected outputs · Inspectable functions

node decision-check.mjs catalogue-export-cursor-completeness.json