# G-progress — GODVERSE lane (runs on ultra) *Lane brief: `docs/LANES/LANE_G_GODVERSE.md`. This file follows your progress-file convention — newest round first. Fable-on-ultra writing.* ## Round 1 (2026-07-16, ultra) — the marriage's first artifact **Landed:** - `pipeline/godverse_town.py` — thriftgod PG census + donor OSM cache → `_godverse.json` (schema v2, `source: "godverse+osm"`). Deterministic, stdlib+psycopg2, runs where the DB lives (ultra). Type map thriftgod→registry: music→record, charity/second_hand/antiques→opshop, books→book, toys/games→toy, video_games→video, pawnbroker→pawn, market→dept. - `web/assets/towns/newtown_godverse.json` — **18 REAL Newtown shops** (Sydney; DealGod census) on your real 1,086-road graph (roads donated from `newtown_real`, attribution extended). - Verified on ultra: boots via `?plansrc=osm&town=newtown_godverse&seed=20261990` — splash and HUD show Newtown, selector shows "Newtown Godverse · OSM fixture", streets render, 25 chunks / ~78 draws. Real shop names should render on facades exactly as your fictional ones do (data-driven) — **not yet eyeball-confirmed on a specific facade** (see bookmark ask below). **Found while verifying (asks, no files touched):** 1. **Per-town bookmarks:** `DBG.teleport('shopfront_detail')` on an OSM town lands inside geometry (synthetic-town coords). Suggest bookmarks resolve against the active plan. 2. **`DBG.enterShop(selector)`** — took neither a type nor a shop name from the cache; a name/type/id selector would make cross-repo QA one-liners. (Your harness is excellent — `info/teleport/shot` made this round's verification trivial.) 3. **Sync:** gitea `origin/main` is at `06fe648` (R20 kickoff); the m3 clone holds R20 lane commits beyond that (up to `94e56ed`). Push when the round closes so ultra tracks you. **Context from the ultra side (useful to A–F):** - **MODELBEAST grew:** `trellis_mac` (local TRELLIS.2 image→3D, ~$0, proven 15/15 on thriftgod's Tier-1 props), `sf3d`, `bg_remove_local`, `mflux_image_edit`, `seedvr2_upscale` all live on the m3's own queue (:8777). Lane E's "HF-gated, setup needed" note is stale — weights are unlocked. - ⚠️ **Do NOT run trellis_mac output through the MESHGOD finish farm** — its fill_holes+decimate shreds 200k-tri marching-cubes meshes (proven on ultra, post-mortem in dealgod memory). The working pipeline: raw GLB → `npx @gltf-transform/cli optimize --compress draco --texture-compress webp --texture-size 1024 --simplify-error 0.01` → 0.4–1.8 MB at raw-quality look. - **Which collides with your no-Draco law** → the ruling ask in the lane brief. If no-Draco wins, same command minus `--compress draco` (files ~2-3× bigger, still fine); if Draco wins, three.js needs the DRACOLoader wire your vendored addons already include. Either is one re-emit; the depot should hold ONE law. - **15 thriftgod hero props** sit in `OPSHOPGAME/tools/props_out/game/` on ultra (record-crate, rummage-tub, teapot, crt-tv, suitcase, mannequin-bust…) — op-shop interior dressing your Lane C might want; John is picking keepers for the 3GOD depot now. **Next round (G2, proposed):** real-stock atlases — dealgod inventory → `build_stock_pack.py` per-shop record/book atlases keyed by the godverse shop id, behind `?stock=real`. Contract I'd like C/E's eyes on: atlas file per shop vs per town; budget per interior; cache invalidation when stock sells (thriftgod items are one-of-a-kind — sold means GONE, which is the whole GODVERSE magic: the crate you riffle is a real crate in a real shop).