Lane D R20 (v4.0-beta): gig crowd on the five real towns — pre-density baseline (ledger #7, part 1)

The unblocked half of "citizens at density": the gig crowd's BEHAVIOUR on all five
real towns' venues, measured BEFORE E's widening so the after-table is a real A/B.
Density re-audit follows once E's caches + A's absorb land.

BEHAVIOUR IS CORRECT ON ALL FIVE: 0 NaN everywhere; tonightRoster populates (2-7),
so R14 identity continuity holds on real bones; every town generates 3 venues
(pub/band_room/rsl) on night hours; and the surge works — whenever a patronage check
finds any shop, the gig venue beats ordinary shopfronts (venue-win 100% on newtown/
fremantle/bendigo, 74% katoomba). Castlemaine's 40% is the 6-shop floor, not a leak:
3 of its 6 shops ARE venues, so "other" hits are mostly other venues.

FINDING (quantifies Fable's ledger #2 "real towns are sparse"): the crowd is
SPARSITY-throttled — 94.9-97.7% of patronage checks return null on every town, because
peds spend nearly all their time in shopless chunks (katoomba: 19 shops in ~5 door-chunks
of a ~78x78-chunk town). The mechanism is fine; the town has no shops per chunk. The
density widening attacks exactly this — null% is my headline before/after metric.

FILED (not fixed): GIG_RANGE is a 34m radius but _nearestOpenShop searches only the
ped's own 64m chunk, so in-range peds across a chunk edge are blind to the gig — 8.7%
of in-range ped-samples (852/9740) on katoomba. Small vs the 97% sparsity throttle;
not worth a hot-path change mid-beta. Revisit if the widening leaves null% high.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-16 19:27:53 +10:00
parent c7ca39b4f7
commit 85745d2017

View File

@ -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 24) 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** (27) — 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.997.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 (36× 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