wip(L27, side branch): passages cross open voids inside shared natural rock columns
Unsupported passage runs > 12.5 m become a solid relief-bearing column (ceiling/island to ground, flared base) with the helix inside, for every recipe; FI anchor uses the same path. All 4 styles x both recipes: 0/0/0, 0 open-air, naturalness pass; no-long-bridge audit (L26 fails it). Deterministic, Clang = GCC. Look approved; cost +35% SW / +19% FI blocks merge (L28). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
This commit is contained in:
1 parent
37a223046c
commit
07b3fe2852
14 files changed
+772
-201
No files matched your search
@@ -0,0 +1,179 @@
|
||||
# VoxelForge L27 — passage voids inside rock columns
|
||||
|
||||
## Owner summary
|
||||
|
||||
The SurfaceWorld passage now drops from the ceiling (about −138 to −143 m) to terrain near
|
||||
−505 m inside one continuous, relief-bearing rock column. Its helix is cut inside the column; the
|
||||
~2 km route no longer crosses the open sky as a bridge. FloatingIslands uses the same field and
|
||||
planner path: the passage descends inside a column from its island to the bedrock floor. Styles 1
|
||||
and 3 have a second, smaller cap crossing, so they get a second column. The FI style-0 anchor stays
|
||||
at the L25 axis and remains connected. Its shared column is slimmer (11.25 m nominal radius vs
|
||||
L25's 13.25 m) with a larger measured wall margin (3.25 m vs 1.938 m), visible in the new
|
||||
exterior capture.
|
||||
|
||||
All four styles in both recipes pass on Clang and GCC: 0 blocked, 0 unsupported, 0 grade failures,
|
||||
0 open-air violations, and naturalness passes. The new no-long-bridge audit detects the L26
|
||||
SurfaceWorld bridge as its negative control.
|
||||
|
||||
## Column rule and size
|
||||
|
||||
The shared planner samples native support every 0.5 m. A contiguous unsupported route run longer
|
||||
than **12.5 m** becomes one column; this is 2.5 times the former 5 m support-thickness limit. A
|
||||
shorter span is allowed only while grounded. The column is a solid signed-distance union in the
|
||||
shared composition field, so terrain queries, collision and meshes all see the same rock. The
|
||||
recipe still chooses passage style; the helix applies inside a column and that style continues
|
||||
outside it.
|
||||
|
||||
The minimum planned outer radius is maximum route offset + bore radius + 2 m; the nominal profile
|
||||
adds 1.25 m. The base flares by up to 6 m and the ceiling end by up to 2 m; bounds extend 6 m
|
||||
below and 5 m above the unsupported run to overlap the native rock. Measured wall margin is 1.75 m
|
||||
minimum in SW and 3.0 m minimum in FI, above the 1.5 m requirement. SW columns span about
|
||||
363–368 m vertically and have nominal radii 19.744–27.027 m. FI main columns span about 53–57 m
|
||||
with nominal radii 9.251–12.746 m; styles 1 and 3 also have ~14 m cap columns.
|
||||
|
||||
| Recipe / style | Unsupported route run(s) | Column nominal radius; audited profile radius | Minimum wall |
|
||||
|---|---:|---:|---:|
|
||||
| SW 0 Straight | 2,004.815 m; z −142.687 to −505.109 m | 27.027 m; 25.527–27.777 m | 1.75 m |
|
||||
| SW 1 Worm | 1,946.355 m; z −138.668 to −505.109 m | 24.187 m; 22.687–24.937 m | 1.75 m |
|
||||
| SW 2 Spiral | 1,957.892 m; z −137.967 to −505.138 m | 19.744 m; 18.244–20.744 m | 1.75 m |
|
||||
| SW 3 Cascading | 1,981.103 m; z −137.484 to −505.112 m | 22.791 m; 21.291–23.541 m | 1.75 m |
|
||||
| FI 0 Straight | 249.982 m; z −65.846 to −122.390 m | 11.250 m; 11.250–12.500 m | 3.25 m |
|
||||
| FI 1 Worm | 17.042 m and 249.965 m; z −61.574 to −122.416 m | 12.719 m and 12.746 m; 12.968–16.468 m and 12.746–13.996 m | 3.25 m |
|
||||
| FI 2 Spiral | 244.479 m; z −68.891 to −122.382 m | 9.251 m; 9.000–10.500 m | 3.00 m |
|
||||
| FI 3 Cascading | 17.955 m and 231.814 m; z −65.805 to −122.436 m | 11.250 m each; 11.250–14.000 m and 11.250–12.500 m | 3.25 m |
|
||||
|
||||
The helix path measurements are length / turns / mean path radius / vertical pitch. SW styles 0–3
|
||||
measure **2,015.1 m / 16.88 / 18.96 m / 21.00 m**, **1,956.1 / 20.69 / 14.99 / 17.32 m**,
|
||||
**1,963.0 / 61.62 / 5.02 / 5.81 m**, and **1,987.2 / 21.63 / 14.50 / 16.59 m**. FI styles 0–3
|
||||
measure **254.0 m / 8.00 / 5.00 m / 5.78 m**, **254.0 / 7.99 / 4.97 / 5.72 m**,
|
||||
**246.9 / 12.95 / 3.00 / 3.31 m**, and **235.5 / 7.94 / 4.50 / 5.37 m**. FI styles 1 and 3
|
||||
also have short cap descents: respectively 22.1 m / 0.59 turns / 5.70 m radius / 6.71 m pitch,
|
||||
and 22.2 m / 0.75 turns / 4.54 m radius / 5.37 m pitch. Main helix grades are about 10.0–10.5°;
|
||||
the walkability audit reports zero grade failures.
|
||||
|
||||
## Audits
|
||||
|
||||
Clang and GCC each ran all eight recipe/style combinations. Every row has 0 blocked capsule
|
||||
samples, 0 unsupported samples, 0 grade failures, 0 open-air violations, connected column ends
|
||||
(2/2), 128/128 route-support samples for each main crossing, and passing walkability. The naturalness wall-relief audit measured 0.509–0.806 m against
|
||||
the 0.200 m minimum; flat runs were 0 m against the 8 m limit. The strict V3 layout validator
|
||||
accepted with zero issues and rejected its malformed controls 9/9.
|
||||
|
||||
The no-long-bridge threshold is 12.5 m. SW has 0 m uncolumned span in all styles. FI's longest
|
||||
short grounded span is 4.464 m (style 0); every other span is shorter. The L26 SW bridge control
|
||||
(1,946–2,005 m unsupported) was detected in all four SW styles. The L24 ungated-support and L23
|
||||
smooth-wall naturalness controls were detected in all eight recipe/style rows. The 16 final matrix logs are
|
||||
`Saved/Linux/linux27-final-audit-{surface-world,floating-islands}-style{0,1,2,3}-{clang,gcc}.log`.
|
||||
|
||||
## Captures
|
||||
|
||||
All five JPEGs are 16:9 and below 300 KB in `captures/`.
|
||||
|
||||
| Capture | View | Size | SHA-256 |
|
||||
|---|---|---:|---|
|
||||
| [sw-column-wide.jpg](captures/sw-column-wide.jpg) | Wide side section: ceiling, full column and local ground; 1280×720 | 27 KB | `63e621794a48747c5892b74d3313da1df93e95bc1fb5e23c511211f992023acf` |
|
||||
| [sw-column-base.jpg](captures/sw-column-base.jpg) | Close base flare into terrain; 1280×720 | 27 KB | `c4dbf7bcbd4962cf0e2c4f567cceec798deac8686a85cd02716ebd3c21db43bf` |
|
||||
| [sw-column-top.jpg](captures/sw-column-top.jpg) | Close ceiling blend and upper helix; 1280×720 | 30 KB | `fe83fbb0bf90ea51696f9f63129738eb55812c01bbbec65e7430b8a7e6b512ed` |
|
||||
| [sw-column-cutaway.jpg](captures/sw-column-cutaway.jpg) | Full-height cutaway through the helix; 1920×1080 | 60 KB | `8233e80035aac69dec7fd6d2e77a46e5798f627aefe216671d884bf84b339c40` |
|
||||
| [fi-anchor-pillar.jpg](captures/fi-anchor-pillar.jpg) | L27 FI anchor pillar from outside; 1280×720 | 21 KB | `5bb8ad6a0729818577764596d3fa9ccff9621b31217ee9d8e34401098e6b4ef6` |
|
||||
|
||||
## Cost, determinism and compatibility
|
||||
|
||||
The whole-view timing comparison alternated two L24 and two L27 Clang W12 runs per recipe. No
|
||||
prebuilt L24 executable was present, so I rebuilt it from local commit `cb9236c` with Clang 19 and
|
||||
FP contraction off under `Saved/Linux/l24-source/bin/linux/`.
|
||||
|
||||
| Recipe | L24 whole-view seconds, two runs (mean) | L27 whole-view seconds, two runs (mean) | Change | Tiles, both versions |
|
||||
|---|---:|---:|---:|---:|
|
||||
| SurfaceWorld | 1.644 / 1.663 (1.654) | 2.207 / 2.252 (2.230) | +0.576 s (+34.8%) | 2,370 total; 960 full detail |
|
||||
| Floating Islands | 15.907 / 16.848 (16.378) | 19.403 / 19.649 (19.526) | +3.149 s (+19.2%) | 2,370 total; 960 full detail |
|
||||
|
||||
No tiles were added. The L24 and L27 per-run logs are `Saved/Linux/linux27-cost-interleaved-*.log`.
|
||||
|
||||
The L25 whole-view command produced identical hashes across Clang/GCC and W1/W8/W12. Hash order
|
||||
is density / mesh / payload / topology:
|
||||
|
||||
| Recipe | L27 whole-view hash |
|
||||
|---|---|
|
||||
| SurfaceWorld | `117547e5e18c6847 / db5fa276315ff2d4 / b4e9d01d70413fea / 03caf881fa047f1c` |
|
||||
| Floating Islands | `70ab5bc87dd174d2 / 6f357f9085a496f0 / 08ce7d4e036da65a / eb5eef04a5cb85d9` |
|
||||
|
||||
Full-detail hashes also match across the matrix: SW `ace56c8f205238ad / a9c603a1248de6b8 /
|
||||
ea55f1f4fcc6a894 / 5ea7bc78a1b678ae`; FI `ed550e0c8b182695 / 0e410a8e80a3e7f7 /
|
||||
0751926f0c67d8a4 / f01208bc2f7841ec`. Exact-query hashes (density / unclamped / detail / collision)
|
||||
are SW `c949c4df2ce6f9d9 / c949c4df2ce6f9d9 / 114c501e2d830d94 / e6011d3a248d4849` and FI
|
||||
`7b7c50ac24ccadcc / 7b7c50ac24ccadcc / efcba20c0c70c415 / e604823a249029bf`.
|
||||
|
||||
The 24 m crossing processed 314 moving tiles and matched across both compilers:
|
||||
|
||||
| Recipe | Moving-tile hash: density / mesh / payload / topology |
|
||||
|---|---|
|
||||
| SurfaceWorld | `fe83368d746bf44d / d4379e0f86fa5780 / 0d1d6659a251dcaf / 73940f21b0fdaf14` |
|
||||
| Floating Islands | `e3d0ea833bca4215 / f4b27f4bd1adbb07 / 8aedcdc86e5f21a2 / 323f880d952306e9` |
|
||||
|
||||
L13 parity passed for both compilers and recipes: 8 page pairs, 14 higher-LOD pairs, one edit pair,
|
||||
782,026 exact-query samples, zero mismatches. At a 10 km off-route view, L9 proofs checked 6,896
|
||||
blocks / 9,178,576 samples with zero violations on both compilers. SW had 1,296 fallbacks and no
|
||||
unknown blocks; FI had 18,704 fallbacks, 17,408 unknown blocks and zero violations.
|
||||
|
||||
At a 100 km SW view, L26 and L27 were bit-identical on Clang and GCC: full-detail hash
|
||||
`3148a6af10901e4d / 7025b8fc8d4636cd / ca0a8081022340bf / 1c49e72a6636ae99`, whole-view hash
|
||||
`a212129dc5f2bfcf / e9b3980b69c789bf / 785a394605885d1f / 8f7e3a55bf429175`, exact-query hash
|
||||
`482500abbe835b11 / c4948c7179963784 / efcba20c0c70c415 / 137e8f6c0b03a624`; LOD0–8 also match.
|
||||
At 10 km, the whole-view hash changes because the new column enters LOD8; full detail, exact queries
|
||||
and LOD0–7 remain identical.
|
||||
|
||||
Headless binary SHA-256: Clang `81ae5a03765eb3937f53c10e8f8b82cf1b38d3e3b6240511a57e5d66d99a9755`,
|
||||
GCC `30c8927eee3c8c2ec0e7ff72228872435d19527719bedbb2399e6dcaff4819a4`. Rebuilt L24 Clang
|
||||
binary: `29bb68ed425b4770b1b4ddcc68996c5d680665014e7ab7ffb3c307523015cf0b`.
|
||||
|
||||
## Changes and invariants
|
||||
|
||||
The deterministic crossing planner and field composition are shared in
|
||||
`Standalone/Core/src/ShapeWorldInternal.h`. `VoxelForgeCore.h/.cpp` expose the void-crossing audit;
|
||||
`StreamBenchmarkPipeline.h` adds column, open-air and no-long-bridge audits with the L26 negative
|
||||
control. `FloatingIslandsInternal.h` retires the old special-case root for geometry 8, while
|
||||
`OwnerWorldLoader.h` and `WorldAssemblyPrototype.h` use the shared crossing plan and version.
|
||||
Geometry/evaluator versions are now 8/14; resolved-layout schema V3 is unchanged. The only Unreal
|
||||
edit is the matching geometry-version bump in `Source/VoxelForge/Private/VoxelForgeCoreAdapter.cpp`;
|
||||
Unreal was not available to compile here.
|
||||
L4 lazy caches, L7 shared cache, L9/L12 proofs, L11 readiness handling, L13 route parity, L18/L19
|
||||
ceilings and L21/L22 layout behavior remain unchanged. No async path was added.
|
||||
|
||||
## Failed and retried runs
|
||||
|
||||
- Two temporary Clang backtrace builds failed on `signal` namespace qualification; corrected before
|
||||
the instrumentation was removed. The first SW style-0 audit segfaulted because the planner read
|
||||
shared-field intervals before they were built; build order was corrected. An early SW style-1
|
||||
iteration had 3,816 open-air violations and 869 blocked samples at the lower mouth; the carve
|
||||
guard fixed it.
|
||||
- Early FI audit revisions mis-tagged segments and reported false open-air spans; corrected to use
|
||||
the actual route ranges and physical field. FI style 2 briefly had two unsupported samples; the
|
||||
seam extension fixed them. A 3 m cap left 13 FI style-0 open-air samples; the 5 m cap cleared
|
||||
them. A relaxed tread guard introduced one SW style-1 blocked sample and was reverted.
|
||||
- A layout-only invocation without the required streaming flags exited 2. During capture setup,
|
||||
`--hash` and `--data=` were rejected; the correct switches are `--stream-hash` and a positional
|
||||
data path. Those were corrected. A helix-metrics helper first failed while formatting a list and
|
||||
was rerun successfully.
|
||||
- The first close SW export at max clip level 1 hit the 160-million-node interval safety bound.
|
||||
Two finer endpoint exports then grew past 1.2 GB without a final pipeline summary and were
|
||||
stopped; the already-complete full-column cutaway mesh supplied the final base/top views. The
|
||||
first wide camera hid the base; a cut-plane side view fixed it. The first FI close camera cropped
|
||||
the endpoints and was moved back.
|
||||
- The first FI max-clip-level-3 export grew past 1.6 GB without a summary and was stopped. The
|
||||
max-clip-level-8 retry completed in 21.7 s with a 104 MB mesh. The final capture is from that
|
||||
L27 mesh. All rejected, stopped and successful export logs are in `Saved/Linux/`.
|
||||
|
||||
No run exceeded 30 minutes or remained stuck for 15 minutes. Only the requested small JPEGs and
|
||||
this report were written under `Standalone/Research/WorldAssemblerM3/Linux27/`; exports and logs
|
||||
remain in `Saved/Linux/`. The pre-existing untracked `Linux18/exports/` directory was left alone.
|
||||
No commit, push or stash was made.
|
||||
|
||||
## Orchestrator review (Claude) — side branch
|
||||
|
||||
- Look approved by me: `sw-column-wide.jpg` and `sw-column-cutaway.jpg` show one slender ceiling-to-ground
|
||||
column with the helix inside; `sw-column-base.jpg` shows the base meeting the terrain with a natural crack
|
||||
exit; `fi-anchor-pillar.jpg` shows a textured pillar with a flared base under the island.
|
||||
- **Blocking merge: cost.** Whole view +34.8% SW (1.654 → 2.230 s) and +19.2% FI with no new tiles. A local
|
||||
feature must cost locally. L28: bound column/helix evaluation spatially (feature lists / AABB culling), then
|
||||
merge `wip/l25-helix` into `assembler/world`.
|
||||
Reference in new issue
Block a user