Owner decision: adopt the two findings from the Mapbox cross-check.
- LEVEL_HEIGHT 3.2 -> 3.1 m in block_height_report.py and the Blosm
--level-height default; every levels-derived building drops ~0.6 m per 6
levels, matching Mapbox.
- HEIGHT_OVERRIDES for the three rear building=yes/apartments structures that
Mapbox gives as single storey (3.0 m) where our 2-level fallback rendered
6.4 m blocks.
- classify_height() takes an optional way_id so overrides apply; the Mapbox
cross-check passes it and now reports 66 match / 6 non-building / 0 disagree.
- Geometry follows: blockout regenerated at 3.1 (frontage object names
preserved, 6/6 exported), frontage re-imported, DemoMap rebuilt, packaged
-qaselftest PASS (walk, reset, pause, transect 0 holes, wall probe 0/35).
- Docs: Art/blender/README scale table + a note that Blosm adds ~1.9 m roof mass
above levels x levelHeight; TODO item closed; MEMORY records the gotcha that
blockout regeneration must re-verify the element.* frontage mapping.
Geo/tools/ is now every geographic script, with Geo/README.md documenting each
one; the Blender-side builders moved beside their outputs in Art/blender/*/ and
import their helpers from Geo/tools/osm_common.py.
That module gains to_unreal_local() and to_blender_local(): the only place in the
repository that multiplies metres by 100, so a second silent scale cannot be
introduced. block_height_report.py adds height provenance for the block — 3 of
15 buildings have no height data and render at a placeholder 6.4 m.
asset_metadata.py writes and audits <asset>.geo.json sidecars; four now exist
(hero-facade, terrain, street, blockout) and the audit recomputes each centre from
the origin, failing anything that disagrees.