wip(assembler): M1 repair round -- raised block and cliff fixed; native 7x faster than legacy
Luna, M1 repair round: the rectangular raised block and the broken cliff shared one cause, a type-2 solid AABB in the generated plan; it is now a tapered, terrain-following shelf, and a negative-control audit catches the old box behaviour; seam classification check passes. Bound audit 298 boxes / 8,046 samples, 0 misses. Evaluator and 120-tile density/mesh/payload/ topology hashes identical at W1/W8/W16. Cave regression: walkability 5,642/5,642, 64/64 tiles. Legacy mismatch unchanged (0 biome mismatches, 18.14% signs). Speed (matched workloads): 120-tile full detail 0.089 s native vs 0.625 s legacy; 529-tile clipmap 3.858 s vs 11.687 s -- 2.29 s above the ~1.57 s aim; LOD8 dominates (165 unknown tiles, 13.27 M field calls, 10.88 M column-cache misses). My capture review: coast matches legacy closely; surface clean but a dark flat slab on the far horizon; cliff shelf renders as a stack of thin plates with back faces showing (sub-voxel shelf thickness suspected). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
1 parent
fcb16fd265
commit
2c20f9eaea
61 files changed
+4308
-165
No files matched your search
@@ -1,13 +1,13 @@
|
||||
# World assembler M1 report
|
||||
|
||||
M1 has four implementation rounds. The gates at the end of the milestone remain the agreed
|
||||
M1 has five implementation rounds. The gates at the end of the milestone remain the agreed
|
||||
two-biome SurfaceWorld in the owner's game, including coast, cliff/overhang, cap and a walkable
|
||||
route; conservative bound audits; route sweep; identical evaluator hashes at W1/W8/W16; separate
|
||||
local query/collision readiness and full-view timings; faster matched workload than the 23.085 s
|
||||
legacy bridge; and server field queries that do not depend on render meshes. The approximately
|
||||
1.57 s whole-view aim (2 × the 0.785 s cave-only Core measurement) is an aim, not an acceptance gate.
|
||||
|
||||
## Round 1 of 4 — native foundations
|
||||
## Round 1 of 5 — native foundations
|
||||
|
||||
- Define the fixed-scale, versioned, hashed recipe and shipped-plan payload, including the Core
|
||||
field-block contract and explicit field channels.
|
||||
@@ -17,7 +17,7 @@ legacy bridge; and server field queries that do not depend on render meshes. The
|
||||
- Record current hashes, timings, audit results and a small owner/native capture pair. This round
|
||||
establishes a heightfield baseline; it does not claim the final two-biome/coast/cliff/route gate.
|
||||
|
||||
## Round 2 of 4 — complete the surface recipe
|
||||
## Round 2 of 5 — complete the surface recipe
|
||||
|
||||
- Add output-space biome blending, coast and beach shaping, cap detail, cliffs and bounded 3D
|
||||
overhang exceptions with stable feature IDs and certified influence bounds.
|
||||
@@ -26,7 +26,19 @@ legacy bridge; and server field queries that do not depend on render meshes. The
|
||||
- Measure surface field query cost separately from cave compilation and full-view rendering; tune
|
||||
caches only after the workload and cache identity are fixed.
|
||||
|
||||
## Round 3 of 4 — route and query readiness
|
||||
## Round 3 of 5 — repair the shipped surface before routes
|
||||
|
||||
- Diagnose and repair the raised rectangular surface patch and the floating cliff shard from
|
||||
round 2. Add a negative-control regression for the former box feature and a seam/classification
|
||||
continuity check.
|
||||
- Profile plan setup, column-cache hits/misses, classifier outcomes, native field call types and
|
||||
meshing by LOD. Improve native readiness until it beats legacy on the same matched workload;
|
||||
measure the remaining distance to the approximately 1.57 s aim.
|
||||
- Keep the bounds audit and its negative control, W1/W8/W16 evaluator and mesh hashes, legacy
|
||||
mismatch metrics, and no-manifest cave path green. Save fresh matched surface, border, coast and
|
||||
cliff captures.
|
||||
|
||||
## Round 4 of 5 — route and query readiness
|
||||
|
||||
- Ship the finite-strate plan with route points, support constraints and stable IDs. Sweep the actual
|
||||
player capsule over the final composed field and repair/reject any failing candidate.
|
||||
@@ -37,7 +49,7 @@ legacy bridge; and server field queries that do not depend on render meshes. The
|
||||
- Report local field-query and collision readiness separately from render mesh readiness, and show
|
||||
a server-side field query path that does not build or require render meshes.
|
||||
|
||||
## Round 4 of 4 — Unreal delivery and owner review
|
||||
## Round 5 of 5 — Unreal delivery and owner review
|
||||
|
||||
- Import the reviewed manifest into the season asset/content hash path and connect the native Core
|
||||
evaluator behind `bUseVoxelForgeCore`, preserving the legacy path when the flag is off.
|
||||
@@ -166,7 +178,7 @@ climate-based assignment across the owner's four profiles, output-space ground a
|
||||
per-profile relief/height warp/beach/cliff/cap settings, fixed-season water outputs, and stable-ID
|
||||
bounded 3D overhang exceptions. Player carve/fill edits remain unrestricted; route constraints only
|
||||
apply to automatic system generation or changes. This sample has one bounded exception
|
||||
(`09812c26310b90c9`) and no route yet; route planning and capsule sweep remain round 3.
|
||||
(`09812c26310b90c9`) and no route yet; route planning and capsule sweep remain round 4.
|
||||
|
||||
The evaluator-v2 review manifest is 4,514 bytes. Recipe hash is `dbe949967c0dfbce`, plan hash is
|
||||
`165a00c4a77ebae0`, and manifest hash is `203d7043158069f6`. The 4,096-sample evaluator hash is
|
||||
@@ -245,17 +257,152 @@ workers; maximum observed full-detail time was 6.636 s at the upward-facing clif
|
||||
- No owner project or BuildHost project was built. No `.uasset` was opened or changed. No new source
|
||||
files were added.
|
||||
|
||||
## Round 3 results — repair before routes
|
||||
|
||||
### Defects and repairs
|
||||
|
||||
The raised block and the floating cliff shard came from the same shipped-plan feature: type 2 was
|
||||
interpreted as a full solid AABB. The round-2 plan placed it at x `[-708,-636]`, y `[380,460]` and
|
||||
z `[-1695,-1680]` voxels, so its flat top and vertical walls were expected consequences of the
|
||||
recipe rather than a tile cache or seam error. The prototype now emits a type-4 terrain-following
|
||||
tapered shelf. It samples the native base-height range over its footprint for finite Z bounds,
|
||||
smoothly unions the shelf into the height field, and retains type-2 semantics for older plans.
|
||||
|
||||
The regression audit samples 25 points in baseline air above the shelf: the type-2 negative control
|
||||
blocks all 25 while type 4 blocks zero. The audit also requires the negative control to be detected.
|
||||
The tile-seam classifier check covers 50 boxes and 900 lattice points across 32-voxel seams with
|
||||
zero false solid/air classifications. The former broad type-2 box would fail the shape audit.
|
||||
|
||||
The new cliff capture shows a single attached, tapered shelf without the floating slab and debris
|
||||
trail from round 2. It is a coherent procedural cliff rather than a reproduction of the legacy
|
||||
overhang's noisy, stair-stepped surface; visual and density parity with the owner is still not
|
||||
claimed.
|
||||
|
||||
### Bounds, determinism and legacy comparison
|
||||
|
||||
The final bounds audit passed 298 boxes and 8,046 point samples with zero missed or unknown bounds;
|
||||
its deliberately wrong-bound negative control was detected. W1/W8/W16 evaluator hashes all match
|
||||
at `6d249c9e3b7c7a03`. The 120 full-detail tile set also has matching worker-count hashes:
|
||||
|
||||
| Hash | W1, W8 and W16 |
|
||||
|---|---|
|
||||
| Density | `66a43186eedce63d` |
|
||||
| Mesh | `7a47273589966250` |
|
||||
| Payload | `2488a207c3103f67` |
|
||||
| Topology | `8a17eced70a37323` |
|
||||
|
||||
The 4,096-point owner comparison is unchanged to reported precision: biome mismatches `0/4096`,
|
||||
height MAE `13.060` voxels, density MAE `17.2259` voxels, maximum density error `392.4136`, and
|
||||
sign mismatches `743/4096` (`18.14%`). The residual errors are still visible and remain a later
|
||||
parity task. The Core field query bridge remains exact at `45/45` points and generated no render
|
||||
meshes.
|
||||
|
||||
The no-manifest `type_3_Maze.json` smoke passed: the cave shape compiled with 16 workers, the
|
||||
walkability scan passed `5642/5642`, and the LOD0 stream benchmark generated `64/64` tiles. This
|
||||
checks that the additive surface path leaves the existing Core cave path operational.
|
||||
|
||||
### Matched timing and stage profile
|
||||
|
||||
All timings below use the current standalone binary, Normal process priority, all 16 CPUs and the
|
||||
same owner JSON. Full-detail comparisons use the same 120 tiles at each camera; the full-view pair
|
||||
uses the same 529-tile surface clipmap.
|
||||
|
||||
| Site | Legacy 120 tiles | Native 120 tiles |
|
||||
|---|---:|---:|
|
||||
| Surface | 0.597 s | 0.063 s |
|
||||
| Biome border | 0.630 s | 0.090 s |
|
||||
| Coast | 0.611 s | 0.077 s |
|
||||
| Cliff | 0.660 s | 0.124 s |
|
||||
| Mean | **0.625 s** | **0.089 s** |
|
||||
|
||||
Native averages 7.1× faster for these matched full-detail tiles. On the full clipmap the legacy
|
||||
run took `11.687 s` and native took `3.858 s` (`3.03×` faster, a 67.0% reduction). The `1.57 s`
|
||||
whole-view aim remains unmet: this native stream-generation measurement is `2.288 s` over the aim,
|
||||
or `2.46×` the aim. The separate cold viewer capture reached its initial 529-tile clipmap in
|
||||
`4.35 s`.
|
||||
|
||||
The current native run reports plan construction at `6.928 ms` and the shape compile at about
|
||||
`0.200 s`. Across the 529 streamed tiles, classification reported 29 solid, 196 air, 223 mixed and
|
||||
273 unknown box outcomes, with 141 whole-tile meshing skips. Native field calls totaled 16,012,931:
|
||||
13,438,461 float, 2,409,044 lattice and zero unclamped calls. The per-thread column cache recorded
|
||||
4,281,385 hits and 11,731,564 misses; its column-compute worker-time sum was `53.450 s`. Classifier
|
||||
worker time summed to `0.403 s` and mesher worker time to `4.372 s`. Worker-time sums include all
|
||||
workers and are not wall-clock stages. `field_calls` includes direct classifier point probes;
|
||||
float/lattice subtype counters count density callback routes and are a subset, not an additive split.
|
||||
|
||||
Per-LOD counts and worker-time sums from the same run:
|
||||
|
||||
| LOD | Tiles | Solid/air/mixed/unknown outcomes | Tile skips | Field calls | Column hits/misses | Column ms | Classify ms | Mesh ms |
|
||||
|---:|---:|---:|---:|---:|---:|---:|---:|---:|
|
||||
| 0 | 64 | 0/145/111/0 | 61 | 213,514 | 143,665/69,849 | 175.241 | 186.663 | 24.231 |
|
||||
| 1 | 56 | 0/30/26/0 | 30 | 1,196,327 | 1,119,642/76,685 | 213.300 | 147.698 | 282.340 |
|
||||
| 2 | 56 | 25/10/21/0 | 35 | 116,048 | 98,725/17,323 | 48.601 | 40.382 | 36.108 |
|
||||
| 3 | 56 | 4/9/27/16 | 13 | 292,692 | 184,235/108,457 | 456.442 | 24.875 | 500.537 |
|
||||
| 4 | 56 | 0/2/26/28 | 2 | 265,988 | 2,478/263,528 | 1,161.266 | 2.182 | 1,249.532 |
|
||||
| 5 | 40 | 0/0/12/28 | 0 | 189,010 | 167,312/21,698 | 113.963 | 0.068 | 193.681 |
|
||||
| 6 | 24 | 0/0/0/24 | 0 | 163,809 | 89,504/74,305 | 384.186 | 0.033 | 137.596 |
|
||||
| 7 | 12 | 0/0/0/12 | 0 | 303,587 | 83,067/220,520 | 1,050.500 | 0.029 | 100.605 |
|
||||
| 8 | 165 | 0/0/0/165 | 0 | 13,271,956 | 2,392,757/10,879,199 | 49,846.610 | 0.667 | 1,847.241 |
|
||||
|
||||
LOD8 is the remaining cost center: its 165 tiles all received unknown tile classifications and none
|
||||
could skip meshing. They account for 13,271,956 native field calls (13,033,696 float and 238,260
|
||||
lattice), with 2,392,757 column hits and 10,879,199 misses. Column computation summed to `49.847 s`
|
||||
across workers; classification took `0.667 ms` and meshing summed to `1.847 s`. These broad boxes
|
||||
span mixed strata, so the single-stratum classifier cannot certify them. Most LOD8 points therefore
|
||||
take the field path, and most require a new XY column. The 65,536-entry thread-local column cache
|
||||
reduced LOD1 misses from 1,187,985 to 74,549, but did not reduce the LOD8 miss count; full-view wall
|
||||
time moved from `4.062 s` to `3.830 s` in that cache-size comparison. A separate 3D point-cache
|
||||
experiment had 1.94 million hits but left column misses and full-view time effectively unchanged
|
||||
(`3.853 s` versus `3.830 s`), so that experiment was removed.
|
||||
|
||||
### Fresh matched 3D captures
|
||||
|
||||
The four owner/native pairs use the same cameras as round 2. Each image is 640×400 and below 22 KB.
|
||||
The surface pair no longer shows the flat-topped block; border and coast maintain their broad
|
||||
silhouettes; and the cliff pair shows the attached tapered shelf without a floating shard or debris
|
||||
trail. The JPEGs are the inspection copies; raw back buffers remain under `captures/raw/`.
|
||||
|
||||
| Site | Owner reference | Native Core |
|
||||
|---|---|---|
|
||||
| Surface |  |  |
|
||||
| Biome border |  |  |
|
||||
| Coast |  |  |
|
||||
| Cliff |  |  |
|
||||
|
||||
### Round 3 run log
|
||||
|
||||
- One initial full build failed on `shared_ptr` lacking `has_value`; the check was corrected and a
|
||||
retry passed. A later full build compiled Core and passed the link-safety scan but the viewer
|
||||
compile failed because three profile counters were declared in the other benchmark function's
|
||||
scope. Moving them into the correct scope fixed the error; the final isolated build passed in
|
||||
under one minute. It reported the existing `vswhere.exe` lookup message and C4838 conversion
|
||||
warnings in `VoxelStrateManager.cpp:3974-3975`.
|
||||
- The first final audit launch used the executable's default data location, which was absent. It
|
||||
exited before generation. Rerunning with `Standalone/data/owner_world.json` passed all audits.
|
||||
- A PowerShell capture-array expression combined the border capture path with later flags. The
|
||||
owner and native launches then retried back-buffer capture against the malformed path (1,409 and
|
||||
229 failed reads in their logs). Both built 2,226 unintended tiles. The owner attempt was stopped
|
||||
after 46.2 s; the native attempt had reached initial clipmap readiness at 6.847 s. Working set
|
||||
stayed around 1.0 GiB. The argument array was corrected and both matched border captures
|
||||
succeeded at the intended 529 tiles. These were stopped capture launches, not crashes.
|
||||
- One inspection pipeline using `tail.exe` failed with Win32 error 5; later inspections used
|
||||
PowerShell. No `0xC0000142` occurred. No process exceeded the 15-minute limit or 8 GB cap.
|
||||
- No owner editor was opened or closed and no owner project was built; no `.uasset` was opened or
|
||||
changed. Only the standalone
|
||||
BuildHost-compatible viewer was built. No new source files were added, and no commit, push or
|
||||
stash was made.
|
||||
|
||||
### Remaining work by round
|
||||
|
||||
- **Round 2:** Evaluator-v2 surface recipe, matched 3D comparisons and expanded bounds audit are
|
||||
implemented. The measured residual mismatch, rendered-water gap, and owner/native cliff difference
|
||||
remain open for round 3 review; round 2 does not claim surface parity.
|
||||
- **Round 3:** Add the finite-strate capsule route and support constraints, sweep it against the final
|
||||
- **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 4:** Wire the reviewed manifest into the season asset/content-hash path and connect Core
|
||||
- **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
|
||||
|
||||
Reference in new issue
Block a user