diff --git a/docs/LANES/LANE_E_NOTES.md b/docs/LANES/LANE_E_NOTES.md index 37ad1cf..981c407 100644 --- a/docs/LANES/LANE_E_NOTES.md +++ b/docs/LANES/LANE_E_NOTES.md @@ -1,5 +1,62 @@ # LANE E — cross-lane notes +## Round 28 — Spike 1: half of it shipped, half of it doesn't exist ⟨v5.1⟩ + +**1. `look.glb` — DONE, published, verified.** `Looking_Around.fbx` (675 KB, from the cached tailnet stash, +not re-downloaded — the skill's law) → `fbx_to_clip.py` → **`web/models/peds/look.glb`**: mesh-free, **65 +`mixamorig` joints, 195 tracks, inverseBindMatrices present, 136 KB** — structurally identical to the +`sit.glb` precedent on every field I can measure (`meshes/nodes/skins/joints/bind`), so D's `_canon` binds +it exactly like walk/idle/sit. Depot: published to `digalot.fyi/3god` under John's **R22 standing +authorization for Lane E assets** (`_published.json` 43 → 44). **→ D: it's ready.** + +**2. 🚩 `lean` DOES NOT EXIST — the spike's premise is half wrong, and only John can unblock it.** The +brief and the kickoff both say "two of the 34 already-cached clips (lean, look-around)" and "Spike 1 needs +nothing from anyone". **`look-around` is cached. `lean` is not — anywhere.** Measured, not assumed: +- The stash's 34 clips contain no lean (`Agreeing · Bored · Breathing_Idle · Counting · … · Looking_Around + · … · Yawn`). +- `find ~/Documents -iname "*lean*"` on ultra: **nothing** — not in `mixamo-fetch`, not in `character_kit`, + not in `3D=models`, no FBX by that name at any depth. +- The fetch tool can't help unattended: `node fetch.cjs search "lean"` → + `FATAL nothing on debug port 9222 — quit Brave and relaunch with --remote-debugging-port=9222`. It needs + **John's logged-in Brave session** (his browser, his Mixamo account) — **I won't relaunch it.** + +**→ John, one small unblocker (adds to your two):** relaunch Brave with `--remote-debugging-port=9222`, +open a Mixamo tab, and either run `node fetch.cjs search "lean"` yourself or tell me and I'll fetch + +convert it in minutes (the path is proven twice now). **I did NOT substitute a lookalike.** `Bored` is the +nearest stash clip and it's a standing weight-shift idle, not a wall-lean — D's half explicitly needs +shopfront adjacency ("`lean` against a wall wants the same care" as the scale-aware traps), so a standing +idle would quietly change what Spike 1 proves. Half a spike, honestly, beats a whole one that lies. + +**3. Instrument LOD — D killed it, and D's measurement is better than mine.** I'd built the five `_lo` +variants in scratch (14k → 3500/3500/4000/**6000**/3000) before D's commit landed saying *"E: STOP — do not +build the _lo variants."* **Nothing shipped**; scratch discarded. D measured the rooms an LOD would have to +fire in — **max diagonal 15.2 m in the largest venue, so the player can never be far enough: practical win +0 tris.** That's decisive in a way my argument wasn't. My own reading agreed on the verdict by a different +route, and it's worth recording as corroboration: **C's §4 already says "the interior gate is *draws*; tris +are the *street* budget (200k)"** — and an LOD swap doesn't change draws *at all* (same object, same +material, fewer tris). So the item's entire win landed on a metric no interior gate reads. Two independent +measurements, one verdict. **The oldest tri item is dead, correctly.** + +*(One salvage worth keeping if it ever returns: at the brief's ~3k the **guitar_amp shreds** — white gaps +punched through its silhouette, confirmed against the shipped 14k thumb as a decimation artifact and not a +source defect, the R22 `food_cart` discipline. It needs **6k** to read clean. The other four were clean at +3–4k.)* + +**4. 🚩 → A: your own file's comment now contradicts its code.** Investigating why the fingerprint read +`0x5f76e76` instead of the `0x3fa36874` I'd seen every round, I confirmed it's **legitimate** — your R27 w5 +facade fix re-pinned 51 goldens under the amended covenant. But `selfcheck.js:267` pins +`hash: 0x5f76e76` while **`selfcheck.js:301` still says "the synthetic golden above stays 0x3fa36874"**. +Code and comment disagree by 34 lines. That's the exact species as R24's validator bug (my docstring said +nested, my code read top-level) — the next reader trusts whichever they read first. Your file, your call; +flagging per the round's "flag loudly if anything disagrees". + +**5. Gates.** selfcheck **ALL GREEN 156,352/156,352** · `qa.sh --strict` **6 passed / 0 failed**. `look.glb` +moves **no golden** — proved by moving it aside and re-running: fingerprint identical either way, because an +unreferenced clip is never fetched. The `?classic=1` covenant is untouched: like `sit.glb`, a raw fetch +would breach the zero-fetch-delta rule, so **D must gate `look` behind an opt** the way `rigs.js` gates +`sit` (`loadPedFleet(base, { sit })` → the same shape for `look`). Depot-live verified by fetching the +bytes back: `https://digalot.fyi/3god/a/look.glb` → **HTTP 200, 139,640 bytes, sha1 identical to local**. + ## Round 27 — provenance v5-final, and the roster gap the docs freeze caught ⟨v5.0⟩ **1. THE BUG THE FREEZE FOUND: `redhill_godverse` was on disk but NOT in the roster — for three rounds.** @@ -750,6 +807,8 @@ loader wiring (`spawnRig`/fleet). Bench-sit loiter (Fable's stretch goal) reuses | Audio pack | 28 | 100% procedural numpy synthesis (`gen_audio.py`) | oscillator/noise render → ffmpeg OGG+M4A | 🟢 CC0-equiv, parody-safe | | Stock packs | 3 (350/311/273) | GODVERSE `dealgod` Postgres — **real** cover art | `build_stock_pack.py`: parody-transform metadata + atlas | 🟢 real-art / parody-metadata | | Ped clip **⟨v3.1⟩** | `sit.glb` (E R16; + pre-existing `walk`/`idle` from D/90sDJsim) | Adobe **Mixamo** `Sitting_Idle.fbx` | `fbx_to_clip.py` (Blender, mesh-strip) | 🟢 Mixamo royalty-free (motion only, mesh stripped) | +| Ped clip **⟨v5.1⟩** | `look.glb` (E R28 — v6 Spike 1) — mesh-free, 65 `mixamorig` joints, 195 tracks, 136 KB; structurally identical to `sit`/`walk`/`idle` | Adobe **Mixamo** `Looking_Around.fbx` (675 KB) — from the **cached tailnet stash** (`johnking@ultra:~/Documents/mixamo-fetch/out/`), not re-downloaded | `fbx_to_clip.py` (Blender, mesh-strip) — the R16 path, unchanged | 🟢 Mixamo royalty-free (motion only, mesh stripped) — same zone as walk/idle/sit | +| Ped clip **⟨v5.1⟩ NOT BUILT** | `lean.glb` — **the source does not exist** (see R28 §1) | — | — | — | | Town pack **⟨v5.0-FINAL⟩** | **21 real AU towns, all 8 states/territories** — **1196 shops** (299 heroes) + real street geometry (`roads[]`) | **OpenStreetMap** via Overpass API — bounded per-town bbox; raw shops+roads snapshots committed in `_raw/` | `build_towns.py`: fetch → dedupe/suburb-fill/parody → C's §6 class map → 3× texture cap (drops counted) → v2 cache + roads | 🟢 **ODbL 1.0** (© OSM contributors; `web/assets/towns/SOURCES.md` + `license`/`attribution` on every cache) | | Godverse towns *(Lane G's, listed for completeness)* **⟨v5.0-FINAL⟩** | `newtown_godverse` (72 shops) · **`redhill_godverse` (37)** — the town whose record shop is THE shop. Both rostered in E's `index.json` (**23 total**) | GODVERSE/thriftgod shop census + OSM road geometry; `redhill_real` is E's donor | `pipeline/godverse_town.py` (**Lane G owns this provenance**) | 🟢 ODbL 1.0 + GODVERSE census (G's own `license`/`attribution` fields) | | Real-stock atlas **⟨v5.0-FINAL⟩** | **1 crate, 120 items**, 2×2048² webp — Monster Robot Party (`3962749`) | **the real POS** (`recordgod`) — crate 550 "DEEP HOUSE"; covers are **the shop's own product shots**, cached by dealgod | `pipeline/godverse_stock.py` (**Lane G owns**) — `snapshot`(DB-side, sha256-pinned) → `pack`(pure) | 🟡 **in-house-green — FLAG BEFORE ANY PUBLIC/COMMERCIAL RELEASE** · `sourcing:"real"` · ids `sku_` | diff --git a/pipeline/_published.json b/pipeline/_published.json index 6efc36f..fd13935 100644 --- a/pipeline/_published.json +++ b/pipeline/_published.json @@ -1,4 +1,5 @@ [ + "look.glb", "procity_fit_arcade_cabinet_01.glb", "procity_fit_bass_guitar_01.glb", "procity_fit_bass_guitar_01_hi.glb", diff --git a/web/models/peds/look.glb b/web/models/peds/look.glb new file mode 100644 index 0000000..bb2df1b Binary files /dev/null and b/web/models/peds/look.glb differ