FIELD NOTES · ACCEPTANCE EXERCISES

Nearest is not always the first routing decision

A nearby shop may lack one item while a farther warehouse can ship the entire basket. Define the commercial priority before asking a supplier to “fix the nearest warehouse”. A reproducible routing brief lists the surviving candidates after each rule.

Source-bound fact

Shopify’s documented default prioritises fewer splits, then destination market, then closest location; distance is straight-line. Official reference · Checked 17 October 2026.

Filled synthetic acceptance example

Synthetic teaching example, not a client case or a real-store assessment. On narrow screens, scroll to read the complete table.

InputCheck basisExpected
Anear:1/2SKUs; Bfar:2/2SKUs; same marketminimise split firstB survives full-basket test
B and C both complete; Bsame marketmarket before distanceB preferred in stated model
Equal address; different creation timesspecific platform tie ruleverify actual location metadata

Supplier acceptance procedure

  1. Record at least two active locations, basket requirements, availability, market and configured rule order.
  2. Give the supplier the near-but-incomplete negative case and compare candidates after every rule.
  3. Keep address-validation failures separate from stock/routing results; retain the observed location ID and uncertainty.

Interpret the output

The model can choose the farther complete location without contradicting the stated fewer-splits priority. That is not proof of Shopify’s internal optimiser, travel time or guaranteed tie behaviour. Use the counterexample to agree intent, then obtain an authorised real routing trace.

Explicit limits

Finite teaching ranking only, not an allocation engine. Custom metafields, multi-shipment optimisation, unavailable stock and geocoding require separate testing.

Replay the finite teaching model

Save both files in one folder. With Node22 or newer, run the command below. JSON contains explicit inputs and expected results. The script processes synthetic data only, with no network, credentials, payment or API calls. Passing proves the finite model only, not a live integration.

Filled inputs and expectations · Inspectable teaching script

node check.mjs fulfilment-routing-priority-evidence.json