Appearance
Escape money-moves are journal-sourced (forced-freeze-cage-e2e)
2026-07-30 · plan closed (Phases 1–6, 16/16 trajectory rows) · PRs #177 #181 #183 #184 #185 #187
A lease-lost, rake-having table now self-disposes cleanly on staging: frozen → escape → custody → closed with conservation delta 0, no human in the loop — proven by a fresh live smoke (FF7T2K) and by reconciling all three stuck specimens (C2UFJ4/ZDA9W3/K9P6HN) to zero frozen tables. Every leg of the escape is journal-authoritative:
- D1 — custody entry-id allocation is chain-reconciled (
ensureEntryIdFloor+submitEntryWithAllocRetry); the boot-reset counter collision class is closed. - D2 — a frozen table's funded rows zero only with a value-bearing custody journal entry (the
frozenDestructiveWriteAllowedchokepoint; refusals spanparticipant.frozen_write_refused). - D3 — a divergent escape moves the players' journal share (
pool − unreconciled rake), never the whole vault; the rake stays collectable. - D4 — the playSKPK v2 cutover had left the play-custody vault bound to v1 ("vaults bind one mint for life"): a fresh v2-bound custody deployment (
7xBsye3q…) + the house destination's v2 ATA restored every play custody handoff (escape / idle_kick / bust / forced-withdraw). - D4a/D4d — hold rows memorialize what landed (id + amount trued-up on re-runs), and rake "collected" means the collect landed (
unlandedRakeChipsin@numero/db— one boundary, read by both the escape and the custody-invariant freeze trigger; 123 dead-lettered reconciliations had been read as "collected"). - Falsification (5 fixes) — partial clean-escape re-runs are idempotent (deterministic per-(table,user) entry ids + an owner16-verified exclusion/heal pass — no double-pay, orphans heal); the frozen-write guard's predicate compares current values and requires value-bearing journal entries; a reconciled hold is superseded by its claims in both identity readers; the reconcile refuses
hold_entry_mismatchinstead of blind-splitting a foreign entry. - Cleanup — the 794-line custody route composite split into escape / reconcile / claims modules;
holdOwner16centralized in the identity lib.
Unblocked: table-ownership-lease U1 (the enforcement-flip smoke completed here — the owned_elsewhere refuse-to-host guard proven live). Deferred, tracked: mainnet remediation of the same two cutover gaps (fresh mainnet custody deployment + house v2 ATA + compensating two landed claims that orphan on the flip) — rides the next release train; and EVM escape parity (EVM is off the deploy lists; the weekly-thesis-audit ✗-list carries it).
Current-state pages: escape-divergence · table-frozen-recovery (now with the D1–D4d worked example) · custody-reconcile-held-table. Full history: .indusk/planning/archive/forced-freeze-cage-e2e/.