Files
VoxelForge/Standalone/Research/OwnerShapeWorld/speed_round/round11/REPORT.md
T
Fr0zkaandClaude Opus 5.5 631dd57eb4 standalone: landing plate removed; passage shaft rings reduced with the rock detail kept
- AddLanding no longer adds a shallow positive ellipsoid (floor plate check 71.3% -> 0%).
- Round 10 had removed all relief on passage walls to pass the ring check (smooth tube; rejected).
  Cause found instead: the owner roughness's 8-voxel Z anchors with linear interpolation. Passage-
  controlled walls now use 2-voxel anchors, blended smoothly into the 8-voxel ones.
- Ring gate (lag-20 correlation) 0.376 -> 0.038 AND shaft relief RMS 1.294 (smooth-tube control
  0.276 fails); passage/cave relief ratio 1.152. Faint rings remain deep in the shaft.
- Whole view 0.984 s cold @8w (interleaved, full payload); W1/W8 44/44 hash fields equal; routes
  5642/5642; look and far-survival audits pass; bad-shell control fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
2026-10-05 09:56:11 +02:00

13 KiB
Raw Blame History

Round 11 — passage shaft anchor spacing

Result

Round 11 restores the passage-wall relief removed in Round 10 and keeps the AddLanding plate fix. The broad, regularly spaced shaft bands track the owner roughness interpolation anchors: changing only passage-controlled owner roughness from 8-voxel to 2-voxel Z anchors drops the 20-pixel radial-profile correlation from 0.37625 to 0.03793. Fine rock relief remains: final shaft high-pass RMS is 1.29366 versus 1.33143 on the full-detail baseline, and the field-level passage relief RMS is 1.152× the nearby cave-wall RMS.

The final W8 cold full-payload runs are 0.983 s and 0.985 s. Their mean is 0.984 s, versus 0.9855 s for Round 10's 0.985 s and 0.986 s. Both final samples stay below one second. The full 110.90 MiB payload is enabled, all 2,226/2,226 tiles are generated, and every direct run reports zero cache hits.

Final executable: Standalone/bin/VoxelForgeRound11Final.exe. The final /MP8, /arch:AVX2, /fp:precise build is build_round11_final.log.

Cause and tests

The fixed close-up is 1280×800. The ring analyzer samples a radial profile around the shaft and reports autocorrelation at fixed pixel lags. The restored full-detail image has its broad peak at 20 px, with lag-20 correlation 0.37625. In the same view, lag 8 is -0.17880 and lag 32 is -0.11875. Changing only the owner-roughness anchor interval removes this repeated period while keeping relief. Phase and domain-warp probes could lower lag-20 correlation, but they moved the repeat elsewhere—for example, the independent-phase probe has lag-20 correlation 0.10099 and lag-32 correlation 0.41219—or made the relief visibly stronger and less even.

Probe Owner Z anchors on passage walls Lag 8 Lag 20 Lag 32 Shaft high-pass RMS Result
Restored full-detail baseline 8 voxels -0.17880 0.37625 -0.11875 1.33143 Repeated broad bands
SurfaceDistanceQ scale refined from 1/16 to 1/256 8 voxels -0.16419 0.36106 -0.10573 1.26432 Quantization is not the cause
Cubic Hermite owner-anchor interpolation 8 voxels -0.22643 0.37990 -0.08620 1.41653 Does not remove the repeat
Per-voxel owner roughness 1 voxel 0.03742 0.02828 0.06502 1.36528 Repeat removed; relief retained
Final passage interpolation 2 voxels 0.00533 0.03793 0.07640 1.29366 Repeat removed; relief retained

The screen-space period is camera-dependent; the causal test is the change in the field's Z anchor interval while keeping the noise function and relief amplitude. Reducing the anchor interval to one voxel moves the strongest measured 5–40 px profile correlation to the 5 px lower limit of that band scan. Two-voxel anchors keep lag-20 correlation low and cost less than evaluating the owner roughness independently at every voxel.

OwnerCaveRoughnessForDetail uses the two-voxel anchors when passage influence is at least 0.60. A smooth blend from the existing eight-voxel anchors covers passage influence 0.40–0.60. Other cave walls keep their existing eight-voxel interpolation. The landing ellipsoid remains removed from AddLanding.

The ring gate is check_passage_rings.py. It checks lag-20 correlation below 0.15 and a shaft 2 px high-pass relief floor above 0.70. This makes the full-detail baseline fail for rings, makes the smooth Round 10 control fail for missing relief, and makes the final capture pass both:

Capture Lag-20 correlation Shaft relief RMS Gate
Full-detail before 0.37625 1.33143 Fail: rings
Round 10 smooth-tube control -0.09955 0.27577 Fail: detail
Round 11 final 0.03793 1.29366 Pass

The independent passage wall detail audit samples the actual density-field relief: 13,271 passage-wall samples, RMS 1.0020; 465,563 nearby ordinary cave-wall samples, RMS 0.8701; ratio 1.152, within the 0.75–1.25 range. The explicit --shape-detail=smooth control reports ratio 0.000 and exits 8 as intended: control log.

Distance quantization and Hermite interpolation therefore do not explain the broad repeat. The owner Z-anchor interval does. The 5 px peak and pixel-scale correlations remain in the final image as fine texture; the two-voxel result is not obtained by suppressing relief.

Profile and cold interleave

The interleave order was Round 10 A, Round 11 A, Round 11 B, Round 10 B. Each executable ran directly with --stream-benchmark --shape-world --force-generate --workers=8 --clip-radius=3, in a fresh process through RunMachine.ps1.

Measure Round 10 A Round 11 A Round 11 B Round 10 B Round 10 mean Round 11 mean
Process wall 0.985 s 0.983 s 0.985 s 0.986 s 0.9855 s 0.984 s
Shape stage 399.310 ms 411.659 ms 415.237 ms 404.777 ms 402.044 ms 413.448 ms
Detail band 206.815 ms 219.364 ms 217.363 ms 212.613 ms 209.714 ms 218.364 ms
Far-shape stage 43.770 ms 43.573 ms 49.788 ms 43.824 ms 43.797 ms 46.681 ms
Full clipmap 460 ms 464 ms 462 ms 460 ms 460 ms 463 ms
Payload / cache 110.90 MiB / 0 hits 110.90 MiB / 0 hits 110.90 MiB / 0 hits 110.90 MiB / 0 hits

Raw logs: Round 10 A, Round 11 A, Round 11 B, Round 10 B. The process-wall remainder after subtracting shape stage and full-clipmap time is approximately 123 ms for Round 10 and 108 ms for Round 11; this is a derived startup/setup/finalization remainder, not a separately timed stage.

The final attributed profile is here: shape stage 406.865 ms, surface-detail band 217.383 ms, far-shape build 43.548 ms, full clipmap 459 ms. It processes 9,389,017 candidate distance samples and 3,527,283 detail evaluations. Sampled EffectiveRockDistance work averages 66.3 ns per distance evaluation; detail work averages 334.0 ns, including 111.6 ns owner roughness and 83.0 ns surface relief. The shape allocation profile reports 36.71 MiB candidate-axis words, 131.79 MiB proxy address capacity, and 11.25 MiB primitive storage; the full stream payload remains 110.90 MiB. Profile sampling uses 1/256 of distance evaluations and 1/64 of detail evaluations, so the estimated worker sums are not wall-clock durations.

Determinism, audits, and payload

  • The final 1-worker and 8-worker full-payload hash runs match all 44/44 density, mesh, payload, and topology fields both at the default benchmark position and with the stream centered on the passage camera. The default-position W8 hashes also match all 44/44 fields from the restored full-detail pre-fix executable. Against the retained VoxelForgeShapeRound8Final.exe executable for 16612ac, 35/44 default-position fields match; the nine differing fields are the whole-view hashes, LOD2 density, and all four LOD3 hashes. Comparison output: hash comparison, default W1, default W8, passage W1, passage W8, restored baseline W8, 16612ac W8.
  • The standard shape/look audit passes: log. Routes remain 5,642/5,642. GridStair relative join step is 0.090 / 0.400; surface-band family checks, flat-patch share (6.5%), detail, floor joins, and tunnel radius pass. The default audit footprint contains no tagged passage wall, so its passage-only ratio is marked SKIP; the focused passage-wall audit above runs in the passage region and passes.
  • Far survival passes 7,200/7,200 boundary surfaces and all 10,976 connectors across 178,351 sampled sections. Missing surfaces, holes, unsampled connectors, and boundary holes are zero: audit.
  • The damaged-shell control remains red as intended: 512 triangles removed, 16 boundary surfaces missing, 16 holes, exit 14: control.
  • Direct benchmarks and hash runs generated 2,226/2,226 tiles with the full 110.90 MiB payload and zero mesh-cache hits.

Captures

All “before” captures use the local VoxelForgeRound11FullDetail.exe baseline before the anchor change; “after” captures use VoxelForgeRound11Final.exe. Each image is 1280×800. Cameras are in metres followed by yaw/pitch degrees. Pixel deltas are from round11_capture_pixel_compare.stdout.log, generated by compare_round11_captures.py.

Fixed view Camera (x,y,z,yaw,pitch) Before After Changed pixels
Chamber (-11.75,-123.25,-19.85,0,0) before after 0
Tunnel (-11.75,-123.25,-19.85,90,0) before after 0
Passage (-39.19,6.27,-28.51,63,0) before after 265,844
Far (-11.61244,-118.2212,-19.8452,0,0) before after 0
Passage-floor close-up (-39.19,6.27,-25.51,63,-25) before after 528,282
Tunnel bend (-198.97,-99.57,-45.58,33.59,23.17) before after 0

The four remote views use (500,0,0,yaw,0):

Yaw Before After Changed pixels Mean channel delta Max channel delta
0 before after 53,752 2.919636 96
90 before after 1 0.000000 1
180 before after 113,721 4.021039 117
270 before after 219,245 6.364519 126

The chamber, tunnel, far, and bend captures are pixel-identical. Passage and passage-floor views change as the relief interpolation changes; the remote comparisons also record the pixels affected in those four views for owner review.

Failed attempts and machine limits

  • All final builds succeeded with /MP8, /arch:AVX2, and /fp:precise; they emit the existing vswhere.exe lookup diagnostic and C4838 narrowing warnings in VoxelStrateManager.cpp. No process returned 0xC0000142.
  • The first exploratory build log wrapper used a relative Tee-Object path after Build.ps1 changed to Standalone/Build; the wrapper returned 1 even though the executable had been produced. It was rerun with an absolute log path. The first analytic-normal probe build had a C2065 undeclared ActiveShapeWorld; the source was corrected and the probe rebuilt successfully.
  • Two early Python helper launches omitted required wrapper arguments and exited 1. The first ring-gate launches also resolved image paths from the wrong working directory and raised FileNotFoundError; each was rerun with Standalone-relative paths. No viewer started in those failed helper launches.
  • The first standard shape audit treated an empty passage sample set in its default region as a failure. The audit now marks that passage-only subcheck SKIP when no passage samples are present; the standard audit then passes, and the dedicated passage-region detail audit provides the non-skipped measurement.
  • A forced axis-aligned passage-camera --shape-audit returned 7 because the view measured 74.8% axis-locked normals against a 60% threshold; the pre-fix full-detail executable also failed that down-shaft camera. A separate earlier close-up camera audit measured 65.0% and also failed. These were orientation diagnostics, not the standard owner-start acceptance audit; the dedicated detail audit avoids that unrelated ray-normal criterion.
  • The baseline ring image and smooth-tube image intentionally exit 1 in the ring/relief gate; the --shape-detail=smooth field control intentionally exits 8; the bad-shell control intentionally exits 14.

All workload, capture, audit, and helper processes ran BelowNormal on affinity 0xFF00; no viewer that this work did not start was closed. All edits and outputs are confined to Standalone\. No commit, push, or stash was made.