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 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-17 13:11:17 +10:00
parent f9fe75f122
commit cd59e09368

View File

@ -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 — <20>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.