PROCITY/docs/LANES/LANE_F_INTEGRATION.md
2026-07-14 10:46:40 +10:00

47 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LANE F — INTEGRATION & QA (run after AE land)
> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY`. Read
> `docs/CITY_SPEC.md`, then every `docs/LANES/LANE_*_NOTES.md` the other lanes left. You may
> touch any file, but prefer surgical wiring changes over rewrites — each lane's internals are
> its own. This lane turns five verified parts into one game.
## Mission
One URL, one seed, a whole town: `web/index.html?seed=N` → map → walk the streets → open any
door → themed interior with a keeper → back out — 60fps, no seams, no leaks.
## Wiring checklist
1. Swap Lane B's `fixture_plan.js` for Lane A's `generatePlan(seed)`; seed from URL param,
surfaced in HUD; `web/map.html` linked from an in-game map key (M) using the same plan.
2. Wire `procity:enterShop` → Lane C `buildInterior` (mode switch, street scene paused not
disposed, player restored on exit at the door, interior disposed on exit).
3. Wire Lane D: citizens stream with Lane B's chunks (roster per chunk key); keepers spawn from
Lane C's counter `places`; day-segment events drive density.
4. Point Lanes B/C at Lane E's `manifest.json` (skin→type mapping replaces any hardcoded pools;
GLB upgrades appear; primitive fallbacks still exercised via a `?noassets=1` param).
5. Hours: closed shops (CityPlan `hours` vs day segment) get dark windows, CLOSED plate, locked
door toast. One late-night shop per town stays open (Lane A seeds it) — verify it exists.
## QA gates (all must pass before calling it v1)
- **Determinism**: seed 1234 on two machines → identical map PNG, identical first-interior
placement list.
- **Soak**: scripted 10-minute walk (record a waypoint path, drive the camera) crossing ≥30
chunks, entering ≥15 shops: `renderer.info.memory` geometries/textures return to baseline
after each interior; JS heap stable; zero console errors.
- **Budget**: HUD numbers within CITY_SPEC limits at the busiest intersection at midday.
- **Asset-free run**: `?noassets=1` full playthrough — placeholder town, zero crashes.
- **Selfchecks**: `node web/js/citygen/selfcheck.js` + `python3 pipeline/validate_manifest.py`
green; add `tools/qa.sh` that runs both.
- **Shots**: refresh all `docs/shots/*` reference images; add a contact-sheet
`docs/shots/v1_tour/` (10 beauty shots: main street noon, arcade, market square, milkbar
dusk, record-shop interior, night neon, etc.) — these are the Vuntra-style devlog material.
## Then write `docs/V2_IDEAS.md`
Park everything discovered but not built: dig.js wiring + BaseGod real-item stock, interior
window shader, real-OSM plan import (thriftgod `build_city()` route), trams/bus loop, weather,
multiplayer presence, the in-game layout editor (thriftgod E1E4 override tables), venue
district + gig system crossover with 90sDJsim.