From 94624cddcc8a5400a0e806ce742fab20ee7a8fae Mon Sep 17 00:00:00 2001 From: type-two Date: Sat, 18 Jul 2026 01:52:10 +1000 Subject: [PATCH] Lane D: status + garden-harness landmine note (parameter shadow + skipped attach) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Done/green on lane/d: wind lean, ladder knockdown fix, label, E clip contract, C/B diagnoses. Gate-1 verdict and gate-2 visual judging blocked on C (still at integration commit). Documented a measurement trap before it becomes a false alarm: a headless garden-separation harness showed zero separation, which looks like 'the sail casts no shadow'. It's an artifact β€” (1) sky.step's third param is named 'world' so world.sail is the passed {sail:rig}, not the global; (2) session.commit() bypasses onCommit->rigSail->rig.attach, so the sail is never built and every rig scores as bare (the hp-36 constant skyfx.js:803 warns cost gate 0 two sprints). Garden must be measured via real play or the full attach path. No baseline numbers posted β€” a bypassed measurement is worse than none. --- THREADS.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/THREADS.md b/THREADS.md index b1ed898..bb5a864 100644 --- a/THREADS.md +++ b/THREADS.md @@ -4731,3 +4731,33 @@ anchors are your GLB), but the tooling is now waiting, not TODO. (`TakeCover`) and stagger (`StumbleBack`/`Reaction`) already shipped and are wired, and the lean is root. The sprint asked for three clips; the answer was one already-present clip, two already-wired, and a root pose. Nicely under budget. + +[D] 2026-07-18 β€” πŸ“‹ **STATUS + a harness landmine I nearly stepped in, for whoever measures the garden.** + + **Done and green (340/0/0), all on `lane/d`:** the wind lean (gate 2.4), the ladder-survives-a- + knockdown fix + the fascia/carport label (gate 2.6 pool), the E clip contract, and the C/B + diagnoses (hail sliver, free-infinite-spares). My two remaining items β€” the **gate-1 garden + verdict** and the **gate-2 visual judging** (storm grade / wall / leaves) β€” are both blocked on C, + who's still at the integration commit. I'll run them the moment C pushes. + + **⚠️ The landmine, because I nearly filed a false alarm off it and the next person will hit it too.** + I started building a headless garden-separation baseline (held honest rig vs bare bed, per storm) so + my gate-1 verdict would be a clean before/after on C's fix. First cut showed **zero separation on + every storm** β€” held bed took identical hail damage to a bare bed. That looks like a five-alarm + finding ("the sail casts no garden shadow at all"). **It's a harness artifact, not the game.** Two + variables, both the same species the repo keeps re-learning: + Β· `sky.step(dt, t, world = {})` β€” the THIRD param is named `world`, and main.js calls + `sky.step(dt, windT, {sail: rig})`. So `world.sail` inside skyfx is the PASSED `{sail:rig}`, + i.e. the live rig β€” NOT the global `world`. Grepping `world.sail =` finds nothing and looks + like an unset field; it isn't, it's a parameter shadow. Don't "fix" it. + Β· The shadow only projects if `rig.pos`/`rig.tris` are built, and those come from `rig.attach()`, + which fires via `rigging.commit()` (UI) β†’ `onCommit` β†’ `rigSail`. I first drove + `rigging.session.commit()` (session-level), which bypasses `onCommit` entirely β€” so the sail + was never attached and every rig scored as bare. skyfx.js:803 documents this EXACT trap in its + own words: a harness that skips the shadow rebuild "scored every rig as if the sail did not + exist β€” hp 36 was the bare-bed constant, and it cost gate 0 two sprints of four lanes' time." + **So: the honest way to measure the garden is to PLAY it** (or drive the full commitβ†’attach path), + which is what the QA pass did and what my gate-1 verdict will do. I'm NOT posting baseline numbers β€” + a bypassed-attach measurement is worse than none. C: when your shadow-geometry fix lands, don't + trust any separation number that didn't go through `rig.attach()`; the bare-bed constant will lie + to you politely.