wip(assembler): M1 round 4 -- cap rebuilt (no hiding), sub-voxel audit, routes + mesh-free queries

Luna, M1 round 4 (resumed after the night stop):
- Cliff: sub-voxel audit (29,929 half-voxel XY columns, min run 3.75 voxels, 0 subvoxel runs;
  old taper control exposes 20,963) and a root-line shelf at the two-voxel minimum.
- Horizon slab = aliased LOD8 cap ceiling. The first fix hid the ceiling at LOD8 (challenged:
  enclosed, interior-lit strates); now the LOD8 cap is rebuilt deterministically from the
  native heightfield, skirts preserved; looking up and out shows the cap present.
- Routes: review manifest with 33 stable-ID route points + capsule/support constraints; capsule
  sweep 0 blocked samples / 0 unsupported centres, negative control detected.
- Server path: World::densityAt answers without render meshes. Physics cooking not available
  standalone.
- Hashes (evaluator + 2,226-tile stream) identical at W1/W8/W16. LOD8: 4.446 s for 529 tiles,
  14.25 M field calls, 165 unknown tiles.
- Captures at 60 fps cap + vsync (owner's GPU coil whine). One cliff probe crossed the ~8 GB
  guard (7.69 GiB) and was stopped before capturing.
My review: cap view matches legacy closely, no slab; native cliff is a clean attached ledge
(cleaner than legacy); a few small spikes on the ridge top.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-09 14:23:38 +02:00
1 parent 20c6d86f0e
commit 2d0cec90e4
164 files changed
+7503 -31

No files matched your search

+117 -10
View File
@@ -392,21 +392,128 @@ trail. The JPEGs are the inspection copies; raw back buffers remain under `captu
BuildHost-compatible viewer was built. No new source files were added, and no commit, push or
stash was made.
## Round 4 results — cap geometry, route and query readiness
### Far cap and horizon
The LOD8 horizon slab came from the 3D marching-cubes surface being sampled at 256-voxel steps;
the broad triangles aliased the cap and hung below its native height. The LOD8 ceiling classifier
also used the legacy owner height query while the mesh used the native `Heightfield2D` plan. I
replaced the LOD8 ceiling geometry from that same native plan on a deterministic 128-voxel XY
grid. The generated cap is clipped to `cap >= ground` and the tile's Z interval. It replaces the
old unmasked ceiling triangles and preserves masked skirt triangles, so this repair rebuilds the
ceiling instead of omitting it. The cap normals face down into the enclosed strate.
The up-and-out pair was captured from the surface at `(0, -35, -487.943)`, yaw `0°`, pitch `25°`.
It shows a continuous far-cap silhouette in both owner and native views. This checks the visible
ceiling geometry in the standalone viewer; Unreal's interior lighting and light-leak behavior still
need owner validation. The surface pair was captured at the same position with pitch `-22°`.
In the 2,226-tile run, 153 LOD8 tiles received cap refinement on a 128-voxel grid, covering
626,308 cells and generating 1,252,688 triangles. The LOD8 tile extent is 8,192 voxels (2,048 m);
cap tile keys span x `-7..5`, y `-6..6`, z `-1`. The 529-tile cliff-site cost run refined 165 tiles
and generated 1,351,118 cap triangles.
| View | Owner reference | Native Core |
|---|---|---|
| Surface | [surface-owner.jpg](Research/WorldAssemblerM1/round4/final/captures/thumbs/surface-owner.jpg) | [surface-native.jpg](Research/WorldAssemblerM1/round4/final/captures/thumbs/surface-native.jpg) |
| Cliff overlook, pitch -34° | [cliff-final4-overlook-owner.jpg](Research/WorldAssemblerM1/round4/final/captures/thumbs/cliff-final4-overlook-owner.jpg) | [cliff-final4-overlook-native.jpg](Research/WorldAssemblerM1/round4/final/captures/thumbs/cliff-final4-overlook-native.jpg) |
| Looking up and outward at the cap, pitch 25° | [cap-upout-owner.jpg](Research/WorldAssemblerM1/round4/final/captures/thumbs/cap-upout-owner.jpg) | [cap-upout-native.jpg](Research/WorldAssemblerM1/round4/final/captures/thumbs/cap-upout-native.jpg) |
The fresh final4 cliff pair uses an overlook camera at `(-168, 0, -380)`, yaw `0°`, pitch `-34°`.
It is camera-matched, but still shows a visible owner/native shape difference; it is not evidence of
cliff parity. The native frame has no broad fanned-plate trail in this view. The route's analytic
field audit and the type-4 shelf negative control pass independently. Raw 640×400 viewer images and per-run logs are under
[`round4/final`](Research/WorldAssemblerM1/round4/final/). All viewer/capture runs used VSync and an
explicit 60 FPS cap.
### Finite-strate route and deterministic plan
The review manifest is [`world_assembly.json`](Research/WorldAssemblerM1/round4/world_assembly.json).
It contains one finite strate (chunk Z `-79..-16`), a type-4 shelf with stable ID
`09812c26310b90c9` and 33 route points, each with its own stable feature ID. The capsule constraints
are radius `348/256` voxel (0.34 m), height
`1802/256` voxel (1.76 m), maximum grade `17560/65536`, half-voxel sweep spacing, five support
probes with at least three required, one-voxel support search depth, and a four-voxel route corridor.
The serializer produced 7,565 bytes with canonical round-trip equality. Recipe, plan and manifest
hashes are `c37de78b759c0a4c`, `1ca84619c8600ee5` and `8933693d9560ba9f`.
The generator considered 648 route candidates, rejected 366 for grade, rejected none in the sweep,
and accepted 33. The actual capsule sweep sampled 530 centers / 143,630 field points: zero blocked
samples, unsupported centers or grade failures; minimum clearance was 63/256 voxel. Its deliberately
unsupported route control was detected at all 530 centers. Automatic generation and scripted changes
must preserve the swept route; player carve/fill remains unrestricted. Seasonal water remains fixed.
### Readiness, determinism and LOD8 cost
| Area | Result |
|---|---|
| Local field query | Ready without render meshes. `World::densityAt` compiled in 36.514 ms and matched all 78 audit samples, including all 33 route waypoints; zero render meshes generated. |
| Analytic route/collision validation | Ready. The capsule sweep above validates clearance/support against the composed field. |
| Physics collision cooking | Not provided by standalone Core; deferred to the Unreal adapter and owner build. |
| Render mesh | Separately exercised by the matched viewer captures and stream hashes below. |
The 4,096-point native query benchmark took 13.882/16.125/32.117 ms at W1/W8/W16 (point evaluation
only). Evaluator hash was `c5e0371612e927af` at all three worker counts. The 2,226-tile stream hashes
also match at W1/W8/W16:
| Hash | W1, W8 and W16 |
|---|---|
| Density | `e88539dde9407b0e` |
| Mesh | `c0495d0e5f3f6443` |
| Payload | `ea807397aa2d01f0` |
| Topology | `a0243e20433c69f5` |
The bounds audit passed 298 boxes / 8,046 samples with zero misses or unknown ranges and detected
its deliberately wrong-bound control. The cliff shelf audit examined 29,929 half-voxel XY columns,
found no sub-voxel runs (minimum observed thickness 2 voxels), and detected the legacy taper control
with 20,963 sub-voxel runs.
The matched 529-tile LOD8 cost run still had 165 unknown tiles and no whole-tile skips. LOD8 used
14,254,137 field calls and 11,678,652 column-cache misses; column computation summed to 54.040 s
across workers and meshing to 1.944 s. Against round 3's 13,271,956 calls, 10,879,199 misses and
1.847 s meshing sum, this is about 7.4% more calls, 7.3% more misses and 5.3% more mesher worker
time. The full 529-tile stream completed in 4.446 s wall time. Full per-worker hashes and LOD8
profiles are in `round4/final/logs/mesh-hash-final-w{1,8,16}.stdout.txt` and
`round4/final/logs/lod8-cost-cliff-final-w16.stdout.txt`.
### Round 4 run log
- Four isolated BuildHost-compatible standalone builds (`final` through `final4`) passed in under
40 seconds each, including Core link-safety checks. Builds continued to report the existing
missing `vswhere.exe` lookup and C4838 conversions at `VoxelStrateManager.cpp:3974-3975`.
No `0xC0000142` retry or compiler crash occurred.
- The first 64-voxel cap-grid capture completed but was superseded because its clipmap mesh was too
large. A later build labeled its 128-voxel grid diagnostic as 64; that log was discarded and the
label was corrected. A pitch-70 cap capture was black and excluded. An owner capture wrapper had
a PowerShell type-scope error and was rerun successfully. An initial overlook pair used the older
`WorldAssemblerM1Round4.exe` and was excluded; the owner/native pair linked above was recaptured
with `VoxelForgeAssemblerM1_round4_final4.exe`. The earlier pitch-34 and tight side-view frames
were poor comparisons and excluded. The final4 overlook captures exited in 26.4/6.9 s with peak
working sets 0.983/1.154 GB; both logged the explicit 60 FPS limiter and VSync.
- A focused native cliff probe crossed the approximately 8 GB process-memory guard (last external
sample 8.257 GB decimal / 7.69 GiB). The guard stopped the run before capture; its output is
excluded. This is the only process to cross the requested approximate cap. No run crashed and no
build, compile or audit exceeded 15 minutes.
- All successful viewer captures and stream benchmarks had VSync enabled and the frame limiter set
to 60 FPS; viewers exited after capture. The highest successful capture working set was about
1.52 GiB. No owner editor/project or `.uasset` was touched, and no new source files were added.
No commit, push or stash was made.
### Remaining work by round
- **Round 3:** The two visible defects are repaired and the native path is faster on both the matched
120-tile and 529-tile workloads. Residual owner mismatch, rendered-water gap, and the 1.57 s aim
remain open; LOD8 is the measured cost center.
- **Round 4:** Add the finite-strate capsule route and support constraints, sweep it against the final
composed field, and reject or repair any failing automatic plan. Verify full-evaluator W1/W8/W16
hashes. Measure collision readiness separately from query and mesh readiness; demonstrate a
headless/server field query without render meshes. Keep the route valid during all automatic
changes, leave player edits unrestricted, and keep seasonal water fixed.
- **Round 5:** Wire the reviewed manifest into the season asset/content-hash path and connect Core
behind `bUseVoxelForgeCore`; prove the flag-off legacy path is unchanged. Build only the isolated
BuildHost target here. The owner builds and reviews the in-game surface and walkable route.
Re-run the matched 23.085 s workload, report full-view and local query/collision readiness
separately, and assess the ~1.57 s aim with valid captures.
- **Round 4:** Complete. The route and cap are in the research manifest; field sweep, negative
controls, bounds, determinism, headless query and matched captures are recorded above. Physics
collision cooking and Unreal light-leak behavior remain owner-build checks.
- **Round 5 — before Unreal delivery:** Integrate the reviewed manifest into the season asset/content
hash path and connect Core behind `bUseVoxelForgeCore`; prove that flag-off behavior remains
unchanged. The owner builds and reviews the in-game two-biome surface, enclosed cap lighting and
capsule-walkable route. Run the matched 23.085 s workload, report full-view and local query/
collision readiness separately, and assess the approximately 1.57 s aim. No BuildHost or owner
project build was done here.
### Run log