B's diagnosis nailed it: 149,161 of 163,015 tris (91.5%) at katoomba venue_night were four of my GLB
street props. Buildings 348, posters 222 (A's cap worked, never the lever), pools 0. B's sharpest point:
it is NOT the density widening -- road density drives the bench/bin/shelter cadence (~100 props on a
966-edge real graph).
Fix (collapse-decimate via the R13 instrument tool; originals kept as _hi):
bench 1942 -> 500 rendered 60,202 -> 15,500
bus_shelter 7998 -> 2500 rendered 55,986 -> 17,500
bin 3000 -> 800 rendered 18,000 -> 4,800
food_cart 4991 -> 1000 rendered 14,973 -> 3,000
furniture total 149,161 -> 40,800 (-108,361)
Projected view ~54.7k (B's 163,015 baseline) / ~113.6k (vs F's 221,935) -- PASSES the 200k gate either
way with 86-145k spare. F: these are projections off B's per-instance attribution; yours is the real
measure. -> F: RE-MEASURE.
Eyeballed every prop; two needed re-cutting: bus_shelter @1000 shredded (thin roof plate on a
voxel-remeshed shell) -> @2500 clean; bin @400 creased -> @800 clean. food_cart's black base slab is in
the SOURCE model (confirmed against the pre-diet thumb from git), not a decimation artifact.
Zero blast radius: dims/footprints/heights identical -> manifest.json byte-identical -> B's placement and
A's goldens untouched. Published 4 diet + 4 _hi archives to the depot (John re-authorized explicitly;
GLBs are git-ignored so the depot IS the archive).
-> Lane B (your 2nd note, cause found, NOT fixed by design): the MeshPhysicalMaterial on bench+food_cart
is KHR_materials_specular in the glTF, and it survives a Blender re-export. Fix = neutralise specular
pre-export. Deliberately deferred to v4.x: the gate is tris (cleared), and changing shipped shading in
a release round without a visual re-verify is risk for no gate benefit. Same list: food_cart is 3.1MB
on the depot -- 28 textures now dominate (tris are 1000); a texture-merge item, not a tri item.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
John OK'd direct publish. Pushed the 5 base instruments (14k) + 5 _hi hi-poly originals
via the passwordless tailnet ingress (this box is allowlisted). Public digalot.fyi now
serves the 14k bytes (amp 5.9MB->1.3MB) + the _hi originals; -70% decimation win is live
in production. _published.json 33->38; validate_manifest --depot GREEN. Gate-3 flag cleared.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- publish.py: _published.json now MERGE (read existing → union → sorted write), never
replace — fixes the R5 --only clobber (27→1). Proven: a real no-op re-publish kept it
at 27. Added --verify + post-publish drift-check vs the live depot (/api/list procity_*).
- validate_manifest.py: new provenance-drift gate — every manifest procity_* GLB must be
in _published.json or QA fails. Proven: simulated clobber (→1) exits 1 w/ per-file errors.
- Record verified: 27-entry _published.json is byte-exact vs the live depot.
- qa.sh --strict GREEN (5 gates incl. F1 harness).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Depot publish executed over the new passwordless tailnet path (allowlist auth,
GOD3_DEPOT=http://100.94.195.115:8788). Two contract bugs fixed en route:
- publish.py: /api/thumb wants JPEG keyed by the GLB name (was posting PNG keyed
by a .png name -> 404 that mislabelled successful GLB uploads as ERR); thumb
push now isolated per the MESHGOD house contract (cosmetic, never fails publish).
- validate_manifest.py: send a custom User-Agent (Cloudflare 403s Python-urllib
on the public path) + honor GOD3_DEPOT override like publish.py.
validate_manifest.py --depot -> 0 errors, 0 warnings. qa.sh --strict all green.
_published.json records the 16 published assets.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>