PROCITY/web/js/citizens
m3ultra 2fd4c1cf79 Lane D R36 w2.5 (Fable ruling): CLASSIC KEEPS ITS PEOPLE — the 5 DJ bodies gate out of ?classic's pool
b339402 appended the 5 trellis'd DJ bodies to PED_NAMES.normal unconditionally, so
?classic=1 fetched them and its seeded crowd pool widened 17->22 (F's held §36.4 warn).
Ruled option (b): the five gate OUT of classic, mirroring the sit/look/dance !CLASSIC
clip gates. classic is the v2 town INCLUDING ITS PEOPLE; the DJs walk every other boot.

MECHANISM (rigs.js only — zero shell edits): PED_NAMES.normal restored to the covenanted
base 17 (exact pre-July-20 list); the five move to PED_NAMES.djs; loadPedFleet gains
djs = dance (default tracks the existing dance flag, which the shell already passes as
!CLASSIC). Roster = djs ? [...normal, ...djs] : normal — the five APPEND, so no base
slot renumbers: default boot's 22-list is byte-identical to the pre-ruling list and
classic's 17-list is byte-identical to pre-b339402. pickRig maps through pool.length,
so 17 restores the exact pre-July-20 crowd mapping, not merely the width.

MEASURED (fresh contexts, port-isolated no-store servers, seed 20261990):
- ?classic=1: ZERO of the 5 DJ GLBs fetched (21 ped-GLB fetches = 17+2 bodies +
  walk+idle) · pool 17 normal / 19 all · 129-citizen census all base-17 u comical,
  zero DJ · 0 console errors.
- default: all 5 fetched · pool 22/24 · 37 DJ-bodied street peds · F's organic gig
  proof preserved (pinned seed's venue crowd includes dj_phrtt_01 + woman_dj_02) ·
  0 console errors.
- IDENTITY vs pre-July-20: classic booted on a shadow tree with b339402^ rigs.js —
  full 129-citizen (id, pedRoll, pedIndex, pedName) census BYTE-IDENTICAL to the
  gated tree's classic boot. Same crowd, ped for ped, as before July 20.

Known side effect (noted §36): citizens_test.html passes no opts -> its dev harness
shows 17+2; not a covenanted surface, {djs:true} restores it if wanted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 23:20:52 +10:00
..
band.js feat(gig): club dancers play real dance clips, not procedural sway 2026-07-20 02:11:55 +10:00
impostor.js 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
keepers.js Lane D round-9: interior presence — occupancy truth + browser rigs (C->D->F seam) 2026-07-15 10:21:10 +10:00
placeholder.js Lane D (Citizens): deterministic LOD crowd — rigs/impostors/keepers + test page 2026-07-14 13:43:05 +10:00
queue.js Lane D R14 (v3.0): identity continuity — the ped you followed is in the crowd 2026-07-16 09:04:06 +10:00
rigs.js Lane D R36 w2.5 (Fable ruling): CLASSIC KEEPS ITS PEOPLE — the 5 DJ bodies gate out of ?classic's pool 2026-07-25 23:20:52 +10:00
sim.js Lane D R29 (v6 Spike 1): look.glb bound and wired — peds glance, feet planted (wave 0) 2026-07-17 18:44:07 +10:00