AGENTS.md now states that planned work is checkbox items in ROADMAP.md marked
open, in progress, or done, and that discoveries, gotchas, notes, and bugs go to
MEMORY.md for coordination between collaborators. MEMORY.md is seeded with what
this build-up actually cost: the Unreal read-only-home crash, Blender/Blosm
headless workarounds and the spherical projection, the tiled-TIFF DEM trap, the
reference licensing and throttling rules, and the LFS silent-blob trap.
Also stages the concurrently created Unreal project files, and stops per-project
Build/ output (FileOpenOrder logs) from entering the repository.
Extraction finished clean (73 GB). The editor crashed twice with signal 11, but
the log named the real cause: the agent shell's home is read-only, so the editor
could not create ~/.config/Epic and died in pre-init. With HOME redirected it
reaches 'Engine is initialized' under -NullRHI, proving the install and bundled
libraries are sound on Bazzite.
The Vulkan RHI is still unproven: the successful run used -NullRHI. A desktop
terminal run is the remaining step, recorded in Docs/environment.md, ROADMAP and
the toolchain pin.
Status-at-a-glance table, plus refresh of the items that moved since the last
pass: engine 5.8.4 verified and extracting, tooling pins done except the stale
QGIS lts and the Unreal pin, blockout re-framed, reference set at 72 images with
the entrance conflict resolved, site assembly present.
common_fetch was out of material, so an OpenRouter web-search call (gpt-5.2,
openrouter:web_search) returned candidate photo pages and page_image_fetch.py
resolved each og:image and downloaded it, recording page URL and hash locally.
Four frames kept, including the clearest entrance view yet.
The frames overturn the inherited 'eight stone steps, 12 m wide': the entrance
is three portals with individual short flights. Recorded as a resolved conflict
with the photographs as evidence.
A text search had stopped surfacing new material, so commons_fetch.py gained
--category. Category:Hollywood Masonic Temple and Category:El Capitan Theater
yielded 32 more frames locally, including 4-5k px frontal façades, a 2019
street-level shot of both buildings together, the 1922 postcard, and the first
oblique evidence for the 6806-6822 retail run. 68 local images total, none
committed. A clean sidewalk-level frame of the hero entry is still absent.
Five usable sets added locally (hero daytime façades, the El Capitan Theatre
block, night premiere staging, Ovation Hollywood, and the Lee Drug neighbour) —
41 images total, none committed. Records what remains missing: a sidewalk-level
frame of the hero entry, the 6806-6822 retail run, and a night frame of 6840
itself rather than its neighbour.
commons_fetch.py now survives a throttled download instead of discarding the
rest of the batch, and takes --delay.
94 MIT-licensed skill packs plus their shared references, copied unedited from
the local checkout of github.com/arjun988/blender-skills at commit 8f778d2
(1.2 MB, 269 Markdown files). They are agent instructions, not add-ons; the
pipeline still drives Blender headlessly through bpy, so the optional Blender MCP
server is not required. Provenance recorded in THIRD_PARTY_NOTICES.md and the
version, source, and update procedure in Docs/toolchain.md.
site-2026-11-06.blend gathers terrain, street and blockout into categorised
collections: 281 objects, ~58k triangles. A downward raycast on a 1 m grid along
both sidewalks and the designated crossing finds no holes, so nothing drops the
player on either side. Two steps are flagged: 15.8 cm at the sidewalk's outer
terrain seam and 10-13 cm ramps at the crossing flush transitions, steeper than
a real 8% ramp.
Sampling is projected through PROJ: placing points with the OSM spherical
approximation put them metres off the UTM meshes and reported 91 phantom holes.
Tools/street_mesh.py builds the corridor in the project frame from the measured
profile: carriageway -10.5..+10.5 m, kerbs 0.15 m (0.13 m as built), sidewalks
4.0 m south and 5.3 m north, all elevations sampled from the DEM. Kerbs flush at
the three signalised crossings. Crown at mid-block reproduces the cross-sections
to the centimetre.
Tools/terrain_from_dem.py builds a 191x106 grid at 2 m over the block, Z being
NAVD88 minus the origin ground. Building footprints from the OSM extract are cut
out so rooftops never become terrain (72 footprints, 6310 cells). Spot checks
reproduce the measured profile: origin 0.00, Orange Dr +3.39, south gutter
+0.93, crown +1.38, north sidewalk +1.43.
Blosm projects with a sphere, not an ellipsoid, so its frame was ~0.4% oversized
and rotated by meridian convergence: about 2 m at the theatre. The blockout now
fits a six-parameter affine into EPSG:26911 on five control points (0.0 cm
residual) and transforms root objects only, since children inherit and double
transforming them read as a 2 m placement error.
Tools/blosm_blockout.py imports the committed extract in 3Dsimple mode and
reports per-building dimensions so a units failure is visible in the log. The
result (87 meshes) is committed as the blockout baseline: hero 25.68 x 54.88 x
14.50 m against 25.75 x 54.88 m of OSM geometry, so the import is 1:1 metres.
Two headless defects needed working around: the asset-directory check that
fires before mode is honoured, and an empty default-level table sending the
add-on down a broken relative import. Member fetching stays off so the import
does not depend on Overpass.
The OSM north edge measures 25.74 m, the sibling notes' own column spacing
(5 bays x 4.96 m + one column) gives 25.70 m, and the photo framing agrees.
The 29.6 m figure has no derivation and is dropped rather than averaged. The
neighbour outlines overlap by 0.1-0.3 m, so they are traced shared walls, not
approximate bubbles.
Gutters sit at -10 m south and +10..12 m north, a ~2% crown between them, and
the envelope runs 0.6-1.0 m per section. Gutter spacing independently confirms
the 20.9 m carriageway measured from the crossing. The sharpest breaks are
0.09-0.12 m/m, so 3DEP does not resolve a kerb upstand: kerb height stays a
recorded assumption rather than a derived value.
550x350 m clipped to the block, already in the project CRS, 984 KB, committed
through LFS. Verified against the service's own point query and the earlier
probe: 115.911/119.422/117.593 m, agreement within 6 cm.
Adds Geo/scripts/dem_stats.py, a stdlib tiled-TIFF reader, because GDAL cannot
run on the host and the exported raster is tiled rather than strip-organised.
QGIS stable is 4.2.3 on the current KDE runtime; the stale 3.28.9 lts install
stays flagged for removal. PROJ 9.9.0 from that flatpak turns the recorded
origin into E 376515.389 / N 3774224.083 (NAD83 UTM 11N), with six control
points whose projected spans reproduce the OSM footprint measurements. Engine
decision recorded: 5.8.4 is downloading, 5.2.0 stays only as a fallback.
The archive on disk is Unreal Engine 5.2.0 (CL 25360045, payload dated
2023-05-06), 19.59 GiB, ZIP central directory present and unzip -tq clean.
That contradicts the planned 5.8.x pin, so the decision, its costs, and the
extraction plan are written into Docs/setup.md rather than silently pinned.
Probe 22 points with the USGS 3DEP point service: walkable surfaces span
115.65-119.59 m, a 3.94 m relief, so elevation data is required by the AGENTS
rule. Grade falls ~3.3 m eastward over the 279 m block (1.2%) and the north
sidewalk sits 0.4-0.7 m above the south. 3DEP 1 m is public domain and becomes
the chosen source; the tile itself is still to be downloaded.
Factored the shared OSM helpers into Geo/scripts/osm_common.py so the street
profile and the elevation probe read the same geometry.
New Geo/scripts/street_profile.py measures the 279.4 m block centreline, the
three signalised crossings (20.9-25.9 m across), sidewalk centrelines at 12.6 m
and 13.6 m, and per-building setbacks of 13.0-15.8 m. Derived sidewalk widths
of ~4.0 m south and ~5.3 m north cross-check against the mapped centrelines.
Geo/manifests/local-origin.md fixes EPSG:26911 and the Highland intersection
node as origin, defines the axes and the x100 metre-to-centimetre rule, and
leaves the projected pair blank because PROJ is not installed here.
Records the lane-count discrepancy (4 tagged lanes over a 20.9 m carriageway).
Reference images are development-only material: licensing is not a gate for
local private use, so they are simply never committed. Art/reference/ is now
gitignored; the licensed status of anything shipped is still recorded in
THIRD_PARTY_NOTICES.md.
Adds Tools/commons_fetch.py, which fetches Wikimedia Commons imagery by search
or exact title and writes a provenance sidecar, plus Docs/reference-notes-hollywood.md
recording what each local set is evidence for.
ROADMAP gains an explicit item for licensed photography of the TCL Chinese
Theatre (way 424105908) and Madame Tussaud's (way 424105889). The inventory
records which sibling tools exist, that refcollect.py is unlicensed-tmp-only and
cannot feed committed references, and that the OpenRouter key stays outside this
repository.
Inventory the sibling security-game project and copy only the evidence: nine
licensed photos with their sidecar provenance into Art/reference/hollywood/,
now LFS-tracked. Add the block-wide OSM extract with a manifest, resolve the
demo bounds (Orange Dr -118.341434 .. Highland Ave -118.338718, 279 m) and the
south/north building sets, and add Geo/scripts/block_report.py to reproduce it.
The sibling docs place the El Capitan Theatre west of 6840; OSM geometry and
the house numbering put it east. Recorded with the two unresolved measurement
conflicts rather than averaged.
Nominatim plus the OSM API confirm 6840 Hollywood Blvd as way 424024147
(Hollywood Masonic Temple, Q3139424), footprint ~1387 m2. The neighbouring
El Capitan Theatre is a separate way with a different amenity and size, so the
two stay distinct structures. Raw responses are checksummed in Geo/raw/.
git-lfs 3.7.1 with an active lfs filter, clang 23.1.4, cmake 4.3.0, ninja
1.13.2. The flathub lts branch installed QGIS 3.28.9 on an EOL Qt5 runtime, so
it is recorded as an invalid pin with the replacement path.
vulkaninfo names GPU0 as the discrete RTX 5070 Ti (NVIDIA 615.78.08, API
1.4.351), with the RADV iGPU as GPU1 and llvmpipe as GPU2. Note the device
selection risk for the engine and mark the ROADMAP environment item done.
Deployment 45.20261105 booted (kernel 7.2.15-ogc1.1.fc45). Operator nvidia-smi
confirms the RTX 5070 Ti renders the Wayland session on driver 615.78.08;
vulkaninfo loads instance 1.4.350 but the physical-device line was not captured.
Tooling gaps after the update are listed as current state.
The lfs filter is inactive until 'git lfs install' writes filter.lfs.*, and a
matched file is then stored as a plain blob without any warning. Document that
instead of the wrong claim that git add fails, and add a guard script.
Create Game/, Art/, Geo/, Tools/, Docs/ with LFS and ignore rules, record the
workstation audit, toolchain pins, setup checklist, release checks, and
licensing policy. ROADMAP 0.1.0 environment tasks marked to match verified state.