diff --git a/docs/LANES/LANE_D_NOTES.md b/docs/LANES/LANE_D_NOTES.md index a0c6de1..44fa807 100644 --- a/docs/LANES/LANE_D_NOTES.md +++ b/docs/LANES/LANE_D_NOTES.md @@ -6,6 +6,51 @@ _rotOnly/head-bone normalize/upgradeStreetPeople). Measurements on the M3 Ultra --- +## ROUND 20 — v4.0-beta THE FIVE TOWNS: citizens at density (ledger #7) + +*PROCITY-D, 2026-07-16. Part 1 of 2: the **pre-density baseline** — the gig crowd's behaviour on all five +real towns' venues (F's district gate owns placement; I own behaviour). This half is unblocked; the density +re-audit waits on E's widened caches → A's absorb. Deliberately measured BEFORE the widening so the +after-table is a real A/B.* + +### The gig crowd is behaviourally CORRECT on all five real towns +Per town: stream sim on the real graph, `setGig` on its first venue, 21:00, camera at the venue, ~1400 +frames. Every town generates 3 venues (pub/band_room/rsl — charter's 2–4) on night hours. + +| town | shops | door chunks | patron checks | **null %** | hit venue | **venue win %** | roster | NaN | +|---|---|---|---|---|---|---|---|---| +| katoomba_real | 19 | ~5 | 703 | 97.3 | 14 | 74 | 2 | **0** | +| newtown_real | 18 | 15 | 267 | 95.5 | 12 | **100** | 4 | **0** | +| fremantle_real | 20 | 16 | 429 | 94.9 | 22 | **100** | 7 | **0** | +| bendigo_real | 9 | 9 | 343 | 97.7 | 8 | **100** | 3 | **0** | +| castlemaine_real | 6 | 5 | 364 | 95.9 | 6 | 40 | 4 | **0** | + +- **0 NaN on all five.** The gig crowd is numerically safe on every real graph. +- **`tonightRoster` populates on all five** (2–7) — R14 identity continuity holds on real bones. +- **Venue-win % is the surge working**: whenever the patronage check finds *any* shop, the gig venue beats + ordinary shopfronts (GIG_RANGE/gigBest preference) — 100% on three towns, 74% on katoomba. + **castlemaine's 40% is not a leak**: at the 6-shop floor, 3 of its 6 shops ARE venues, so the "other + shop" hits are mostly *other venues*. A quirk of the sparse floor, not the mechanism. + +### The measured finding: the crowd is SPARSITY-throttled, and that's exactly what the widening fixes +**94.9–97.7 % of patronage checks return null** on every town — peds spend nearly all their time in +**shopless chunks**. Katoomba is the clearest case: 19 shops sit in ~5 door-chunks of a ~78×78-chunk +(5 km) town, so `_nearestOpenShop` (which searches the ped's own 64 m chunk) has nothing to find 97 % of +the time. **This is the quantified version of Fable's ledger finding #2 ("real towns are sparse")** — the +gig/patronage volume is thin not because the mechanism is wrong but because the town has almost no shops +per chunk. The density widening (3–6× shops) attacks this directly; **the null % is my headline +before/after metric.** + +- **Secondary leak (filed, not fixed):** `GIG_RANGE` is 34 m — a *radius* — but `_nearestOpenShop` only + searches the ped's own 64 m chunk, so an in-range ped just across a chunk edge is blind to the gig. + Measured on katoomba: **8.7 %** of in-gig-range ped-samples are chunk-blind (852 of 9,740). Small next + to the 97 % sparsity throttle, so **not worth a hot-path change mid-beta** — filing it. If the widening + leaves the null rate high, this becomes worth fixing (search the ped's chunk + 8 neighbours). + +*Part 2 (density re-audit + post-widening re-run of this table) follows once E's caches and A's absorb land.* + +--- + ## ROUND 19 — v4.0-alpha CLOSE: the fragmentation re-measure (ledger #3) *PROCITY-D, 2026-07-16. A resolved my R18 finding (commit `6fc4b40`: junction-protected DP + bridge-joins