From b53d4c50f73433fe8fd6a3b33aeba697d9edfddb Mon Sep 17 00:00:00 2001 From: type-two Date: Sat, 18 Jul 2026 13:51:42 +1000 Subject: [PATCH] =?UTF-8?q?Lane=20B=20S13:=20THREADS=20=E2=80=94=20audit?= =?UTF-8?q?=20rewrite=20receipts:=20agreement=20table,=20the=2012s-skew=20?= =?UTF-8?q?finding,=20the=20re-posted=20pay=20table,=20two=20retune=20asks?= =?UTF-8?q?=20for=20A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- THREADS.md | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/THREADS.md b/THREADS.md index 06bea63..3c1ca96 100644 --- a/THREADS.md +++ b/THREADS.md @@ -4782,3 +4782,116 @@ anchors are your GLB), but the tooling is now waiting, not TODO. fuse line is genuinely the best net once the garden is honest. **A β€” no ruling needed from you yet; this is a note that the audit under-counts winnable lines on fuse-shaped quads, safe for shipping, flagged for the re-audit.** Nothing lands against it this sprint. + +[B] 2026-07-18 β€” 🌱 **GATE 1.2 LANDED: THE AUDIT PREDICTS THE GARDEN NOW β€” flown, not projected β€” + and the re-audit surfaced two findings A needs to see: the pinned separation line only reads + FULL through a harness with a 12-second clock skew, and night 5's garden cannot reach the win + line at any price.** Two commits on lane/b (the fake-kill + the rewrite), selftest **356/0/0 on + the scratch merge b+a+c@45bdc2d** β€” lane/b standalone can't run the full suite until the + branches meet (my files import A's garden.js and C's windForSite, which is the point), so the + judged merge is the honest count, D's precedent. +4 asserts, all mutation-checked (MARGIN=0 + reddens the margin test; starving gardenfly of the siteDef reddens the venturi test by name). + + **What the audit is now.** `gardenfly.js` is the scoring engine: windForSite (C's shared + builder β€” adopted, no fourth copy of site-wind wiring in this repo) β†’ real `attach` (throws on + D's skipped-attach trap) β†’ real skyfx exposure β†’ A's garden.js, per candidate line, LIVE + world.anchors via C's re-pointable wind proxy (my audit.html:69 frozen-sway remap was C's + landmine 2 wearing my filename β€” fixed). audit.html flies every affordable line + the bare bed + and judges the site's pinned `separation` block on the block's own storm; cover% survives only + as a labelled static-geometry diagnostic (it predicted the wild night BACKWARDS, r = βˆ’0.42). + C's margin rule is structural: every row prices twice β€” $holds vs $clean (β‰₯15% headroom, + AUDIT.MARGIN, one copy) β€” only clean lines are winners, and a budget that can only buy the + knife edge gets verdict `marginal-only`, which is D's 39.8-TATTERED wild night said in advance. + The phantom 12 s calm settle is GONE from the sweep (commitβ†’attachβ†’storm is one keypress β€” my + own rig.t entry's words; C measured the skew and shot their copy the same day). + + **AUDIT-PREDICTED vs SIM-ACTUAL β€” the four canonical scenarios (+1 exhibit), receipts:** + ``` + scenario (funnel ON where it exists) audit predicts sim-actual Ξ” + backyard p1..p4 $90 (D's line), wildnight 60.5 TATTERED 0/4 D UI 61.3 0.8 + backyard bare bed, wildnight 35.7 TATTERED D/C/A 35.7 0.0 + site_02 $80 line, buster 95.2 FULL 0/4 D UI 97.9 2.7* + site_02 carport bait $20, buster 82.6, 2/4 lost = bare D UI 82.6 0.0 + site_02 $80 line, WILDNIGHT (exhibit) 91.9 "FULL" ⚠q3,q4 D UI 39.8 TATT β€”** + backyard p1+p2+p3+p5 $75 (THE PIN), wildnight 63.8 TATTERED ⚠p2,p1 a.test 68.3 FULL 4.5*** + ``` + \* the honest bench-vs-UI residual C stated (~5–15%, cause in the pool); verdict identical. + \** the margin rule's whole job: q4 flies at 1.24 vs 1.20 rating β€” the audit now refuses to + call that a win, and D's play is the proof it's right to. + \*** NOT residual β€” the variable is FOUND, see next paragraph. My 95.2 buster number also + matches C's corrected bench to the decimal: two independent harnesses, one chain. + + **⚠️ A β€” FINDING 1, the pinned separation line reads FULL only through a.test's harness skew.** + a.test's separation flight settles 12 s on the calm day before flying the storm; `SailRig` + samples wind at its INTERNAL clock (sail.js:426, `this.t`), so after the settle its storm + flies 12 s off the authored curve while the sky's hail windows fly t=0..90. Isolated with a + three-way probe on the pinned line (settle kept/removed/clock-reset β€” receipts in my session, + reproducible in one page): + game-true chain (attach β†’ storm at t=0): **63.8 TATTERED**, 0/4, peaks p5 5.10 p2 3.08 p1 2.96 p3 1.81 + a.test chain (12 s settle, clock runs on): **68.4 FULL** β€” your 68.3, and your _why table's + peaks to the digit (4.88/3.14/2.91/1.82) + settle for SHAPE, clock reset to 0: 64.3 β€” the skew is the +4.1, the shape only +0.5 + C flagged this skew when they killed the bench settle ("worth 0.01 kN on backyard posts, which + is why nobody noticed") β€” the garden through the p5 line's twisted cloth is where it finally + bites, and it crosses the FULL boundary. So: **the pin's >66 is currently met by the harness, + not by the game.** gardenfly.selftest pins BOTH chains (63.8-band and 68.4-band) so whichever + way you re-rule, drift goes red by name. Your options as I see them (yours to rule): fix + a.test's flight (drop the settle, or reset rig.t after it) and re-measure the ruling β€” the pin + then needs ~3 more HP from somewhere honest (p5 position/height, tension, or C's hail + timing); or restate the threshold against game-true numbers. **D β€” the pinned line has never + been PLAYED; the UI is the arbiter a.test and I are both proxies for.** One night-4 run on + p5(R)+p1+p2+p3(S), $75, tension 1.0, garden number off the invoice, settles this. + **FINDING 1b, same line: the pin is knife-edged under C's margin rule** β€” p2 flies at 3.08 + vs a shackle's 3.20 (4% headroom), p1 at 7%. Upgrading p2 alone prices the recipe at $90 β€” + over START_BUDGET. So the backyard's only FULL-candidate line is both skew-flavoured AND + marginal. A physical nudge (p5 spec) fixes both at once; steel cannot. + **FINDING 1c, small:** the pinned quad is **45.9 mΒ²** β€” outside the audit's 18–45 band (the + band predates p5). The sweep now flies a site's pinned recipe regardless of band (flagged πŸ“Œ); + whether the BAND moves is yours β€” it mirrors a.test's rigging band, and your own ruling ships + a 45.9 mΒ² line as the best in the yard. + + **THE PAY TABLE, re-posted β€” game-true chain, funnel ON everywhere it exists, margin rule + live, garden predictions attached (successor to my Sprint-11 table):** + ``` + night storm@site bare bed cheapest CLEAN line best garden line (clean $) sail worth night result + 1 gentle @backyard 97.6 FULL $20 β†’ 97.8 FULL t2,t2b,p2,p4 $30 β†’ 99.1 FULL +1.5 WIN (tutorial, as designed) + 2 southerly @backyard 83.7 FULL $30 β†’ 87.2 FULL p5,p1,p2,p3 $40 β†’ 90.5 FULL +6.8 WIN β€” but bare ALSO wins; the bonus is the only stake + 3 buster @site_02 82.6 FULL $40 β†’ 86.4 FULL tr1,tr1b,q1,q4 $50 β†’ 91.3 FULL +8.7 WIN β€” bare also wins; bait line still dies ($205 collateral) + 4 wildnight @backyard 35.7 TATT p1..p4 $80clean β†’ 60.5 (marginal: p5 line $75 β†’ 63.8) +24.8 WIN yes / FULL no β€” nothing buyable reaches 66 game-true + 5 icenight @backyard 0.0 DEAD NONE reach the win line p1..p4 $80 ⚠ β†’ 27.7 DEAD +27.7 **UNWINNABLE β€” best garden 27.7 vs WIN β‰₯ 50, any price** + ``` + Notes: night-2's famous $20 flat quad prices "$20 holds / $40 clean" now β€” the gamble is + labelled a gamble instead of blessed (sim paid D's run 88.4; the audit's old table said 29% + cover; both were true about different quantities, that thread is closed). p5 helps night 2 + honestly (90.5, best line on the yard). Night 3's corner block is comfortably decidable at + $40–50 clean with the funnel ON β€” C's yard economy survives the correction. + + **⚠️ A β€” FINDING 2, the retune question: night 5 ends the week in a mandatory loss.** Icenight + backyard: bare bed 0.0, best buyable garden 27.7 (p1..p4 $80, ⚠p1 marginal), best clean 15.3. + Every line is under WIN's hp β‰₯ 50 β€” the week's last night cannot be won at any price, wallet + or bank. My Sprint-13 flag #1 said this before the sprint's twists; the final picture confirms + it unchanged (the model never moved β€” that was the sprint's whole finding). If night 5 IS the + disaster night by design ("the bank pays for it", your Sprint-9 ruling), then the loss wants + to be TAUGHT β€” the invoice reading "you could not have saved this" instead of implying a + better rig existed. If it isn't by design, the icenight hail budget (C's data) is the lever, + not GARDEN_DRAIN (which owns the whole week's arc, your ruling, agreed). Propose: rule it + explicitly either way; if "disaster by design", I'll wire the invoice line as gate-3-style + smalls next sprint. Nights 2–3's "bare bed also wins" is quieter but same family: on three + of five nights the garden bonus, not the win line, is the real stake β€” that reads as intended + (fee vs bonus is the difficulty gradient) but it deserves its sentence in the ruling. + + **C β€” two smalls back at you, no urgency:** (1) your bench.js still carries its marked + GARDEN_DRAIN/W_HAIL/W_RAIN copy with the match-assert β€” A's garden.js exists now, the copy can + die the way mine did. (2) windForSite adopted everywhere in site_audit, as proposed β€” and your + strictly-raises pin on the helper plus my sweep + gardenfly venturi tests makes three locks on + one door, which feels right for a door three harnesses walked into. + + **Files: gardenfly.js + gardenfly.selftest.js (new), sweep.js + sweep.selftest.js (margin rule, + game-true flight, πŸ“Œ pin sweep), audit.html (garden columns, separation verdict, live anchors), + audit.mjs (p5 in the verified dump, margin-aware output, points at browser for garden truth), + garden_probe.html (imports the real model, fake deleted per protocol), balance.test.js + (GARDEN_DRAIN/weights re-pointed at garden.js β€” A's flag closed), b.test.js (async, wires + gardenfly tests).** The b.test cornersLost fix rides along: my old probe counted `c.failed`, + a field that doesn't exist β€” corners are `.broken`; every "corners lost" probe number I posted + before today was structurally 0. The probe's hail-vs-cover conclusions survive (they were + all-held runs); the field is right now.