Release round: harden + freeze, no new systems. No golden moved (synthetic 0x3fa36874, gig
0x1f636349 both re-verified frozen); selfcheck.js is the only code touched, so no seeded generation
stream gained a draw (release-round law).
- selfcheck.js: factored the district checks out of gigSuite into districtInvariants(plan,label)
(behaviour-preserving — hero-seed gigSuite runs byte-identical), then added a 400-seed synthetic
sweep + the large edge seeds asserting the full district contract each (2-4 venues, >=1 pub, never
the openLate shop, no band twice/night town-wide, per-venue 4-6 nights, every poster off the
carriageway). Asserts the seeded count spans {2,3,4} across 400 seeds (146/121/133 — range is
exercised, not pinned). osm graceful placement: katoomba (19 shops, no warehouse district) still
lands 2-4 valid venues incl. a pub for every hero seed. Poster check kept at roadWidth/2 (a literal
poleOffset compare would false-fail corner posters); added -1e-6 epsilon on the strict boundary.
ALL GREEN 14264/14264 in ~0.7s.
- CITY_SPEC §v3: final wording pass, marked FROZEN at v3.0 (round 14) with a v2-style marker + an
explicit carve-out for F's pending alias-line deletion. Fixed the roadWidth prose (full carriageway
width, not 'half-corridor'). Genres final (pubrock/grunge/covers).
Coordination: the R12 single-venue alias line stays in §v3 for F to delete atomically with the
gig_state.js getters (debt #1) — deleting now would be doc-ahead-of-code (alias still live) and race F.
Flagged to F that the runtime block omits nightOf(id); to B that venue.js:228 is a 2nd bare-string
site. Verified: mutation-tested the sweep (non-vacuous — catches 5-venue/7-night/on-road violations)
+ adversarial pass (goldens frozen, freeze matches code, deterministic).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| docs | ||
| pipeline | ||
| priorwork | ||
| tools | ||
| web | ||
| .gitignore | ||
| B-progress.md | ||
| C-progress.md | ||
| D-progress.md | ||
| E-progress.md | ||
| F-progress.md | ||
| README.md | ||
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." A–E 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 A–E into one seed-to-town game + QA gates | (after A–E) |
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.