PROCITY/docs/LANES/ROUND19_INSTRUCTIONS.md
2026-07-16 17:06:18 +10:00

96 lines
7.1 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.

# PROCITY — Round 19 lane instructions (from Fable, integrator)
Date: 2026-07-16 · **R18 verdict: the alpha did exactly what the charter asked — it surfaced the
failure list. NOT yet tagged, and correctly so.** A shipped schema v2 + the graph lift (proven on
synthetic irregular geometry) but the A→E→A finalization never fired — E's katoomba roads landed
after A's commits, so the real-roads golden is unpinned and the lift is unhardened against real
data. B/C/D audited against E's landed data anyway (right call) and the audits are excellent:
**B** — the streetscape is road-agnostic, real Katoomba boots 0-error and reads well, but the
`BIG_CITY` heuristic misfires (20 shops < 120 small-town streaming on a 799-edge/5 km graph
**280k tris, breaching the 200k gate**; proven one-line fix). **D** the sim needs zero changes
(1M+ samples, 0 NaN, byte-identical rerun), but the real graph is **105 disconnected components**
(42% of street-metres on islands, 2 shops stranded, ~10% of near-crowd wandering fragments), with
the DP-collinear junction-drop independently confirmed by B and D as a contributing mechanism.
**C** 20/20 real doors build valid interiors. **E** 484 real streets in schema v2 + the other
four towns as data, plus a poster-clearance finding filed for A. F never ran its gate would have
failed on the budget breach + unpinned golden, so nothing was mis-skipped. This is the alpha
working as designed: surface, measure, file.
Round 19 is **the ALPHA CLOSE** A resolves the filed findings and finalizes, F applies the
budget fix and gates, D re-measures, and the tag lands. Tag **`v4.0-alpha`** at close.
## The ledger
1. **A — the finalization (the round's spine; everything hangs off you).**
a. **The fragmentation ruling (D's finding — Fable rules, you own the details):** the town is
the **main component plus joined near-fragments; far shopless islands are CULLED.**
Concretely: (i) protect junction/shared-snap points from DouglasPeucker (the collinear
junction-drop B and D both hit simplify *between* junctions, never through them);
(ii) join fragments within a snap/mid-edge-split tolerance (D measured 9 islands <10 m,
20 <30 m pick the tolerance and defend it); (iii) cull remaining islands **unless they
hold a shop** a stranded shop is always either connected (nearest-edge connector) or
explicitly dropped with a count in `norm.dropped`. Rationale: bbox-clipped periphery is
noise, and 42% dead street-metres waste streaming budget (it's half of B's tris problem).
b. **E's poster-clearance finding** (LANE_E_NOTES §18) resolve it in the same hardening pass.
c. **Harden against real katoomba** (the deferred AEA leg), verify the R18 failure-list
items you predicted (overflow drop did Katoomba keep all 20 shops? crossing-without-
shared-node did any survive into the graph?), **pin `katoomba_real`'s real-roads golden**,
and fire the handshake.
d. **Sweep + pin the other four towns** (E's data is already in) beta pull-forward that
costs you one loop now and saves a round later. Any town whose real data breaks the lift:
file it, fence it, don't force it katoomba alone gates the tag.
2. **F — B's `BIG_CITY` fix + the alpha gate (last).**
a. The one-liner is yours (`index.html`): extend the heuristic to the graph
`plan.shops.length > 120 || (plan.streets?.edges?.length || 0) > 200` (B proved the effect:
280k 104k tris at the venue block, 72 draws). Land it early so D/B re-measures see it.
b. The gate, after A: town-matrix roads dimension (katoomba_real real-roads:
boot/determinism/budget/district/noassets-fallback), classic + default-boot gates untouched,
budgets on the busiest real block post-fix.
c. **The money shot:** an uncommitted `docs/shots/v4_alpha/katoomba_mainstreet.png` is sitting
in the tree (almost certainly B's audit evidence verify provenance in B's notes). Reshoot
deterministically via the tour harness for the official shot, commit both or supersede.
d. Docs (README "real towns" paragraph, LANE_F_NOTES §1819 honest record incl. why F
correctly didn't run in R18), tag **`v4.0-alpha`**, push (standing authorization).
3. **D — re-measure after A's connectivity pass.** The same audit table, post-fix: component
count, % street-metres in the main net, stranded shops (must be 0 or explicitly dropped),
% near-crowd on fragments (should collapse toward 0). One table, one verdict line. Your R18
crafted-irregular-town scaffold makes this cheap that's why you built it.
4. **B — the town selector (beta pull-forward, NON-blocking for the tag).** A small in-game
town picker (HUD/debug-menu grade, not a title screen): synthetic + fixtures + real towns
(`osmTownKeys()` + registered caches), selecting navigates to the right URL params. Your
HUD/dbg territory; document any shell seam for F rather than editing `index.html` (F owns it).
If A's pass or F's gate needs your re-measure (tris post-cull, strips at tight corners
A's failure-item #3 asked you to audit corner strips with a measurement), that comes first.
5. **C — on-call.** Your alpha work is done (20/20). If A's connectivity pass moves lots, a
one-loop re-run of the katoomba door soak confirms nothing regressed.
6. **E — on-call.** Re-emit caches only if A's junction handling needs different data (e.g.
pre-DP full geometry is already shipped likely nothing). Your data discipline this epoch
has been faultless; nothing else asked.
## Laws
Charter laws (V4_REAL_MAP.md) unchanged. This round's golden rules: `katoomba_real`'s golden is
UNPINNED until A pins it (so A's connectivity work is free to iterate pin once, at the end);
the four other towns' goldens pin with A's sweep; synthetic/fixtures/classic/default remain
frozen the alpha changed nothing outside the cache-schema path, and the gate proves it.
## Order
**F's one-liner first** (independent, unblocks honest re-measures) and **A's finalization in
parallel** (the long pole). Then **D re-measures**, **C spot-confirms**, **B's selector** rides
alongside. **F gates last** once A pins and D confirms. Handshakes: Aall "katoomba_real real
roads, golden pinned, findings resolved"; DF "fragmentation verdict post-fix"; BF "selector
seam" (if any).
## Standing
- **John nothing blocks this round.** FYI: Fable ruled on the fragmentation (main component +
joins, cull shopless islands) it's a town-quality call; overrule if you'd rather keep the
full clipped periphery. The tag lands as `v4.0-alpha` at close.
- **v4.0-beta preview (next round, do not start):** all five towns proven end-to-end on real
roads (A's pins land this round beta becomes verification + polish) · the town selector
wired + polished · tram ruling on real graphs (route-by-shop-adjacency vs fence) · D's
spawn-bias mitigation if any fragmentation survives A's pass.
- **Backlog:** unchanged (instrument LOD · tram tri diet · audioEmitter · flag retirement ·
awning ripple · editor · multiplayer).