Lane A R30 (v7.0-alpha ledger #6): THE ROTATION BOUNDARY VERIFY — HOLDS. F's day salt (207bcff) rides runtime streams only: stk-* stock-pick labels, dig binSeed, setWeekNight night-SELECTION over the plan-time week. Measured 3 ways: grep-zero over the proven citygen/** glob (8 files/2546 lines, pattern non-vacuous vs interior_mode.js); generatePlanFor consumes no day-shaped opt at any call site; day-inertness byte-measured (plan hash identical day-absent/1/37, 3 seeds x synthetic+osm, 6/6). Selfcheck ALL GREEN 156352/156352, fingerprint 0x5f76e76 frozen, all town pins green, zero re-pins.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-18 14:42:54 +10:00
parent cb03f07fb2
commit 5e115688ed
2 changed files with 43 additions and 4 deletions

View File

@ -1,9 +1,20 @@
# LANE A — CITYGEN · progress (PROCITY-A) # LANE A — CITYGEN · progress (PROCITY-A)
*Status: **all deliverables landed; self-check ALL GREEN (156,352/156,352); rounds 227 (incl. wave 5) closed**. *Status: **all deliverables landed; self-check ALL GREEN (156,352/156,352); rounds 230 closed**.
R27 w5 THE FACADE FIX: every town — synthetic included — had its shopfronts facing away from the street R30 (v7.0-alpha ledger #6): the rotation boundary VERIFIED — F's `day` salt rides runtime streams only,
since **v1**. Fixed in all four ry sites; **51 goldens re-pinned**; the classic covenant amended on John's plan generation structurally cannot receive it; all goldens frozen, zero re-pins.*
ruling (`0x3fa36874 → 0x5f76e76`); a cross-convention gate added so it can never recur.*
## Round 30 (2026-07-18) — the rotation boundary verify (ledger #6, small round as briefed)
One job: prove F's day-salted stock rotation (207bcff) never reaches plan generation. **It holds.**
Three measured legs (full detail in LANE_A_NOTES §30): (1) grep-zero for day identifiers over the proven
`citygen/**` glob (8 files / 2,546 lines, census printed; pattern proven non-vacuous against
`interior_mode.js`); (2) structural absence — `generatePlanFor` consumes no day-shaped opt and neither
shell call site passes one; (3) day-inertness byte-measured — plan hash identical with `{day, stockDay}`
hostilely injected as 1 and 37 vs absent, 3 seeds × synthetic+osm, 6/6. The salt's actual reach: `stk-*`
stock-pick stream labels + dig `binSeed` + `setWeekNight` night-selection over the plan-time 7-night week
(day picks a night, never generates one). Selfcheck ALL GREEN 156,352/156,352, fingerprint `0x5f76e76`
frozen, every town pin green. No files of mine changed except these two notes.
## Round 27 wave 5 (2026-07-17) — THE FACADE FIX (the epoch's biggest catch) ## Round 27 wave 5 (2026-07-17) — THE FACADE FIX (the epoch's biggest catch)

View File

@ -2,6 +2,34 @@
Durable answers to questions other lanes raised against Lane A. Full status in `A-progress.md`. Durable answers to questions other lanes raised against Lane A. Full status in `A-progress.md`.
## Round 30 (2026-07-18) — THE ROTATION BOUNDARY VERIFY (ledger #6): **HOLDS**
### → Fable / F: `day` rides RUNTIME streams only — plan generation cannot see it. Measured, not read.
**Verdict: the seeded-rotation boundary HOLDS.** F's `day` salt (207bcff) touches exactly three runtime
seams and nothing upstream: (1) `interiors.js:178` `ctx.stockSalt` from `opts.stockDay`, consumed ONLY in
`layout.js:417` as a suffix on the `stk-*` stock-pick stream labels (room/fittings/audio streams untouched
`stockSalt` has exactly those two references in the tree); (2) the dig `binSeed` key `@d` tag in
`interior_mode.js` (same null-gating: no game / day 1 / real-sourced ⇒ absent); (3) `gig_state.setWeekNight`,
which only **selects** a night from `plan.gigs` — the whole 7-night week is generated at plan time
(`gigs.js:227` `for night < NIGHTS`) from citySeed streams; day picks, never feeds.
**How measured (three falsifiable legs):**
1. **Grep-zero over the proven glob:** `citygen/**` = exactly 8 files, no subdirs, 2,546 lines (census
printed, ls-verified). `grep -riE 'day|stockDay|stockSalt'` → zero identifier hits (only lexical noise:
fixture name "Heydays", shop name "Sunday Stall", "today" in comments, `daylesford_real` golden keys).
Non-vacuous: the same pattern hits `stockDay` 4× in `world/interior_mode.js`.
2. **Structural absence at the entry:** `generatePlanFor(seed, source, opts)` consumes `opts.{town, gigs,
customBands, cache, report}` only (grepped every `opts.` in citygen); both shell call sites
(`index.html:127`, `map.html:315`) pass `{town, gigs, customBands}` — no day exists to pass.
3. **Day-inertness, byte-measured:** hostilely injected `{day, stockDay}` into `generatePlanFor` anyway —
plan JSON hash identical for day-absent / day 1 / day 37 across 3 seeds × both sources (6/6 legs,
e.g. synthetic 20261990 `0xec7a2d39` all three ways). Even a rogue caller can't leak day into a plan.
**Goldens frozen:** selfcheck **ALL GREEN 156,352/156,352**, fingerprint `0x5f76e76` (the covenant),
gig golden `0xec7a2d39`, all town pins (melbourne/katoomba/silverton + real caches) green, no re-pins.
Pre-existing informational ⚠ (redhill "Empire Revival" lift-drop) unchanged, not mine, not new.
## Round 27 wave 5 (2026-07-17) — THE FACADE FIX: it was every town, not just the real ones ## Round 27 wave 5 (2026-07-17) — THE FACADE FIX: it was every town, not just the real ones
### → F: **your files hold the old covenant hashes — they are now wrong, and only you can fix them** ### → F: **your files hold the old covenant hashes — they are now wrong, and only you can fix them**