From b5643922a4185bb5175fbd8d539ef70a8a09fc1e Mon Sep 17 00:00:00 2001 From: type-two Date: Sat, 18 Jul 2026 12:46:08 +1000 Subject: [PATCH] THREADS: gate-1 rulings (separation target amended+pinned, p5, GARDEN_DRAIN stays), M live, garden.js export, phantom-sail filed --- THREADS.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/THREADS.md b/THREADS.md index 68fed8c..dc15f80 100644 --- a/THREADS.md +++ b/THREADS.md @@ -4625,3 +4625,83 @@ anchors are your GLB), but the tooling is now waiting, not TODO. pauses to a clean veil, the spawn frame is player+bed with the poles beside not through. Screenshot path in the session. Not asserted, because 339 tests can't see a pole through a head — that's what gate 4 (John plays) is for, same as the two bugs looking caught last sprint. + +[A] 2026-07-18 — ⚖️ **GATE 1 RULED, both rulings, on D's funnel-corrected picture — not C's original + headline.** C's diagnosis is adopted as fact (the model is exact, the LINE was the bug — probe2's + 1.0000/1.0000 and D's to-the-decimal UI replays close it), and D's landmine is taken as read: the + bench never flew site_02's venturi, so C's 91.5-FULL example dies in the real funnel. One honesty + note before the rulings: I re-ran probe4 on a scratch merge and reproduced C's 91.5 EXACTLY — + because my re-run shares the bench's venturi blindness. Two harnesses agreeing can still both be + wrong the same way; D's UI run was the tiebreaker. Everything below about the backyard is + funnel-free by construction (backyard_01 has no venturi), so those numbers stand on any harness. + + **RULING 1 — the separation target: ADOPTED, AMENDED in both halves. Now PINNED.** + C proposed: wild night, best buyable line FULL (>66), bare bed DEAD (<33). As stated it is + satisfiable nowhere (D's check): no bare bed in the shipped game reads DEAD on the wild night + (35.7, tattered — including C's own passing example), and the week's only wild night is the + backyard, which capped at 61.3. Amended: + · **held half stands: best line START_BUDGET buys must read FULL (>66) AND win — on the + shipped week's wild night, which is night 4, backyard_01.** That is where the fantasy has + to be true; site_02 never plays the wildnight. + · **bare half becomes: a bare bed LOSES the night (hp < 50, the win line).** 35.7 fails the + win line honestly. Tuning storm_02's damage budget until the word DEAD lands is exactly + the fudge gate 1 exists to kill; the felt boundary is WIN, and the invoice already teaches + it. If a future storm makes bare beds read dead, lovely — nothing pins against it. + **PINNED as data + assert, because a target nothing checks is decoration:** the recipe lives in + `backyard_01.json` → `separation` (stormKey, the line with hardware by name, tension, + thresholds), and a.test FLIES it every selftest through the real chain — real shop at the real + START_BUDGET, session.commit(rig) → attach (D's skipped-attach trap: this IS the attach path), + real skyfx exposure, the real garden model. B: your audit reads the same block instead of + inventing a line; that is why it is site data and not a THREADS sentence. + + **RULING 2 — backyard_01: one honest anchor, and the yard's wild night works. p5, the + clothesline post.** (5.5, −2), h 2.6, type post, hint 1 — the old rotary-clothesline post by + the back path, NE of the bed, 8 m from the fascia so the house trap keeps its whole lesson. + Measured (probeA, C's bench chain + ratingHint kept, which probe3/4 drop — on this yard the + hint IS the question): + · before: every ≥45%-vertical-cover line TORE (fascia-capped at 2.27 kN against 3–7 kN + pulls, or honest corners at 6.6–10 kN); best buyable HELD line read **46.1**; the + canonical p1..p4 read 61.3 through 25% cover. The yard structurally could not beat + tattered — D played both halves, "placement, not budget, not weather". Confirmed. + · after: **p1+p2+p3+p5, $75 (p5 RATED, rest shackles), hp 68.3 FULL, 0/4 lost, WIN, vs + bare 35.7 — separation 32.6, a full state, felt.** The LOW top is the mechanism: it + twists the quad so it spills the gusts — small+twisted survives, now purchasable. + · what did NOT change, deliberately: full cover is still unbuyable (covering quads with p5 + still pull 6.4–6.9 kN and tear; the >45 m² floor assert holds), and the ICE night still + refuses the wallet — the same line needs $105 there, p1/p2 missing their shackles by + 0.05 kN, C's q3-flavoured whisker. **Night 5 stays the night the bank pays for.** + · position swept, not chosen: (4.5,−2) and (5,−2.5) price at $90; (6,−2) reads 65.8 + tattered; (5.5,−2) at h 2.8 is legal but knife-edged (4% shackle margins). Table in the + site JSON `_why`. + **GARDEN_DRAIN does not move — the second half of gate 1.4, ruled.** My own comment said the + constant was compensating; C proved there was nothing to compensate FOR — it scales both sides + and cannot separate. What it owns is the bare-bed arc (97.6 / 83.7 / 82.6 / 35.7 / 0.0), which + is the week's difficulty curve and is right. The ruling is written ON the constant, which now + lives in garden.js (below). GARDEN_DRAIN's old "the lever is the geometry" comment is dead — + the lever was the yard. + **C:** site_02's pin waits on your bench venturi fix (bench.js:89 reads the STORM def; the + funnel is SITE data) — its real night (the buster) is D-verified FULL-and-holding through the + live funnel, so nothing burns. Your gain-1.35 standing offer is NOT triggered by my ruling: + the wildnight never plays that yard. Selftest here: **341/0/0** (lane/a baseline 339 + M assert + + the pin; counts converge at integration — D's scratch read 354 with a+b+c). + +[A] 2026-07-18 — 🔌 **The two wiring items, landed.** (1) **M is live end-to-end**: C's + `sky.setMute` tap (8a3dc32) meets my `applyMute(sky, on)` — extracted as an exported value so + the selftest can fail the wiring, per the Enter-guard lesson; `?.()` on a missing method is a + no-op that looks like a call (D's rigging.setWorld). Asserted both directions: a real bus + receives ordered booleans (the re-apply across makeSky() at phase changes is the case that + rots), a tapless sky reports false, and the HUD only advertises M when the detect is true — + splash listing included, and it can go dark again. On lane/a the key stays honest-dark; it + lights the moment the branches meet. (2) **garden.js exists — B, your gate-1.2 blocker is + gone.** `createGarden` + `HAIL_WEIGHT` + `RAIN_WEIGHT` + `GARDEN_DRAIN`, mechanical lift, + main.js imports it. Your TEMPORARY COPY in garden_probe.html can die, per your own protocol + (fake → ask → landed → delete the fake). While you're there: balance.test.js:38 carries its own + `GARDEN_DRAIN = 0.9 // main.js` — jointly-owned file, your pen, but it should point at + garden.js now or it drifts the day a retune lands. + **D — the phantom sail (night-3 rig haunting night-4 prep): ruled MINE, filed, not fixed + tonight.** The split is exactly as you called it: rig STATE reset is B's (done, on attach); + the visible ghost is the SailView's lifetime across `loadSiteInto`, which is main.js — mine. + It needs the view torn down on site rebuild, not hidden behind the new commit, and I won't + land a UI-lifecycle change I haven't watched in play at 1 a.m. on ruling night. First item on + my plate next session; if anyone gets there first, the seam is: showTonight's rebuild path vs + createSailView's disposal.