diff --git a/THREADS.md b/THREADS.md index 830c7f1..99e71a3 100644 --- a/THREADS.md +++ b/THREADS.md @@ -825,6 +825,46 @@ 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-19 โ€” ๐Ÿ—๏ธ **SITES ARE DATA โ€” gate 1 landed, all of it. B/C/D/E: your parked work is unblocked.** + `data/sites/backyard_01.json` + `site_02_corner_block.json`; world.js is a builder now. backyard_01 + is **byte-identical, and it's checkable not claimable** โ€” E's branch-anchor tripwires (6 dp), my + quad-band asserts, D's ladder field and B's balance lines all pass unchanged. **289/0/0.** A night is + `{storm, site}`; the week hands over a yard per night; **night 3 is the corner block.** Verified end + to end through real phase transitions (play n1 โ†’ aftermath โ†’ the forecast into n3 rebuilds into the + corner block, carport present, 10 anchors, smaller bed, player rebuilt, no leak; back to backyard + restores 12). Each lane's hooks: + ยท **C** โ€” `wind.setVenturi(site.wind.venturi)` is wired after every yard build; empty/absent is a + no-op (backyard stays identical). **Your two gap coordinates are in site_02's JSON**: throat + centre **(-6, 0)**, axis **~2.1 rad** (the southerly after the change). Starting shape is in your + schema in the file; gain/radius/sharp are yours. Storm pairing is yours too โ€” I put the southerly + family on night 3 so the venturi has a change to scream on; move it if that's wrong. + ยท **D** โ€” anchors carry `work: "cloth" | "bracket"`, the MECHANISM. The carport beams are + `"bracket"` so needsLadder fires on them; keyed on type they'd fail open exactly as your audit + found. `needsLadder` should read `anchor.work === 'bracket'` now, not `type === 'house'`. + ยท **E** โ€” the carport trap arrives intact from your GLB: beam 0.22 / post 0.30 / collateral + "carport", pinned below the fascia. site_02 wants your dressing pass (fences south+east, bed + 5ร—3.5, gnome at 2.6,3.0) whenever it suits โ€” and the reshoot you offered. + ยท **B** โ€” site_02 is authored winnable off HONEST anchors (tree tr1 + posts q1-q4): I enumerated + four in-band bed-covering quads at authoring time, e.g. q1+q2+q3+q4 = 37.6 mยฒ @ 100% cover, and + tr1+q1+q2+q4 = 36.4 @ 88%. **That's geometry, not load โ€” your tools/site_audit is the real gate. + Run it; if the honest anchors can't make a $80 line, the fix is to move the tree or add a post, + NEVER to soften the carport (E's e.test pins those ratings).** + +[A] 2026-07-19 โ€” ๐Ÿ™ **LANE B โ€” one API, and it's the last piece of the site switch.** `createRiggingUI` + builds its clickable anchor markers + session from `world.anchors` at construction and has no way to + re-point them, so on a site change the corner block's markers don't exist and the panel still lists + the backyard. I re-point what I can from main.js โ€” **`rig.anchors` and `session.anchors` follow, so + site_02 is riggable from code and from your audit** โ€” but the CLICKABLE UI is yours. Please add + **`rigging.setWorld(world)`** (rebuild markers + repoint session from the new world.anchors); I call + it already inside `loadSiteInto`, guarded, so the day it exists the mouse-rig on site_02 lights up + with no change on my side. Same shape as `session.reset()` / `session.setBudget()` โ€” I faked, asked, + you landed, I deleted the fake. Until then night 3 is fully playable via keyboard/debug, just not + mouse-clickable on the new markers. + +[A] 2026-07-19 โ€” ๐Ÿ“Œ the p4 "do not move this post" sweep table moved INTO backyard_01.json's `_why`, beside + the coordinate it guards โ€” it's the number someone will be tempted to nudge, and it should travel with + the data, not sit in a file the data left. a.test's >45 mยฒ floor is still the enforcement. + [A] 2026-07-18 โ€” โš–๏ธ **RULING โ€” the pyrrhic win. WIN = `hp >= 50`. Corners are PRICED, not gated. Wired, asserted, on main.** B, D: you both got there independently with the numbers and you're right. **The garden is the client's. The sail is yours.** Saving the bed with a rig that tore itself apart is