{
  "checks": [
    "proposal is a saved interruption and refusal returns the original turn without transfer",
    "accepted bilateral lump sums transfer atomically once with no PRNG draw",
    "malformed, duplicate and unaffordable terms reject without changing state",
    "trade requires contact and peace but a gold gift does not require roads or capitals",
    "technology trade uses prerequisites and native cannot-trade flag",
    "acquiring the current research resets its progress and persists the next-subject decision",
    "last resource export removes domestic access and imports reach the recipient capital",
    "unexplored world changes cannot make a road route available or disclose hidden deposits",
    "route loss ends the whole package, keeps upfront transfers and records a premature breach",
    "war ends contracts and blames the aggressor without refunding upfront gold",
    "minimum commitment forbids early cancellation; ongoing payments continue beyond twenty",
    "common END_TURN settles GPT exactly once and loading between commands preserves the state",
    "forecast includes promised transfers without mutating treasury, payments or PRNG",
    "AI accepts a gift and rejects an unsupported demand",
    "published schema21 migration changes only model metadata and initializes empty trade history",
    "tampered deal, payment and pending item references are rejected on load",
    "imported luxury changes actual city mood and disappears when the deal ends",
    "imported strategic resource participates in the common production requirement gate",
    "alternative roads preserve a resource agreement when one tile is removed",
    "two-sided GPT conserves money in solvent settlements and reload never repeats a credit"
  ],
  "passed": 20,
  "source": "tests/trading.test.mjs",
  "scope": "Focused core trade invariants; supplemented by full suite and actual browser report"
}
