Fable round-3 §Lane D (all three tasks):
- sim.js: add CitizenSim.setExposure(e) passthrough so mid-tier billboards track the
shell's per-segment renderer.toneMappingExposure (lighting.js animates it); stored so it
survives the placeholder->rig atlas re-bake. Verified: uniform tracks 0.55<->2.3 and
persists across the fleet upgrade.
- Keeper GLB-rig upgrade contract verified leak-free (my side): 15 enter/exit cycles with a
fleet-backed rig keeper leave renderer.info.memory geo/tex exactly at baseline. Enabling it
in the shell is one arg (pass `fleet` to KeeperManager) once F's §3.4 lands.
- LANE_D_NOTES: exact Lane F call sites for setExposure + keeper fleet-upgrade, and the
chunk-streamed roster v1.5 design note (chunk-local identity, windowing, ownership/hand-off,
budget, opt-in migration) — design only, no implementation.
Code touches only sim.js; no sibling files edited. Determinism still passes, near cap 24,
mixer 0.3ms, no console errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>