Go to file
m3ultra a0b578477c Lane B round 15: verify hero after A's poster flip + night poster readability (?gigs=1)
Verified A's ledger-#1 flip (35da83c): the pub's own-frontage poster moved from 15.9m behind the
building to 0.09m from the door on the +Z street face, facing the reader -- no queue_night pose
change needed (R14 prediction held). Gig golden 0x1f636349->0x4f4a549d consumed cleanly.

Fix (John-sanctioned exception to the R14 freeze): posters were unlit MeshStandardMaterial and
rendered pure black at NIGHT (measured frontage poster centre [183,71,59] day -> [4,0,1] night), so
queue_night + district_posters showed no readable bill even after A's flip. venue.js now gives posters
emissiveMap = the poster art, emissiveIntensity ramped in update() by night (0 day -> 0.55 night, same
lerp as glow/pools). Self-lights the bill after dark; daylight byte-identical (verified midday spine
poster pixel-unchanged). No new rng, no plan change, goldens frozen. ?noassets fallback self-lights too.

Verified fresh Chromium seed 20261990: queue_night (seg5, live queue) frames marquee + window glow +
streetlamp pools + a readable red poster by the door + queue punters (90 draws/29k tris);
district_posters night now shows a poster (was black, 180/138k); daylight unregressed.

-> Lane F (B->F handshake): HERO VERIFIED. Shoot queue_night at seg 5 (NIGHT) -- poster now reads there
   and night is needed for pools+glow; drive the queue live (rAF throttled in automation). Poster
   night-emissive rides the shell's per-frame venuePresentation.update(gigState.byVenue).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 10:11:53 +10:00
docs Lane B round 15: verify hero after A's poster flip + night poster readability (?gigs=1) 2026-07-16 10:11:53 +10:00
pipeline Lane E R14 (v3.0 release): provenance freeze + doc-consistency fixes 2026-07-16 01:18:40 +10:00
priorwork Fable (integrator): round-3 lane instructions + archive round-1 lane prompts 2026-07-14 14:30:36 +10:00
tools Lane F R13 (v3.0-beta, the district): per-venue gig state + walla/applause + queue wiring; qa --strict 6/6 2026-07-16 00:22:03 +10:00
web Lane B round 15: verify hero after A's poster flip + night poster readability (?gigs=1) 2026-07-16 10:11:53 +10:00
.gitignore Fable: R14 kickoff rulings recorded (push done, flag stays opt-in, genres final) + gitignore local session files 2026-07-16 00:59:42 +10:00
B-progress.md Lane B (Streetscape): round-12 v3.0-alpha — venue frontage + posters + muffled-gig spill (?gigs=1) 2026-07-15 20:15:40 +10:00
C-progress.md Lane C R14 (v3.0 release): venue audit + docs freeze + guitar_amp ruling 2026-07-16 08:40:42 +10:00
D-progress.md Lane D round 12: gig band + crowd + patronage surge (?gigs=1) 2026-07-15 19:49:07 +10:00
E-progress.md Lane E R12 (v3.0-alpha gig layer): 5 instruments + 4 posters + 3 gig audio 2026-07-15 19:44:48 +10:00
F-progress.md Lane F R13 (v3.0-beta, the district): per-venue gig state + walla/applause + queue wiring; qa --strict 6/6 2026-07-16 00:22:03 +10:00
README.md PROCITY scaffold: spec, research, 6 Opus lane prompts, core modules, vendored three r175, 69 inherited skins 2026-07-14 10:46:40 +10:00

PROCITY

A standalone, procedurally generated, fully walkable 90s-Australian shopping town — every building enterable (the Vuntra City trick), every interior seeded and themed: record stores, op shops, toy shops, book barns, video rental, pawnbrokers, milk bars, market stalls. Built on the proven house stack (three.js r175 vendored, plain JS, no build step) and the asset DNA of 90sDJsim + thriftgod. v1 is the system; the GODVERSE/BaseGod real-item content plugs in later.

Run

cd web && python3 -m http.server 8130
# http://localhost:8130            (game shell — Lane B)
# http://localhost:8130/map.html   (2D plan debugger — Lane A)

Read first

  • docs/CITY_SPEC.md — the treaty: schema, units, seeds, budgets, file ownership.
  • docs/RESEARCH.md — what the parent repos already solved, with exact paths to port from.

The lanes (parallel Opus 4.8 sessions)

Each lane is a self-contained prompt. To run one, start an Opus session in this repo and say: "Read docs/LANES/LANE_X_….md and execute it." AE are parallel-safe (disjoint files, standalone test pages); F integrates after they land.

lane mission owns
A — CITYGEN seed → CityPlan data (streets, blocks, lots, shops) + 2D map js/citygen, js/core/registry.js, map.html
B — STREETSCAPE chunk-streamed instanced 3D town + game shell index.html, js/world
C — INTERIORS every door opens: seeded themed shop interiors js/interiors, interior_test.html
D — CITIZENS rigged-near / impostor-far NPCs + shopkeepers js/citizens, citizens_test.html, models/
E — ASSETS audit ultra's library, normalize GLBs, skins, manifest pipeline/, assets/
F — INTEGRATION wire AE into one seed-to-town game + QA gates (after AE)

Already in the repo

  • web/vendor/ — three.js r175 + addons (vendored from 90sDJsim; no CDN at runtime).
  • web/assets/gen/ — 69 generated texture skins (25 shopfront facades, 10 skies, 10 grounds, 8 wallpapers, 16 interior surfaces) inherited from thriftgod + 90sDJsim, style-locked.
  • web/js/core/ — frozen shared modules: prng.js (seeded-everything law), loaders.js (fail-soft promise-cached GLB/texture + 3GOD depot), canvas.js (text planes).

House laws (short form — CITY_SPEC has the fine print)

Seeded everything, Math.random banned in gen code · the game must run with zero assets · instancing from day one · canvas text, no font files · characters = shared base rigs + one clip bank, canonical sources live outside this repo · 🟢 web-ok licensing only.