diff --git a/C-progress.md b/C-progress.md index 4b8b182..537f409 100644 --- a/C-progress.md +++ b/C-progress.md @@ -3,7 +3,21 @@ *Status: **v1 complete & verified**. Standalone interiors library + test page. Every shop door opens into a unique, seeded, themed interior, generated on demand in ~4ms, byte-identical every revisit.* -Last updated: 2026-07-16 (round 14) · owner: PROCITY-C · reviewer: Fable +Last updated: 2026-07-16 (round 15) · owner: PROCITY-C · reviewer: Fable + +--- + +## Update 2026-07-16 (round 15, v3.0: closing the release) — verified D's amp fix + +R15 §Lane C (one item): verify D's `guitar_amp` reposition (ledger #4). D moved the plant (commit `66aec0f`) +to C's §3 corrected pose exactly — `band.js:236 amp.position.set(stage.x + stage.w·0.36, deckY, stage.z − +stage.d·0.22)`. **Verified (fresh port-isolated context, seed 20261990, D's real GigCrew + GLB backline):** +matches §3 (both venues); **bass clearance 0.87 m (pub) / 0.92 m (rsl)** — the R14 interpenetration (0.29 m) +is gone; on-deck within footprint; flanks C's primitive ampStack (opposite side, 4.4 m pub / 3.5 m rsl) as a +clean up-stage backline; no clash with band/crowd/watchPoints. Rendered pub gig confirms the read (amp up-stage +behind the bassist, primitive up-stage-left, band clear). LANE_C_PUB §3 updated RESOLVED. Freeze otherwise +stands; no other C change this round. Nothing else blocks on C — F runs the release (continuity wiring + smoke, +alias deletion, week soak, tour, tag `v3.0`). --- diff --git a/docs/LANES/LANE_C_PUB.md b/docs/LANES/LANE_C_PUB.md index 2a6a15d..ee08312 100644 --- a/docs/LANES/LANE_C_PUB.md +++ b/docs/LANES/LANE_C_PUB.md @@ -97,20 +97,17 @@ No `opts.gig` → a normal interior: `stage` + `watchPoints` are still returned `gigKey`** (room-tone + maybe the seeded radio `musicKey`), and D spawns no crowd. A seeded dark night reads true — the venue is just a quiet pub/club. -## 3. `guitar_amp` placement ruling (v3.0) +## 3. `guitar_amp` placement (v3.0 — RESOLVED R15) -D plants E's `guitar_amp` GLB (`band.js _addBackline`) at `(stage.x + stage.w·0.32, deckY, stage.z + 0.15)`. -**Ruling: reposition up-stage — this pose is a v3.1 fix for D, not blessed as-is.** That `z = stage.z + 0.15` -is **down-stage** (audience side): the 0.5 m amp lands 0.29 m from the bass rig, so it **interpenetrates the -bassist** and reads as clutter, not a backline. Move it **up-stage** behind the front line and clear of both -the bass rig *and* C's own primitive ampStacks. C's `placeStage` plants **1–2 primitive `ampStack` fittings** -at `(±stage.w·0.28, deckY, stage.z − stage.d·0.18)` (up-stage, always rendered, the asset-free backline -fallback — no GLB slot, so they stay primitive). A clean spot for D's GLB: **`(stage.w·0.36, deckY, stage.z − -stage.d·0.22)`** (up-stage-right, clears the bass and offsets from the primitives). With the GLB up-stage it -reads as a flanking backline with C's primitive. *Redundancy note:* the primitive + GLB coexist (2–3 amps); -fully unifying them — C exposes a `stage.backline[]` slot list that D's GLB fills, replacing the primitive — -is a **v3.1** item (no new contract fields in the frozen v3.0). Since the interpenetration is cosmetic and -`?gigs=1` is opt-in, it does not block the v3.0 tag; D corrects the pose when convenient. +**Resolved.** D plants E's `guitar_amp` GLB (`band.js _addBackline`) up-stage-right at **`(stage.x + +stage.w·0.36, deckY, stage.z − stage.d·0.22)`** — C's corrected pose (ledger #4). It's on-deck, up-stage of +the front line, and flanks C's own primitive ampStack (stage-left) as a clean backline. **Verified R15 (fresh +context, seed 20261990):** clearance to the bass rig **0.87 m (pub) / 0.92 m (rsl)** — no interpenetration +(the original R14 pose `stage.z + 0.15` was down-stage, 0.29 m off the bass, and clipped it); amp↔primitive +4.4 m (pub) / 3.5 m (rsl); on-deck both. C's `placeStage` plants **1–2 primitive `ampStack` fittings** at +`(±stage.w·0.28, deckY, stage.z − stage.d·0.18)` as the asset-free backline fallback (no GLB slot, so they +stay primitive). *v3.1:* full unification — C exposes a `stage.backline[]` slot list that D's GLB fills, +replacing the primitive — stays deferred (no new contract fields in v3.0). ## 4. Budgets (measured R14, seed 20261990, fresh context) - **Empty shells** (`drawSweep` glb-off): band_room **124** · pub **126** · rsl **135** — town-wide worst