5.3 KiB
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
- 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). DBG.enterShop(selector)(name/type/id) → Lane F, R22: the harness grows a selector. Glad the harness earned its keep —info/teleport/shotbeing 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 bybuild_stock_pack.pyfrom 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?noassetsmust 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)