L74's passage bound omitted the 0.21 m wall relief and 0.20 m floor relief, so its whole-tile
proof was unsound in principle (no tested view hit it). Passage support is now bounded per route
segment by four parameter-subinterval boxes using Catmull-Rom derivative extrema, local max
radius and relief padding. Stratum slicing only at LOD0-2 in FI/VS. Legacy sub-tile block
certificates are audit-only (runtime version was slower). TN regression (-80,-20,-3218) kept.
Exact full-grid vs skip hashes on every tile, 4 views, Clang/GCC, W1/W8/W12; control caught;
80-camera sweep 0 violations. Whole view vs c67b200: SW -1.3%, FI -7.6%, TN -2.3%, VS +0.2%.
Compiles in the Linux UE host (VFHostEditor, 27/27 actions).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
6.6 KiB
L75 report
Whole-tile veto census
Across 9,661 sampled tiles, 4,917 were uniform in the full-grid sample. The proof certified 3,093 (63% of those uniform tiles, 32% of all visits); 1,824 uniform tiles were vetoed.
| First veto | Missed uniform tiles |
|---|---|
| Detail envelope too wide | 0 |
| Composer candidate | 0 |
| Passage bounds | 289 |
| Primitive overlap | 236 |
| Transition | 141 |
| Stratum crossing | 924 |
| Smooth-min slack | 0 |
| Other / native interval inconclusive | 234 |
The 234 other cases are SW native interval queries that remain inconclusive. Per-stratum veto rows are in Saved/Linux/l75/logs/veto-audit.json.
Changes and sub-tile proof
The dominant veto was stratum crossing. The classifier now slices its z interval at exact stratum boundaries and evaluates each slice; this reduced crossing vetoes from 1,354 to 924. Passage bounds now include the 0.21 m wall and 0.20 m floor relief, plus Catmull-Rom centerline extrema. The resulting bounds remain conservative; passage vetoes rose to 289 because the old bounds omitted real carve support.
Sub-tile checks use a block-local legacy interval and the same detail, composer, passage, primitive, transition, stratum, and smooth-min vetoes. A certified block is skipped; an inconclusive block falls back to full density sampling. Runtime legacy checks are enabled for TN, where the regression was found; the audit override exercises them in all four views.
The permanent TN regression is at (-80,-20,-3218): density is +0.0633840263 (air). The failed proofs bounded the nominal passage route but missed its wall/floor relief, which extends the carve outside that bound. All four containing blocks now classify mixed and sample the point. See Saved/Linux/l75/logs/tn-block-regression.log.
Falsification and timing
Clang/GCC full-grid versus skip comparisons matched mesh, payload, and topology hashes on every tile in all four views. W1/W8/W12 comparisons also had zero mismatches. The deliberately too-tight negative control was caught in all four views. The 20-position-per-view sweep completed 80/80 positions with zero block-proof violations; hit rates were SW 83.68%, FI 69.16%, TN 73.80%, VS 73.64%. The fast tier passed in 318.6 s.
Three interleaved pairs per view compared the rebuilt c67b200 baseline (source stamp aacea94c) with L75 (ebc12def). Whole-view medians:
| View | Before | L75 | Change |
|---|---|---|---|
| SW | 2.405 s | 2.510 s | +4.37% |
| FI | 4.839 s | 5.351 s | +10.58% |
| TN | 4.477 s | 4.976 s | +11.15% |
| VS | 2.464 s | 3.187 s | +29.34% |
The L75 proof work improved coverage but did not improve whole-view time. Full-detail unknown boxes rose from c67 to L75: SW 1,424→1,493, FI 9,391→15,636, TN 3,760→11,342, and VS 176→5,543. Further work should isolate the conservative primitive bounds and full-sampling fallbacks before claiming a speedup. Far LOD refinement was left unchanged.
Builds, source changes, and failed runs
Clang 19 and GCC 14 builds passed at source stamp ebc12def. The fast tier passed. After timing, the requested VFHostEditor Linux Development build was launched with -MaxParallelActions=4 and the required process limits. Bundled CoreCLR failed before UnrealBuildTool or C++ compilation with GC heap initialization failed (0x8007000E) / Failed to create CoreCLR; retrying with bounded .NET GC settings had the same failure. The UE compile is therefore unverified under the mandated 6 GiB address-space limit. Log: Saved/Linux/l75/ue-build-driver.log.
No top-level Unreal module Source/ files changed. The standalone source changes are Standalone/Source/StreamingWorld.h and Standalone/Source/VoxelForge/Private/VoxelMarchingCubesMesher.cpp. The cached L74 binary failed its owner-data preflight and was excluded; the timing baseline was rebuilt from c67b200. No final hash, sweep, negative-control, or fast-tier run failed.
Net subset (follow-up)
Kept the corrected passage proof and TN regression. Passage support is now stored as four parameter-subinterval bounds per route segment. Each bound uses Catmull-Rom derivative extrema where smoothing can occur, otherwise linear endpoints, plus the local maximum radius and outward padding. The 0.21 m wall relief is included along the route; the 0.20 m floor relief is added only for upper-entry segments where that field can apply. The four proof boxes are a conservative union; runtime passage-feature bounds also use their union. The refreshed sampled-tile audit found 5,028 uniform tiles and 1,881 misses:
| First veto | Missed uniform tiles |
|---|---|
| Detail envelope | 0 |
| Composer candidate | 0 |
| Passage bounds | 313 |
| Primitive overlap | 199 |
| Transition | 0 |
| Stratum crossing | 1,135 |
| Smooth-min slack | 0 |
| Other / native interval inconclusive | 234 |
Sub-tile legacy block certificates are audit-only. The committed native block path remains enabled, with its full-grid fallback when any block candidate is uncertified. Stratum slicing is limited to LOD0–2 in FI and VS; SW and TN use the conservative crossing veto. The TN probe (-80,-20,-3218) remains air at +0.0633840263; all four covering blocks were Mixed/unknown, with zero violations across 62,261,518 audited samples.
Final evidence passed on source stamp 17470bc8:
- Clang/GCC full-grid versus skip: 16 comparisons, exact mesh/payload/topology hashes on every tile; zero mismatches.
- W1/W8/W12: 32 comparisons, zero mismatches.
- Negative control: caught in all four views.
- Sweep: 20 positions per view, 80/80 zero violations and exact tile hashes. Hit rates were SW 24.13%, FI 22.05%, TN 25.88%, VS 22.32%.
- Fast tier: PASS, 318.9 s.
Three interleaved whole-view pairs against rebuilt c67b200:
| View | Before median | Net subset | Change |
|---|---|---|---|
| SW | 2.441 s | 2.410 s | −1.27% |
| FI | 4.975 s | 4.596 s | −7.62% |
| TN | 4.569 s | 4.462 s | −2.34% |
| VS | 2.479 s | 2.484 s | +0.20% |
The UE VFHostEditor Linux Development build succeeded after timing, with -MaxParallelActions=4 and no address-space limit (27/27 actions, 68.4 s). It emitted three CreateSectionGroup deprecation warnings at VoxelWorld.cpp. No top-level Unreal Source/ files changed; the standalone Source/ changes are Standalone/Source/StreamingWorld.h and Standalone/Source/VoxelForge/Private/VoxelMarchingCubesMesher.cpp.
Failed experiments: the original L75 runtime legacy-block configuration and the mixed-parent native-block gate regressed whole-view timing, so they were dropped. The earlier UBT attempt under the 6 GiB address-space cap failed before C++ compilation because CoreCLR could not initialize; the authorized uncapped UBT build passed.