FIELD NOTES · ACCEPTANCE EXERCISES

Credit expiry and staff adjustments need a change record

A retained customer disputes which credit was consumed first. A total balance is not enough to answer. Commission an issuance-level ledger with timezone and authorised adjustment evidence; do not solve the disagreement by silently changing the amount.

Source-bound fact

The documented order uses earlier-expiring credit first; staff credit/debit actions need the appropriate permissions. 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
AUD20 expires20Oct; AUD30 expires25Octspend15 before both datesfirst lot5; second30
Spend25 on same lotsearlier lot exhaustedfirst0; second25
Staff adjustment+10; no reason/approveraudit evidence incompletedo not accept handover

Supplier acceptance procedure

  1. Record issuance IDs, amounts, currency and expiry using the store’s timezone; do not import customer-local midnight assumptions.
  2. Run consumption before the two expiries and retain per-lot output alongside the displayed total.
  3. For a manual adjustment, require actor, permission, reason, approval and timeline entry; use redacted synthetic identities.

Interpret the output

After a15 debit the remaining total is35, but5+30 is the evidence that explains which lot remains. A compliant change record is not evidence that an expiry term is lawful. Keep the merchant’s policy approval separate from the arithmetic and user permissions.

Explicit limits

No advice on lawful expiry, timezone conversion engine or live credit mutation. The fixture assumes both lots are unexpired and already approved.

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 store-credit-expiry-permission-record.json