# 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]() - [Vertical slice at Y=0]() - [Vertical slice at X=0]() - [Vertical slice through an authored passage]() Machine-readable measurements are in [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]() for every benchmark, test run, failure, and prelaunch rejection.