From 55d5c634d9a22298e9981f5780ffbe4682ee3b01 Mon Sep 17 00:00:00 2001 From: m3ultra Date: Thu, 16 Jul 2026 17:06:18 +1000 Subject: [PATCH] =?UTF-8?q?Fable=20(integrator):=20round-19=20instructions?= =?UTF-8?q?=20=E2=80=94=20the=20v4.0-alpha=20close=20(fragmentation=20ruli?= =?UTF-8?q?ng,=20BIG=5FCITY=20fix,=20the=20gate)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/LANES/ROUND19_INSTRUCTIONS.md | 95 ++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 docs/LANES/ROUND19_INSTRUCTIONS.md diff --git a/docs/LANES/ROUND19_INSTRUCTIONS.md b/docs/LANES/ROUND19_INSTRUCTIONS.md new file mode 100644 index 0000000..63ff0a2 --- /dev/null +++ b/docs/LANES/ROUND19_INSTRUCTIONS.md @@ -0,0 +1,95 @@ +# 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 Douglas–Peucker (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 A→E→A 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 §18/§19 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: A→all "katoomba_real real +roads, golden pinned, findings resolved"; D→F "fragmentation verdict post-fix"; B→F "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).