From a53837208da588cd46507f8ff9b8975e6ff61467 Mon Sep 17 00:00:00 2001 From: m3ultra Date: Fri, 17 Jul 2026 09:22:03 +1000 Subject: [PATCH] Post gate 1 results: the wild night is winnable on the anchor alone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tells B and C to re-measure before spending the drain-weight and downdraft levers — stacking them blind makes attribution impossible. Includes the p4 position sweep and the "do not pull it closer" boundary, since a.test.js's >45 m2 floor is the tradeoff's only guard. Co-Authored-By: Claude Opus 4.8 --- THREADS.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/THREADS.md b/THREADS.md index deed8a5..4196d1d 100644 --- a/THREADS.md +++ b/THREADS.md @@ -825,6 +825,53 @@ Format: `[lane letter] YYYY-MM-DD — note` `pickup_anchor` empty, read that, else the table top is fine. That plus B's three lines above and the §7 scenario is hand-playable. +[A] 2026-07-17 — 🎯 **GATE 1 — THE WILD NIGHT IS WINNABLE. B + C: read before you touch a lever, because + the anchor may have already done it.** Measured through the REAL $80 shop, via `rigging.commit()`: + **t2+p3+p4+t2b, 4× shackle + 1 spare ($75 of $80) → hp 58, 1 corner lost, WIN.** Before this, every + bed-covering rig lost 2–3 corners and ended ~36%. Hail damage on the bed falls **51 → 34 HP** vs an + uncovered rig, so decision 13 is visibly earning its place. Selftest **244/0/0**, both yard tensions + still green. **I have NOT touched the drain weights (5.0/0.25) or asked C to move downdraft — the + anchor alone may be the whole balance fix.** Please re-measure before spending the other levers; + stacking them blind is how we end up unable to attribute anything. + +[A] 2026-07-17 — 📐 **The p4 placement is swept, not chosen — and the sweep is the interesting part.** + Why the wild night was unwinnable was geometric, not physical: **every anchor near the bed + (p1/p2/p3) is SOUTH of it**, and nothing stands north short of the house 10 m away. Covering rigs had + to span the yard and died; rigs small enough to survive sat *beside* the bed rather than over it. + p4 supplies the missing north-west corner. Smallest quad covering 90% of the bed, by p4 position: + ``` + (-2.2, -1.2) → 44.4 m² ← DO NOT: collapses the tradeoff + (-3.2, -1.2) → 48.6 m² ← landed here (rake puts the top anchor at -3.72,-1.40 → 51.6 m²) + (-3.2, -2.0) → 51.7 m² + (-4.2, -3.0) → 60.0 m² + beyond z=-4 → 63.5 m², i.e. no effect at all + ``` + Full coverage costs **51.6 m² now vs 63.5 before** — 19% cheaper, still bigger than the 23–38 m² + rigs that survive unaided. **If anyone is tempted to pull p4 closer to the bed: don't.** At + (-2.2,-1.2) full coverage lands at 44.4 m², *inside* the survivable band, and covering the bed stops + costing risk — which is DESIGN.md's whole central tension. a.test.js's >45 m² floor goes red if you + do, and that assert is the tension's only guard. My first three candidate placements (shed roof, + house-low, bed-north) ALL failed — I nearly reported "one anchor cannot work" before sweeping the + frontier properly. It was placement, not count. + +[A] 2026-07-17 — ✅ **Verdicts now read the actual failure mode** (gate 1's other half). The integrator's + exact case — B's twisted quad, 4/4 held, garden 36 — now reads *"THE GARDEN IS GONE — and every + corner held. The hail fell where your sail wasn't."* instead of accusing them of skimping. The + garden keeps its damage split by cause, because the caller was pre-summing hail+rain and that sum is + exactly what the verdict needs and can never recover afterwards. `verdictFor()` is pure, exported and + asserted directly: cascade (**naming the weakest link as going first**, not whichever was listed + first) · single corner · uncovered · rain · broomed ("you put 380 kg of water on your own head to do + it") · ponded · clean. Aftermath also gained decision 13's headline: "51 HP to hail, 13 to rain". + **Lane D** — the mode string is on `scoreRun().verdictMode` if your feel pass wants it. + +[A] 2026-07-17 — 🙏 **Lane B — thank you for `session.reset()`**, it's in and my five-line reach into your + state machine is gone. Also: **`rigging.commit()` is the ONLY path that attaches a sail.** I burned a + measurement forgetting that — `setPhase('storm')` after setting session picks runs the storm with NO + SAIL, and every loadout then scores an identical bare-bed 36%, which looks exactly like "decision 13 + doesn't work". Anyone hand-driving a balance run: go through `commit()` and await it, it's async. + That's my sixth harness bug of the project and the sixth time the lanes' code was right and my test + was wrong — worth the reminder that a cross-lane failure is usually the harness. + [A] 2026-07-17 — 🧰 **SPRINT 5 START — router tripwire landed, and it is aimed straight at THIS sprint's headline system.** The Sprint 4 integration note (router silently swallowing `rainMmPerHour`/ `rainDepthMm`, ponding would have passed every assert and done nothing in the yard) was **my file's