PROCITY/web
m3ultra 5db3155991 Lane D round-6: harden streamed roster + default-on readiness memo
Flag ?roster=stream stays default-off; v1 path byte-identical (citizen-0 = R4 golden, passes
F1 flags-off regression). Full evidence memo in LANE_D_NOTES for the R7 default-on decision.

- Soak (in-shell, real town): 242 chunk builds/disposes over 3 walks -> 0 GPU geom/tex delta;
  16 shop enter/exit -> 0 delta; heap oscillates 50->77->54MB (GC, no leak); 188 chunk-keyed
  identities re-derive from seed; 0 console errors.
- Hours-aware density: added setNightLivelyChunks + NIGHT_LIVELY_FLOOR so the open-late video
  block stays lively at night (31->16) while ordinary streets go near-empty (65->6). F call-site
  documented (openLate lot -> chunkKey via sim.chunkKeyAt).
- Composition with ?dig=1: roster is street-tier, inert while interior/dig open (frame loop is
  street-branch-only); enter/exit record shops leak-free with stream on. No shared state with any
  v2 flag -> all-on combo safe.
- Budget gap found + made safe: each decimated ped is 8 sub-meshes / 2 materials = ~7 draws/rig,
  so full-density stream (perChunk 16) hits 356 draws (>300 street budget). Set default perChunk 8
  (291 draws, budget-safe today). The clean unlock for full-density default-on = merge ped
  sub-meshes by material (8->2 -> ~2 draws/rig -> perChunk 16 fits ~260); documented as R7 work,
  F1-safe (v1 spawn view has ~0 near-rigs).

Only web/js/citizens/sim.js + web/citizens_test.html changed (+ NOTES/progress).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 22:56:39 +10:00
..
assets Lane E round 5 (E2): depot growth — street bin + record-crate stack (consumer-driven) 2026-07-14 21:27:13 +10:00
js Lane D round-6: harden streamed roster + default-on readiness memo 2026-07-14 22:56:39 +10:00
models/peds Lane E round 4 (E1): decimate 19 ped rigs 924k→46k tris (≤3k each) for gate 3 2026-07-14 18:29:50 +10:00
vendor PROCITY scaffold: spec, research, 6 Opus lane prompts, core modules, vendored three r175, 69 inherited skins 2026-07-14 10:46:40 +10:00
citizens_test.html Lane D round-6: harden streamed roster + default-on readiness memo 2026-07-14 22:56:39 +10:00
index.html Lane F R5 F2: wire ?dig=1 crate-riffle into interior mode 2026-07-14 22:03:31 +10:00
interior_test.html Lane C R5 C2: crate-riffle dig behind ?dig=1 (v2) 2026-07-14 21:11:31 +10:00
map.html Lane A round 6: second plan source ?plansrc=osm (real-data OSM import) — full seam 2026-07-14 22:47:38 +10:00
package.json Lane A (CityGen): deterministic town generator, registry, names, 2D map, self-check 2026-07-14 12:06:41 +10:00