Skip to content

Commit cf1c6fd

Browse files
dzhelezovclaude
andauthored
docs(validation): §5.11 — fatal-throw tripwire count exactness (seven→eight, +INV-24 watchdog) (#167)
The §5.11 realtime-chaos tripwire bullet claimed the harness `invariant()` fast-path grep-matches "all seven real fatal throws" in `portal/portal-realtime.ts` and enumerated seven. The file actually has EIGHT `throw new Error(...)` fatals — the omitted one is the INV-24 delivery-progress watchdog fatal ("…delivered ZERO blocks for …ms… Restart to re-sync from the finalized head."), added in the RT-1 burst (#161). The tripwire regex (`orchestrate.sh` `invariant()`: `restart to re-sync|deterministic, not retried|Cannot finalize safely|Cannot reconcile safely`) DOES match the watchdog fatal (it ends "Restart to re-sync from the finalized head"), so the mechanism was already complete — this is a doc⟷code enumeration drift introduced by the burst, not a safety gap. Corrects the count to eight and adds the watchdog fatal to the list, keeping the INV catalog exact. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent a6a86e9 commit cf1c6fd

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

VALIDATION.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1798,10 +1798,11 @@ hidden:
17981798
the existing unknown-parent/deep-reorg fatal (`Cannot reconcile safely`) before any kill could be
17991799
taken. The invariant was not weakened; K7 remains RG4/RG5.
18001800
- **The harness `invariant()` fast-path is a fatal-string tripwire, not the primary death detector.**
1801-
It grep-matches all seven real fatal throws in `portal/portal-realtime.ts` (the gap fatal, the
1802-
below-floor 409 fatal, the 409 no-progress cap, the deterministic-4xx fatal, the unknown-parent
1803-
reconcile fatal, and the two finalize fatals), but a real client **process death** fails the run
1804-
regardless of the tripwire — the tripwire is an early-exit convenience, not the safety net.
1801+
It grep-matches all eight real fatal throws in `portal/portal-realtime.ts` (the gap fatal, the
1802+
below-floor 409 fatal, the 409 no-progress cap, the deterministic-4xx fatal, the delivery-progress
1803+
watchdog fatal (INV-24), the unknown-parent reconcile fatal, and the two finalize fatals), but a real
1804+
client **process death** fails the run regardless of the tripwire — the tripwire is an early-exit
1805+
convenience, not the safety net.
18051806

18061807
**What this does NOT prove → RG4/RG5.** RG3 Phase A is crash-timing safety against a scripted mock. It
18071808
does **not** establish live-protocol reorg survival, live finalize-boundary reconciliation, multichain

0 commit comments

Comments
 (0)