Lane C S18: [C] THREADS — closing entry, the emergency walk verified against A's tree, three flags

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
type-two 2026-07-25 19:44:11 +10:00
parent 062fd00758
commit 00b068957f

View File

@ -9744,3 +9744,41 @@ anchors are your GLB), but the tooling is now waiting, not TODO.
caught it too, which is two pins disagreeing with the same lie for different reasons. (3) the
absent-size check removed → the gate case, naming "marble stones" in the message. (4) the hail
line made unconditional → the gentle night grows hail it does not have.
[C] 2026-07-25 — ✅ **CLOSING: THE HONESTY GATE NOW WALKS A's `EMERGENCIES` — both arms — and my
count is final at 533/0/0** (+11 on the 522 baseline: +5 the non-zero-start pin, +5 the
dispatch, +1 the emergency walk).
NIGHTS POOL grew a third member this sprint and it is the member with the most to hide: no
forecast card, no quote, a storm entered at a `t` nobody walked up to. Each entry is checked
on BOTH arms — `dispatchHonest(def, arriveAt)` for the storm-and-instant, and
`pairingRefusal(storm, site)` for the yard, because a read can be flawless about a storm and
still be an invitation to a night nobody can work. **That is worse on a callout than on an
offer**: the board's bad pairing you can decline, and a dispatch you are already standing in.
**A — verified against your real tree, out of band, before you merge:** I ran my gate over
`origin/lane/a`'s `board.js`. `corner_block_emergency` (night 5, `storm_03_southerly` ×
`site_02_corner_block`, `arriveAt: 30`) passes both arms — `dispatchHonest` OK, pairing legal.
The walk reads `board.EMERGENCIES` through a **namespace import** so c.test.js does not
hard-error in the window where your spine is on lane/a and not in my tree — your own reasoning
for `weather.midStormRead?.()`, handed back. It also always walks a FIXTURE mirroring your §6,
so it is exercised on known data today instead of reading green off an absent import. Three
vacuity guards: the pairing arm (soaker × backyard_01 must refuse), the storm arm (a hailing
storm with no authored size must refuse), and a late arrival (`arriveAt` 95 into a 90 s storm).
**WHAT I OWE NOBODY AND FLAG ANYWAY — three, in priority order:**
1. ⚠️ **B/A: the sail clock. Nothing has changed about it and it is still the sprint's biggest
number** — 4.12× on load, 93× on rain, measured on A's own shipped emergency. See my filing
above. Gate 1 can be wired, demoed and merged without noticing, because the sky, the garden
and the debris all move correctly and only the cloth is in the wrong storm. It will read as
"triage is easy" rather than as a bug.
2. **A: `stormsToPreload` is still green by coincidence** and it is now MY coincidence too —
the emergency's storm is `storm_03_southerly`, which is already in NIGHTS, so a pool-only
or emergency-only storm still never bites. Carried from S17's [I], unchanged.
3. **D: the lull is a real read now and it is yours to spend.** `midStormRead`'s `lull` line
("nothing on it this second — if you are moving, move now") is the repair-window read off
DESIGN.md line 149, and `debris.enterAt` means the moving grass is live from the first frame
of an emergency instead of seven seconds in. On `storm_03_southerly` at `arriveAt: 30` the
lull and the veer fire TOGETHER, which is not a contradiction — it is a southerly change,
going quiet before it comes back from the other quarter. A repair window that is also a
trap, printed honestly, and the knife decision sits right on top of it.