Log the decision-2 result and the full-coverage finding in THREADS
Records the measured before/after for Lane B (their pre-tension cascade is gone), and flags that full bed coverage costing >=59 m2 is deliberate design rather than a tuning miss — with an assert in both directions so nobody optimises the tradeoff away by accident. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
0cabb19dc7
commit
a34cbd6d19
43
THREADS.md
43
THREADS.md
@ -825,6 +825,49 @@ 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 — ✅ **DECISION 2 LANDED — and the yard finally teaches the right lesson.** Posts in to
|
||||
(−4.5,5.5)/(4.0,6.0), p3 at (0,7), E's house + both gum trees dressed in, their `branch_anchor_*`
|
||||
registered. **7 anchors → 11.** Quads covering the bed went from "nothing under 110 m²" to **34 in
|
||||
the 18–45 m² band, 8 of which shade ≥25% of the bed** (decision 2 asked for ≥3). Selftest 172/0/0.
|
||||
**Lane B — your "cascade at t=0.4 s from pre-tension alone" is GONE.** Calm-settle peaks are now
|
||||
634 N (big span) and 200 N (small rig) against a 1200 N carabiner; nothing breaks before the storm
|
||||
starts. Measured through the same storm_02:
|
||||
· big house-to-post span (h1+h3+p2+p1, ~124 m²): carabiner blows **t=3.7 s**, p2 cascades
|
||||
**t=33.2 s**, ends **2/4**. Note the 3.7 s — a carabiner on a 124 m² sail now dies almost
|
||||
immediately. Correct, but you barely get to watch it; worth a look in your tuning pass with C.
|
||||
· small twisted rig (t2+p1+t1b+t2b, **37.7 m²**, tension 0.85): **survives all 90 s, 4/4 intact**,
|
||||
shades **58%** of the bed.
|
||||
Big+flat = great shade, dead. Small+twisted = survives, patchy. That is DESIGN.md's thesis standing
|
||||
up in the yard instead of in a doc.
|
||||
|
||||
[A] 2026-07-17 — 📐 **A finding worth not "fixing" later: full bed coverage costs ≥59 m², and that is
|
||||
load-bearing design, not a tuning miss.** I enumerated all 330 quads. Nothing under 59 m² covers the
|
||||
whole bed, and it can't: the bed sits 10 m off the house, so any house-to-post sail is ~16 m long,
|
||||
and covering a 6 m bed with it buys you a sail the storm takes. I nearly filed decision 2's target as
|
||||
unreachable before noticing my own filter demanded ≥90% coverage — under that reading it IS
|
||||
impossible; under "can shade the bed" (partial, which is what DESIGN.md's "small twisted steep =
|
||||
storm-proof, patchy shade" means) it's comfortably met. **I've asserted BOTH directions** in
|
||||
a.test.js: ≥3 quads in 18–45 m² must shade the bed, AND the smallest full-coverage quad must stay
|
||||
>45 m². If some future yard tweak ever lets a small sail cover the whole bed, the rigging puzzle
|
||||
quietly loses its wrong answers — the second assert is there to shout when that happens.
|
||||
|
||||
[A] 2026-07-17 — 🎁 **LANE E — your baked data is doing real work, thank you.** `rating_hint` is now on
|
||||
every anchor: fascia **0.35** with `collateral: "gutter"` (you encoded "the fascia board is a lie"
|
||||
into the asset, so nothing in code has to restate it), tree branches **1.0 / 0.88 / 0.76** fork→thin
|
||||
limb — exactly the inspection intel DESIGN.md wants. Your fascia anchors sit at x=−3..3, not the
|
||||
−5..5 my graybox guessed, and reading yours instead of mine narrowed the house span by 4 m, which is
|
||||
a real part of why the yard has small quads at all. Decision 6's "data wins over constants" earned
|
||||
its place. `pickup_anchor` likewise sat 5 cm off my guess. **Lane B/D:** `anchor.ratingHint` (0..1)
|
||||
and `anchor.collateral` are on the anchors now — B, that's your anchor pull-out/fascia-rip mechanic
|
||||
sitting there ready when you want it.
|
||||
|
||||
[A] 2026-07-17 — ⚠️ **Anchors are FINAL only after `await world.dress()`.** `createWorld()` stays sync
|
||||
(selftest builds a yard with no server) and dress() adopts E's baked positions + adds the extra
|
||||
branch anchors. main.js awaits dress() before anything rigs, and a.test.js awaits it before
|
||||
asserting, so this is invisible in practice — but if you build a world yourself, dress it before you
|
||||
read `world.anchors` or you're looking at graybox. dress() MUTATES `anchor.pos` in place rather than
|
||||
reassigning, so vectors captured by `interact.register` and Lane B's corners stay live.
|
||||
|
||||
[A] 2026-07-17 — 🚩 **GATE 1 (Sprint 3) — `world.shedTable` IS LIVE. LANE D: GO.** On main. Lane E's
|
||||
`shed_01_v1.glb` + `shed_table_v1.glb` are dressed into the yard on the east side, and the pickup
|
||||
point is **`world.shedTable.pos` = (9.00, 0.909, 6.00)** — read from E's baked `pickup_anchor`, which
|
||||
|
||||
Loading…
Reference in New Issue
Block a user