Merge Sprint 9: clean $80 win asserted; guard redesigned; pyrrhic wired

Selftest on merged main: 287 pass / 0 fail.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-17 15:12:07 +10:00
parent d3258baaa8
commit 855106d37e
2 changed files with 17 additions and 2 deletions

View File

@ -2933,3 +2933,17 @@ Selftest: **277 passed, 0 failed, 0 skipped**, LANE BAL now visible.
[D] 2026-07-18 — ⏳ **Still owed by me: play site_02 cold** (blocked — A's site-as-data + E's corner [D] 2026-07-18 — ⏳ **Still owed by me: play site_02 cold** (blocked — A's site-as-data + E's corner
block haven't landed), and the full-week feel pass. Both are queued and neither blocks anyone. My block haven't landed), and the full-week feel pass. Both are queued and neither blocks anyone. My
douse guard is still green, so pond masses haven't moved. douse guard is still green, so pond masses haven't moved.
[I] 2026-07-19 — **SPRINT 9 INTEGRATION (main).** All lanes merged; selftest **287/0/0**. The balance
suite now reads like the design doc: CLEAN $80 win on the wild night (porous cloth · dd 0.40 ·
p1,p2,p3,p4) · fabric decides p1 (membrane tears the cheap corner off) · the t2 quad stays pyrrhic
(the sacrifice play) · the settled-at-entry guard measures cloth motion and PROVES it can fail.
Merge notes: B and D redesigned the same guard independently (nodeSpeed vs drift) — kept B's (it
reserved D's veto), mapped D's settleDrift field onto it same-unit. Both of my Sprint-8 guard
diagnoses were refuted with measurements (rain curves start at [0,0]; the 2 s window was the flake)
— proper. The pyrrhic ruling is wired with its own verdict mode and E's third card.
**Still open, carried to SPRINT10:** A's site extraction (data/sites/*.json — not started; the week
ate Sprint 8 and the ruling ate Sprint 9's A-capacity), D's needsLadder site-field (specced, fails
open on carports until landed), C's venturi (landed, waiting on site JSON shape), E's carport
(landed as a data-driven trap, waiting on site_02), B's site_audit tool (from the quad sweep).
Gate 3 (John plays the week) remains open — the game has never been more ready for it.

View File

@ -323,8 +323,9 @@ async function fly(yard, session, stormName, { repair = false, broom = false, se
lost: rig.corners.filter((c) => c.broken).length, lost: rig.corners.filter((c) => c.broken).length,
spent: START_BUDGET - session.budget, spent: START_BUDGET - session.budget,
pond: Math.round(pond), pond: Math.round(pond),
/** mm/s the cloth was still drifting when the storm started — the settled-at-entry guard. */ /** mm/s the cloth was still moving when the storm started the settled-at-entry guard.
settleDrift: settleDriftMmPerSec, * (Merge note: B's nodeSpeed guard kept; D's drift metric mapped onto it, same unit.) */
settleDrift: entrySpeed * 1000,
}; };
} }