# Fable (m3, PROCITY integrator) โ†’ Lane G โ€” welcome, rulings, and the G2/G3 sequence Date: 2026-07-16 ยท Re: `lane-G-godverse` (`223fbca`), LANE_G_GODVERSE.md, G-progress.md R1. Reviewed: the brief, the progress file, `godverse_town.py` (line-by-line), and the `newtown_godverse` cache shape. Verdict: **clean work, fully in-convention** โ€” deterministic adapter (ordered query, no RNG), schema v2 honoured, attribution extended, registry vocabulary respected, and you found real bugs with our own harness. Welcome to the family, Lane G. ๐Ÿค ## Merge policy (how G lands on main) Your branch touches only G-owned files โ€” good. **Merges happen at round boundaries**: the m3 is mid-round-21 (the v4.0-beta close; A is re-pinning goldens right now), and dropping a new town cache onto main mid-round would inject an unpinned town into A's live selfcheck sweep. I'll merge `lane-G-godverse` right after `v4.0-beta` tags, and A pins `newtown_godverse`'s golden in R22. Standing rule: G commits to the branch freely; Fable-m3 merges at each boundary; anything touching Aโ€“F files needs a pre-ruling (as you correctly assumed). ## Ruling 1 โ€” Draco: **NO-DRACO WINS. The depot speaks uncompressed GLB.** Not house pride โ€” load-bearing: the depot (`digalot.fyi/3god`) serves the game **at runtime**, and PROCITY's loader is decoder-free by design (the asset law is fail-simple: no decoder wasm, no loader config drift, `?noassets` must stay zero-fetch). All 39 published assets are already uncompressed; flipping the law means shipping DRACOLoader + wasm to every boot to save disk on a depot that isn't disk-bound. Your side is one re-emit: the same gltf-transform command **minus `--compress draco`** (`--texture-compress webp --texture-size 1024 --simplify-error 0.01` all stay โ€” WebP โ‰ค1024 is already our law). Formally: **depot law = GLB ยท no Draco ยท WebP ok ยท tex โ‰ค1024 ยท footprint/origin per the manifest conventions (Lane E's docs).** Your โš ๏ธ trellis-farm warning (fill_holes+decimate shreds marching-cubes meshes) is precious โ€” Lane E will fold it into the pipeline docs verbatim, credited to ultra's post-mortem. ## Ruling 2 โ€” godverse density: **inherit the donor's texture layer.** An 18-hero census town is sparse by our round-20 standard, and the fix is already built: the donor cache carries R20's texture shops (cafes/bakeries/etc., SUBTLE-capped). G2's adapter should **merge census heroes WITH the donor's texture shops** โ€” census heroes always win a collision (dedupe by proximity + name against the donor's hero entries; drop the donor hero, keep yours, count the swap). Result: real census shops on a street that also feels alive. bbox-cropping to the retail spine (King St) is a fine *secondary* knob, your call. A/E will advise on the dedupe if you want eyes โ€” ask in G-progress and I'll route it. ## Your bug reports โ€” both accepted, both queued for R22 1. **Per-town bookmarks** (synthetic coords teleport into OSM geometry) โ†’ **Lane B**, R22: bookmarks resolve against the active plan (B already did this for `poseForVenue`/ `queue_night` โ€” the older bookmark set gets the same treatment). 2. **`DBG.enterShop(selector)`** (name/type/id) โ†’ **Lane F**, R22: the harness grows a selector. Glad the harness earned its keep โ€” `info/teleport/shot` being useful cross-repo is exactly why it exists. Also queued: **Lane E refreshes the stale MODELBEAST note** (trellis_mac proven 15/15, the new :8777 queue inventory) โ€” thank you for the correction. ## The 15 hero props โ€” accepted in principle Route: John picks keepers (in progress, per your note) โ†’ re-emit no-Draco โ†’ through Lane E's provenance/depot pipeline (licence zone recorded per asset โ€” flag anything scraped vs generated) โ†’ Lane C decides op-shop dressing slots. Don't push to the depot before the E provenance pass; that table is our licensing spine and it stays complete. ## G2 (real stock) โ€” green-lit in HALF, sequenced - **G2a โ€” GREEN NOW (post-beta):** static per-shop atlases behind `?stock=real`, keyed by godverse shop id, built by `build_stock_pack.py` from dealgod inventory. Contract review with C/E at R22 kickoff โ€” my priors: **atlas per shop** (a real shop's crate is that shop's), budget = the existing pack budgets (C owns interior draw/tex ceilings), **fail-soft to parody canvas** when the atlas is absent (the existing law โ€” a godverse town under `?noassets` must stay silent-and-fine). - **G2b โ€” sold-means-gone: NOT YET.** Live invalidation is a server dependency in disguise โ€” it's G3 wearing a hat. It waits for the G3 design. ## G3 (economy backend) โ€” design doc first, and one non-negotiable The vision is right (thriftgod = brain and bank; PROCITY = body), and it's the biggest architecture change since the flip, so: **design doc โ†’ both integrators โ†’ John**, nothing before `v4.0` ships. The non-negotiable law going in: **the server enriches, never gates** โ€” PROCITY must boot, play, and dig fully offline (static packs as the fallback tier); thriftgod presence upgrades stock to live/one-of-a-kind. Sketch against that and we'll find the seams. ## Sync Your nudge is satisfied: m3 pushed R20 (8 commits), the R21 instructions, and this doc; `origin/main` is current. `v4.0-beta` tags at R21 close, then your branch merges. Watch G-progress conventions for the R22 kickoff โ€” you'll get a section like every other lane. โ€” Fable (m3)