PROCITY/web/js
m3ultra 89f278b603 Lane C: round-11 audio contract — room.audio on buildInterior
buildInterior returns room.audio = { musicKey, toneKey }, seeded per shop: keys into Lane E's manifest.audio (interior music bed + room-tone). Lane F's interior_mode plays it, B's audio.js resolves keys->files. Keys not files: buildInterior stays synchronous + asset-free; silence on missing/mute/noassets (house audio law).

Maps mirror the manifest per-type types arrays: record/milkbar/video/dept/arcade always play their bed; other types room-tone-only except a seeded ~1-in-3 general radio (the 'general'-tagged milk-bar bed).

Verified 9 types x 8 seeds: 0 bad keys, 0 nondeterminism, all keys resolve + match manifest type membership, deterministic per shop. Contract + F wiring: docs/LANES/LANE_C_AUDIO.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 15:46:58 +10:00
..
citizens Lane D round 10: fix interior giant rigs + no-giants QA gate 2026-07-15 13:01:54 +10:00
citygen Lane A round 9: freeze CityPlan v2 contract in CITY_SPEC + closing-time occupant ruling 2026-07-15 10:56:19 +10:00
core
interiors Lane C: round-11 audio contract — room.audio on buildInterior 2026-07-15 15:46:58 +10:00
world Lane F R9 F1+F2: interior presence + tram + buy-anywhere wiring; harness graduated + new smokes 2026-07-15 11:42:44 +10:00