9.3 KiB
CHOAM Worthless and revival recovery — 7 September 2026
This checkpoint implements the bounded work identified in CHOAM_WORTHLESS_CONTINUATION_AUDIT.md. The source audit remains the record of the original defects and applicable publisher evidence. No new rule interpretation or public mode activation is introduced.
11 October 2026 Semuta update: accepted reactive Baliset and La La La now pause after the used-card cost in the explicit development preview. The original uncommitted ordinary move or free-force request is already stopped; a typed marker resumes only the original restriction and notice, never the denied request. Claim/pass leaves resources unspent and permits another legal move or paid revival. Canceled declarations still retain their card, create no Worthless discard and resume the original request under the unchanged quote. Nexus, movement-card/Ambassador and competing parents remain separate. See the bounded runtime evidence.
Resolved defects and shared execution
The original in-memory probe produced a real reactive La La La declaration, then corrupted its saved parent. Increasing the request to 99 forces returned negative Tanks after printed cancellation; a null benefit queue accepted a new BG cancellation cost before failing later; a contradictory Mentat flag restored an impossible phase-4 decision. The unchanged probe now rejects all three cases for both printed Karama and BG conversion. These were malformed-save defects, not demonstrated legitimate-action exploits.
game/choam-worthless-cancellation.ts checks the original CHOAM owner, declared printed effect, phase, response target/location/type, current blocked-card receipt and at most one original context. It returns a detached blocked receipt and exactly one continuation: none, storm, revival, movement or Mentat. The engine uses it before a new cost and again before clearing the canceled response, then consumes that one result. It preserves proactive effects, Basic behavior and omitted false legacy flags. A stale phase block resets as before.
The denied effect does not require CHOAM still to hold its declared Worthless card or the denied target still to have a useful force. Actual special-Karama cash-in can remove the declared card without breaking cancellation recovery. The original physical card is not discarded again. Existing Baliset movement validation and legitimate changed-order fizzle remain intact.
game/revival-resume.ts supplies the shared unchanged request calculation used by actual offerRevivalStop and finishRevival, as well as reactive La La La cancellation. It preserves the frozen request and prices, ordered benefit queue, genuine Advanced Tleilaxu stop choice, insufficient-funds and Fremen-limit abandonment. It validates kind, payer, ordinary/elite custody, safe counters, exact normal force price and supported charge rates. Ixian free-cyborg allocation is validated from the frozen numeric receipt without recomputing current free allowance or changing a negotiated price.
The initial queue can contain both expanded limit and discount. The real consumer shifts its first benefit exactly once. Native and foreign leaders, negotiated early return and ghola buyback, Kwisatz Haderach, Auditor and Emperor-funded extra forces keep their separate producer rules. Successful settlement consumes exact Axlotl accrual and Tleilaxu income descriptors. The revived faction triggers technology; the actual payer owns the corresponding free-income receipt. Existing unknown legacy free-revival usage remains unknown.
game/choam-storm-quote.ts shares the original public threat computation with live CHOAM offers. It validates an untraversed original storm, prior protections and affected physical forces before returning a CHOAM choice or the next storm-protection boundary. Initial origin zero, forty-sector traversal and protected territories remain supported. Private hands never determine whether the public offer exists. It does not move the storm, choose casualties, reveal a No-Field or answer Fremen protection during preflight.
Independent review read the shared helpers and actual consumers. It identified an additional saved-price gap; force receipt checks now reject both within-Tanks amount changes with stale price and unsupported zero payment for paid forces. No further concrete allowed-path regression was found. The coordinating review read every new helper, adapter and test file.
Tests and browser verification
The registered additions are 74 rules tests and four multiplayer tests:
tests/choam-worthless-cancellation.test.ts: 53 cases spanning eight actual declaration routes, printed/BG denial, real cash-in, retained cards, phase/block validation and original-parent matching.tests/revival-resume.test.ts: 11 cases observing genuine producers, original two-check queues, normal and negotiated leader types, typed Ixian costs, Emperor funding, technology/free-income receipts, pure boundaries, fizzles and both cancellation forms.tests/choam-storm-quote.test.ts: ten cases covering public threat parity, detached results, missing current threat, prior protection, origin zero/distance 40 and malformed storm/custody before costs.tests/choam-worthless-cancellation-recovery.test.ts: four production-room SQLite tests with fresh module loading/authentication, concurrent final response compare-and-swap, exactly-once revival/payment or restored storm choice, real subsequent storm decline, private views and 12 malformed pre-cost/paid-save rejections without writes.
The original defect probe is /tmp/dune-choam-worthless-audit-probe.ts; its successful rejection results are /tmp/dune-choam-worthless-audit-probe-after.log. Focused integration passed 156 revival tests, 168 Worthless tests, ten new storm tests and the four new SQL cases. One new storm test initially assumed the wrong territory display order; its expected order was corrected to the existing board order. No runtime behavior was changed for that test expectation.
Only the existing isolated room 8S3MRDEK was staged. Version 77 was saved, then the same two authenticated seats became Bene Gesserit and CHOAM. A conserved phase-4 position used real revive-three and La La La declaration actions to produce version 78. The browser used Baliset to cancel at version 79. A controlled opposing allowance completed the original revival at version 80: three forces returned, four spice paid, 17 reserves, three Tanks, six spice, and one free force recorded. CHOAM retained La La La and BG retained its private Shield. The revival log and cancellation cost appeared once.
Browser refresh and screenshot confirmed the restored resources, private hand, unavailable further normal revival and available readiness control. Clicking Ready for next phase succeeded at version 81. Private before/staged/pending/final/resumed artifacts are /tmp/dune-choam-revival-qa-*.json, created with mode 0600. This is a staged interaction and recovery check, not a complete CHOAM game.
At 08:50 UTC, controlled maintenance backed up all 2,287 rooms after confirming the known human room remained idle at version 14. The development server restarted successfully; every saved state hash and version matched afterward. Backup and verification: /tmp/dune-maintenance-20260907T0850/. The next manual restart is due about 09:50 UTC during active work when safe. The user-removed automation remains removed.
Final verification
2,386/2,386 rules/client/component tests and 216/216 multiplayer tests pass (2,602 total). Typecheck, lint and production build pass. Final logs are /tmp/dune-choam-resume-rules-final.log (60,331.2 ms), /tmp/dune-choam-resume-multiplayer-final.log (24,881.4 ms), and /tmp/dune-choam-resume-{type,lint,build}-final.log.
Twenty public-start Basic games completed across player counts two through six and all four homogeneous AI profiles. The sample accepted 12,008 actions with no rejected candidates, stalls or checked failures, and 536 JSON round trips. Runtime was 126,174 ms. The unchanged runner is /tmp/dune-sapho-base-fullgames.ts, with seed 20261015 and complete evidence at /tmp/dune-choam-resume-fullgames-final.json. Source hashes remained unchanged throughout the run and matched again afterward; fingerprint d8eed2141b2502f294e2c2332431f369ad31480c30656c8b1b577659977bc4c3. Final touched-file hashes are /tmp/dune-choam-resume-final-hashes.json. This verifies a Basic regression sample, not comparative AI strength or complete expansion acceptance.
After the controlled restart, the same authenticated browser seat displayed its retained ready state, force counts, six spice and private Shield. No extra cancellation, payment or revival occurred on reconnect.
Remaining scope
A genuine response or decision remains a boundary in these finite quotes. Later automatic allowance, broader storm/phase closure, original-actor promises and all cancellation families are not yet exhaustively proven. The existing atomic wrapper remains; no separately persisted general Karama cost frame is introduced. Frozen-rate consistency does not replace the original producer's entitlement validation.
Complete Advanced play, every faction/expansion/module combination, remaining card effects and timings, component acceptance and comparative AI calibration remain unfinished. Public Advanced and expansion starts remain gated. Full compliance is not claimed by this checkpoint.