Light release round — C interior code unchanged since R13 (venue geometry stable by
construction); this is the audit, the amp ruling, and the v3.0-FROZEN docs.
- Re-verified vs the current tree (D's continuity + RY-fix + real instrument GLBs landed):
contract byte-identical (caps 8/8/12, deckY/riserY, gigKeys, determinism), drawSweep <=350
(worst 161), gig-night draws pub 60 / band_room 52 / rsl 71 <=350. Release-law confirmed:
D's rng namespace is disjoint from C's ctx.stream; no golden can move.
- guitar_amp ruling (LANE_C_PUB §3): NOT blessed as-is. D's pose (stage.z+0.15, down-stage)
interpenetrates the bass rig by 0.29 m; move it up-stage-right ~ (stage.w*0.36, deckY,
stage.z - stage.d*0.22), clear of the bass + C's primitive ampStacks. Full amp unification
= v3.1. Cosmetic + ?gigs opt-in -> not a tag blocker. C->D handshake.
- Docs freeze: LANE_C_PUB.md + LANE_C_AUDIO.md marked v3.0-FROZEN; RY §0 reframed past-tense
(the +Z fleet was fixed at source in D's buildFigure, R13 - no per-consumer flips); budgets
updated to R14; in-flight handoffs removed.
- Comment-only code (zero runtime/golden/rng change): fixed stale R12 inline return-shape
comments (watchPoints 6..8 -> 8/8/12; stage bandPoses[3] -> [4] + riserY) in interiors.js +
layout.js; documented the standalone gigKey hand-build. theme.js untouched.
Note for E/F: settled gig-night interior is ~182k tris (E instruments 14k each x5); F's smoke
reports ~34k measuring before the async GLBs load. Interior draw gate passes; v3.1 LOD candidate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>