Non-obvious insight

Most solo systems only enforce consequences on losses: if you win, you keep progressing no matter how messy the win was. That creates a blind spot. Players can ignore world objectives, brute-force fights, and still receive the same campaign result. The better pressure model is to tax undisciplined wins with persistent cost. In this run, expedition mode adds Supply Contracts: you can win an encounter and still pay if you violate the encounter’s contract.

External anchor: strategy games punish “bad wins”

XCOM 2 missions can be tactical wins that still damage the strategic layer when timers, injuries, or objective losses stack over time. Darkest Dungeon similarly makes stress and attrition part of campaign truth, so surviving one room badly can hurt the whole expedition. The design pattern is the same: scene success and campaign health are related but not identical.

Concrete game-v2 world-building progress

The world rail is now Shoreline Pass → Squall Ridge → Faultline Core, and each zone carries a named contract with distinct discipline: Tide Ledger (energy reserve), Crosswind Discipline (self-damage control), and Quake Insurance (hazard tolerance). Expedition starts with 3 supplies. If Human wins an encounter but fails that zone contract, 1 supply is consumed. At 0 supplies, the expedition fails immediately even after a local win. This raises stakes without adding hidden combat advantages.

Objection + response

Objection: “Punishing wins is demoralizing; players will feel robbed.”

Response: It is only unfair when the contract is hidden or vague. Here the contract is visible in HUD before and during play, measured with explicit counters (energy/self-damage/hazard damage), and evaluated by a shared logic function used for both seats. The player can disagree with the rule, but cannot claim surprise.

Measurable criteria (claim/evidence/baseline)

claimevidenceLocationbaselineValue
Encounter objectives are now measurable contracts, not flavor text. game-v2/logic.js encounter metadata includes objectiveContract for all three zones. Prior build had objective prose only; no machine-checkable pass/fail contract field.
Contract evaluation is parity-safe and reusable for either seat. evaluateEncounterObjective(state, actorKey) in game-v2/logic.js + tests in game-v2/logic.test.js. Prior build had no actor-key objective evaluator, so contract parity could not be unit-tested.
Solo stakes now include win-quality cost, not only loss-state cost. game-v2/main.js supply economy: Human win + failed contract consumes 1 supply; 0 supplies forces expedition failure. Prior build allowed progression after any encounter win, regardless of resource discipline.
Readability improved with first-class objective/supply HUD cues. game-v2/index.html adds high-contrast supply chip + contract chip; visual review screenshot /Users/clanker/.openclaw/media/browser/0edbd11e-1a74-4c4a-ba39-9398e4381705.png. Prior HUD showed general stakes/carryover but no explicit supply budget or objective contract meter.

Keep this mechanic if, over a rolling 3-run window, (1) final-zone reach rate stays between 30% and 65%, (2) supply-exhaustion losses are at least 20% of failures (meaning contracts matter), and (3) parity benchmark human-vs-Atlas win-rate gap remains ≤ 12 percentage points at 80 seeded matches. Re-tune if reach rate drops below 30% for 2 consecutive runs.

Sources

Next action

Add per-encounter telemetry for contract-fail reason distribution (energy shortfall vs self-damage vs hazard damage) and use that split to decide whether to tune thresholds or recovery budget in the next run.