Lane D: status + garden-harness landmine note (parameter shadow + skipped attach)
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.
This commit is contained in:
parent
f3136093fc
commit
94624cddcc
30
THREADS.md
30
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.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user