PROCITY/docs/shots/laneD
m3ultra 34145e24a7 Lane D round-9: interior presence — occupancy truth + browser rigs (C->D->F seam)
Follow a ped into a shop and find them browsing. D owns occupancy truth; C owns browse points;
F wires the handoff. Validated end-to-end in-shell (?stock=real). qa --strict GREEN; v1 untouched.

Occupancy (D1): patronage records who's inside which shop by shopId. New
citizens.occupancyOf(shopId) -> {count, occupants:[{seed,enteredAt,pedIndex}]} (pedIndex = the
exact ped who ducked in, for identity continuity). Cleaned on emerge/chunk-drop/stream-toggle.
Deterministic: 17 shops + occupants byte-equal across two runs (fixed a stale-occupancy leak on
stream toggle).

Browsers: keepers.js gained browse:true (faces the shelf via ry, no player-greet) + pedIndex +
seedKey. Each = a merged ped ~1 draw. 12 enter/exit cycles: count == min(occupancy,3) 12/12,
worst 61 draws <=350 (C's headroom holds), leak-free (0 GPU delta after warmup), disposed every
exit via keepers.disposeAll().

Consistency (D2): inside peds hidden on the street (0 rendered), re-emerge at the door.

F handoff verified by running F's exact interior_mode wiring (enter -> occupancyOf ->
browsePoints.slice(0,min(count,3)) -> keepers.spawn). index.html setShops door points need
shopId:s.id added. Closing-time handled by the dwell model (pending A's explicit ruling).

Evidence: docs/shots/laneD/r9_browsers_in_shop.jpg. Changed sim.js + keepers.js + test page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 10:21:10 +10:00
..
.gitkeep Lane D (Citizens): deterministic LOD crowd — rigs/impostors/keepers + test page 2026-07-14 13:43:05 +10:00
01_near_tier.jpg Lane D (Citizens): deterministic LOD crowd — rigs/impostors/keepers + test page 2026-07-14 13:43:05 +10:00
02_mid_tier.jpg Lane D (Citizens): deterministic LOD crowd — rigs/impostors/keepers + test page 2026-07-14 13:43:05 +10:00
03_main_street_noon.jpg Lane D (Citizens): deterministic LOD crowd — rigs/impostors/keepers + test page 2026-07-14 13:43:05 +10:00
04_tiers_debug.jpg Lane D (Citizens): deterministic LOD crowd — rigs/impostors/keepers + test page 2026-07-14 13:43:05 +10:00
05_noassets_placeholders.jpg Lane D (Citizens): deterministic LOD crowd — rigs/impostors/keepers + test page 2026-07-14 13:43:05 +10:00
r4_shell_night.jpg Lane D round-4: in-shell verify (D1) + decimated-ped validation (D2) + impostor tone-map fix (D3) 2026-07-14 18:56:28 +10:00
r4_shell_noon_near+mid.jpg Lane D round-4: in-shell verify (D1) + decimated-ped validation (D2) + impostor tone-map fix (D3) 2026-07-14 18:56:28 +10:00
r5_stream_tiers.jpg Lane D round-5: chunk-streamed roster (v2) behind ?roster=stream 2026-07-14 21:07:10 +10:00
r9_browsers_in_shop.jpg Lane D round-9: interior presence — occupancy truth + browser rigs (C->D->F seam) 2026-07-15 10:21:10 +10:00