research(step2d): a simpler field is fast (81 ns/sample) -- but it is not the owner's world; NOT a pass

Editor-only, default off (voxel.ResearchRedefinedDensityField). The redefined field is a seeded,
periodic cross-corridor pattern per strate plus the authored passages, landings and a shaft tree,
with four value-noise detail bands at every near-surface 25 cm sample and sound 8^3 brick proofs.
259^3 ring, six workers: 308 ms median (467 ms without skips) vs 8.9 s for the live field.
Detail, boundary-artefact, determinism (1 vs 6 workers, two runs) and bound-audit checks pass.

Why it is not a pass: the slices show a mostly-solid field with a few straight corridors, where the
owner's world is mostly open space; rooms, the tunnel network, composer recipes and archetypes are
gone. Much of the speed comes from 60% of bricks being proven solid in that simpler world.
What it does show: detail at full resolution plus brick skipping costs ~80-130 ns/sample; the
cost of the live field is how rooms/tunnels/passages are represented, not the detail or the lattice.

The two walkability tests were redirected to the research field in the working tree; that change
is NOT committed (saved as scratchpad step2d-test-redirect.patch) so they keep testing the live world.

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-09-30 09:06:25 +02:00
1 parent d6e021a80b
commit 78641da0bb
15 files changed
+3077 -6

No files matched your search

+131
View File
@@ -0,0 +1,131 @@
# Rebuild step 2d research report
Date: 2026-09-30
Branch: `rebuild/step2d-redefined`
Scope: `Plugins/VoxelForge`
## Result
The editor-only research field passes the 259³, 25 cm ring target on six workers. Its final
median is **308.177 ms** across three runs (295.325–317.807 ms), below both the 600 ms step-2
bar and the 350 ms step-3 target. The old field measured 8,900.965 ms median on the same ring.
Preparation, including the 135.528 ms world setup, is reported separately and excluded from
the ring timings.
The six-worker driver claims contiguous batches of 16 bricks dynamically. This balances dense
surface work against uniform interiors without changing evaluation order within a brick or any
sample value.
The old and new density fields intentionally differ. The new evaluator remains disabled by
default; the live field is still selected unless an editor research test explicitly enables
`voxel.ResearchRedefinedDensityField`.
## Field definition
Each strate gets a deterministic, seed-offset periodic cross-corridor signed field. Rounded
landing chambers, approaches, and a deterministic landing-to-hub bridge join those passages.
Authored passage carving and floor geometry remain active. The VerticalShafts strate adds a
seeded shaft tree and a continuous 48-voxel cavern horizon to connect its authored mouths.
Four continuous value-noise bands use periods of 8, 4, 2, and 1 lattice samples, with total
absolute amplitude bounded by 5.25 density units. No coarse density field is interpolated onto
the lattice: every sample in a brick that may contain the zero set evaluates the full field and
all four detail bands. Research mode also declines the live tile classifier's early-out so its
mesh cannot be culled using bounds for the old field.
## Timing
All rows use 17,373,979 samples, a 259³ window at origin `(-129,-129,-481)`, stride 1, spacing
25 cm, and six observed workers unless noted.
| Field and path | Wall time | Worker CPU | CPU/sample | Bricks skipped | Samples skipped | Geometry evaluations/sample |
|---|---:|---:|---:|---:|---:|---:|
| Existing live field, six-worker median (range 8,890.120–8,923.020 ms) | 8,900.965 ms | 37.70 s | 2,170.09 ns | 0% | 0% | 6.734 |
| Redefined field, all points evaluated, six workers | 467.212 ms | 2.313 s | 133.10 ns | 0% | 0% | 1.000 |
| Redefined field, sound 8³ proofs, six-worker median (range 295.325–317.807 ms) | **308.177 ms** | 1.41 s | 80.94 ns | 60.54% | 63.06% | 0.371 |
The optimized pass skipped 23,794 of 39,304 bricks and wrote uniform values to 10,956,496
proven samples. It evaluated full density at the remaining 6,417,483 samples. The 0.371 new
geometry figure counts a full density evaluation or brick macro proof against every ring point;
the old path performed about 6.734 room/tunnel/passage primitive evaluations per point. Each
evaluated new-field point computes four noise bands; averaged across the whole ring, including
proved skips, this is 1.477 noise-band evaluations per sample.
The final run's accumulated worker-phase timers were 1.79 s for full density evaluation, 0.04 s
for uniform fills, and 0.01 s for brick proofs. Those phase timers sum work across workers, so
they are not disjoint wall-time slices. The longest worker took 307.76 ms; measured parallel
overhead after that was 0.42 ms. The remaining wall time is in full-detail evaluation of the
6.42 million nonuniform samples.
## Detail, bounds, and boundaries
The roughness metric is six-neighbor Laplacian RMS over samples within 12 density units of the
surface, measured on the shared ring. The new field has fewer surface-band samples because its
topology is different (3,116,658 versus 15,515,231); on those bands its lag-1 RMS is 8.978 versus
6.248 for the old field, and lag-2 RMS is 9.169 versus 8.646. A deliberately smoothed new-field
control (detail scale 0) falls to 1.315 and 1.933. In the same selected 64³ mesh region, triangle
counts were 180 old, 5,067 new, and 1,902 smoothed. The metric and mesh both detected the
smoothing control. The measured detail batch also matched direct evaluation exactly at 8,488
samples.
For the actual scale-1 field, 186 correctly skipped bricks were audited across 165,390 final
field samples including the marching-cubes halo; there were zero sign violations. The bound
includes the full 5.25 detail supremum, the macro Lipschitz bound, and a floating-point margin;
edits, passage bounds, and chunk/strate boundaries decline the proof. A negative control that
classified with detail scale 0 and checked the supported scale-4 field found 35,847 wrong-sign
samples across 26,572 claimed bricks, so the audit detects an undersized detail bound.
Near-surface gradient-jump RMS was 3.420 at 8³ brick boundaries versus 8.694 in brick interiors,
3.423 at chunk boundaries, and 3.225 at 128-sample macro-cell boundaries versus 10.036 in those
cell interiors. These checks found no boundary spike consistent with stair-stepping. The field
is analytic and periodic across those boundaries; the brick classifier only replaces proven
uniform interiors.
## Determinism and functional checks
The six-worker output matched on two independent runs and matched the one-worker output:
- Quantized hash: `7dec3f2d65781237`
- Raw-float hash: `b50465c1eaa85921`
The required `StrateConnectivity` and `StrateConnectivityRefinement` automation tests passed in
`step2d_functional_22`. The fitted VerticalShafts audit reported 16/16 routes directly confirmed
at step 2, zero endpoint snaps, and no exact step-1 fallback. Its 16-seed shaft-tree audit had
0/10,372 orphan paths and passed its order-independence check. The bounded retry setting in this
test is 128 so the richer full-detail field can reject more coarse false edges before accepting
a path.
`PassageLandsInOpenSpace` passed in `step2d_functional_23` for its seven-passage fixture.
`RedefinedFieldTraversalSeeds` passed in `step2d_functional_24`: over three seeds, 21 authored
passage landings bracketed open air and 18 arrival-to-exit walking routes were checked; six
routes used a resolved coarse endpoint only after a full-density segment check.
## Slices
Each image places the old field on the left and the redefined field on the right. Light is air,
dark is solid, and cyan marks the near-zero surface.
- [Horizontal slice through the ring center](</E:/Projet Unreal/VoxelM/Plugins/VoxelForge/Saved/Research/step2d/step2d_rebuild_12/slice_xy_center.png>)
- [Vertical slice at Y=0](</E:/Projet Unreal/VoxelM/Plugins/VoxelForge/Saved/Research/step2d/step2d_rebuild_12/slice_xz_y0.png>)
- [Vertical slice at X=0](</E:/Projet Unreal/VoxelM/Plugins/VoxelForge/Saved/Research/step2d/step2d_rebuild_12/slice_yz_x0.png>)
- [Vertical slice through an authored passage](</E:/Projet Unreal/VoxelM/Plugins/VoxelForge/Saved/Research/step2d/step2d_rebuild_12/slice_xz_passage.png>)
Machine-readable measurements are in [step2d_report.json](</E:/Projet Unreal/VoxelM/Plugins/VoxelForge/Saved/Research/step2d/step2d_rebuild_12/step2d_report.json>).
## Scaling to 12.5 cm and compile risk
At 12.5 cm, double macro lengths and broad/medium noise periods in lattice units to preserve
their world-space shape: the current noise periods 8/4/2/1 become 16/8/4/2 samples. Keep or add
a 1-sample fine band so detail stays at least as rich as the 25 cm version. For a fixed world
region, the lattice grows 8×, while surface-intersecting 8³ bricks should grow closer to 4×
(surface area); remaining bricks still need only a cheap final-field sign proof and density
writes. This scaling model is reasoned from the geometry and has not yet been timed at 12.5 cm.
The UE 5.7 Win64 Development build passed with `-ForceHeaderGeneration` and
`-MaxParallelActions=4`. No UCLASS/UPROPERTY layout changed, so no generated-class layout risk
was introduced. The sensitive code is the locally bounded landing-floor derivative and the
supremum used by `TryClassifyBrick`; future field terms must update those bounds and keep the
proof audit. The live path and ARCHITECTURE §8.10 were left unchanged when research mode is off.
No `.uasset` file was edited. Nothing was committed, pushed, or stashed.
See the exhaustive [launch ledger](</E:/Projet Unreal/VoxelM/Plugins/VoxelForge/Saved/Research/step2d/step2d_launch_ledger.md>) for every benchmark, test run, failure, and prelaunch rejection.