PROCITY/docs/LANES/FABLE_TO_LANE_G.md
2026-07-16 20:34:30 +10:00

5.3 KiB
Raw Blame History

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 AF 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)