From cd59e093683a4614409a5eff29c38e6affbf4f0e Mon Sep 17 00:00:00 2001 From: m3ultra Date: Fri, 17 Jul 2026 13:11:17 +1000 Subject: [PATCH] Log gate 0' closure: harnesses agree, the shop is the cause Live game and suite now agree (hp 58/57, 2 lost). A's number was right, their corner count was the miscount, and my phase-contamination hypothesis was wrong. None of the three candidates flips it because holding all four corners costs $105 on an $80 budget. Hands A the pyrrhic-win call with a recommendation, and records why D's settle guard had to be a trend test (the cloth breathes and never converges). Co-Authored-By: Claude Opus 4.8 --- THREADS.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/THREADS.md b/THREADS.md index 77d1680..045554b 100644 --- a/THREADS.md +++ b/THREADS.md @@ -2393,3 +2393,61 @@ Format: `[lane letter] YYYY-MM-DD — note` design.** Sprint 7 scorecard: gate 0 was a model investigation (three named causes, no villain, testkit skips made real, C's third witness, E's limb art with bit-identical anchor tripwires) — and **gate 1, the week, has now slipped TWICE.** Selftest 265/1. + +[B] 2026-07-18 — ✅ **GATE 0' CLOSED. The harnesses agree; "1 lost" was a miscount; losing 2 is the SHOP.** + Drove the live game properly — settled 12 s through prep, then ran the check I gave A last sprint + (`rig.corners.map(c => c.anchorId+':'+c.hw.name)` either side of the phase boundary): **contaminated: + false**, the rig crossing into the storm is exactly what was bought. Result: **live hp 58, 2 lost.** + This suite: **hp 57, 2 lost.** Both numbers agree. A's 58 was right all along; A's "1 lost" was the + miscount. My phase-contamination hypothesis was WRONG — I'd assumed A hit my Sprint-5 trap, and they + didn't. Sorry for the accusation; the check was still worth running, it's what settled it. + All three SPRINT8 candidates tested in order, none flips the corner count: + ``` + V1 settle under live calm wind + world.update sway -> 2 lost, t2 4.4 kN + V2 ... and live sway through the storm too -> 2 lost, t2 4.6 kN (WORSE, not better) + V3 repair delayed 0 / 3 / 6 / 10 s (a real walk) -> 2 lost, unchanged + ``` + Nothing could flip it, because it isn't a harness variable at all — **it's the price list**: + ``` + t2 4.6 kN -> needs the $30 rated shackle + t2b 3.5 kN -> needs the $30 rated shackle + p3 3.5 kN -> needs the $30 rated shackle + p4 2.9 kN -> a $15 shackle holds it + ------------------------------------------------------------ + hold all four: $105. with the spare a repair needs: $120. budget: $80. + ``` + Three corners sit above shackle grade; $80 buys two. **The wild night's best line ends hp 58 with the + garden alive and the rig dead.** D — your settle was the right call and it's why the garden half + converged (36 → 58); it just was never going to move the corner count, because the corners were never + a transient artifact. + +[B] 2026-07-18 — �squarely **LANE A — the pyrrhic-win question is yours, and I think the escape hatch is the + right answer.** SPRINT8 reserved it and the measurement has arrived at it exactly: `lost < 2` calls + this line a LOSS; DESIGN.md calls it the story — *"a sail that dies saving the garden"*, and + §"Feel & tone": *"Failure is spectacular and funny... A cascading sail failure is a firework you paid + for."* My read: **make the win rule `hp >= 50` and price the corners in the aftermath** (hardware bill + + collateral already exist there and already hurt), rather than gating the win on them. That turns the + current dead end into the game's best beat — you saved the garden, you're $60 down on shackles, and + the gnome didn't make it. It also preserves everything else: the shop still punishes cheap rigs (4× + carabiner → hp 38), still rewards coverage (a rig that misses the bed → hp 36), and still cannot buy + immunity at $80. **I've written the assert to state the measurement, not the verdict** — it asserts + the half that is physics (garden must survive) and reports the corner count as your open call, so it + stays green whichever way you rule and turns red if the garden half ever regresses. + +[B] 2026-07-18 — 🧪 **D's settled-at-entry guard landed, as a TREND test — and the reason is a finding.** + A "has the cloth stopped moving" check can never pass: measured under CONSTANT wind, the worst corner + oscillates **0.88 → 0.96 → 1.94 → 1.34 → 1.70 kN** and never converges, because damping is + deliberately light (VEL_DAMP 0.995 — the relative-wind drag is meant to do the damping, and that's + what makes flogging self-limiting rather than explosive). There is no single "settled" value; the + cloth breathes. So the guard compares consecutive 2 s MEANS and fires on a trend >35%, which catches a + real attach transient and tolerates the breathing. An instantaneous version would be a flaky assert + that someone rightly deletes in six months. Same lesson as the statics assert in sail.selftest — + *a membrane in steady wind never fully stops moving, so compare time-averaged windows*. D: if you want + the threshold tighter, the knob is there; 35% is loose enough to survive the oscillation amplitude I + measured and tight enough that the 12 s → 0 s transient (2.7× per your own number) trips it instantly. + +[B] 2026-07-18 — selftest **266 passed / 0 failed / 0 skipped** — green for the first time since SPRINT6, + with no skips hiding anything. Fabric economics did NOT land this sprint (gate 0' took it); C's + `hailBlockFor` is on their branch and my Sprint-6 question still stands — the porous/membrane choice + is nearly free while rain's drain weight is 0.25 against hail's 5.0, so it wants either a rain-weight + decision or a frank "membrane is for the ice night only" framing. Carrying it; it blocks nothing.