Core ResolvedLayoutSnapshotV1 (canonical JSON, stable identity): per strate stable ID, generator, recipe, interior bounds in metres, ceiling/bedrock bands as Core really applies them, transition mode/width, dispatch provenance. Validator: compat mode reports today's deviations; strict mode enforces ceiling -> content -> bedrock -> next ceiling (owner rule), two separate bands, nominal contiguity, interpenetration only within the declared EVoxelStrateTransition width; 7 negative controls rejected. Findings: SW built at -120..-632 m although the params say -60 m; a 60 m unowned gap filled by analytic FI fallback; no active bedrock bands; transitions ignored by Core. All L19 hashes unchanged (28 + 14 crossing runs). The Unreal adapter exports resolved_layout (uncompiled here). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
14 KiB
World Assembler L21 — resolved strate layout
This round adds a read-only layout snapshot and validator. It does not change density or mesh evaluation.
Snapshot and current stack
World identity is owner-world/seed/0; Core voxel size is 0.25 m, owner voxel size is 0.125 m, and
all lattice origins are (0,0,0). Intervals below are half-open [bottom, top) metres. Stable strate
IDs are owner-world/seed/0/strate/<index>/generator/<kind>. The shared Core record uses canonical
JSON schema v1 and an FNV-1a payload identity.
The required structure, top to bottom, is:
strate N ceiling band
content
bedrock band
strate N+1 ceiling band
content
bedrock band
Ceiling and bedrock remain distinct bands owned by their own strate. Their nominal edges touch; a
separate EVoxelStrateTransition declaration describes possible interpenetration.
| Prototype | Order / stable suffix | Generator; recipe version | Interior/content (m) | Current ceiling | Current bedrock | Transition at lower interface |
|---|---|---|---|---|---|---|
| SurfaceWorld | 0 / TunnelNetwork |
TunnelNetwork; legacy.TunnelNetwork v0 |
[-120, 8) |
No Core density band. Manager configures a 1 m upper VF_ApplyBoundarySeal at [8,9), but the compiled analytic Core path does not apply it. |
No Core density band. Manager configures a 1 m lower VF_ApplyBoundarySeal at [-121,-120), but the compiled analytic Core path does not apply it. |
Gradient, 2 chunks = 8 m by the 4 m manager chunk. Core does not apply it; manager/dispatch chunk widths are 4/8 m. |
| SurfaceWorld | 1 / SurfaceWorld |
SurfaceWorld; SurfaceWorld.Heightfield2D v1 |
[-632,-120) |
No separate volumetric band; cap profile is in content, with AppendStratumBoundaryCeilings mesh fallback. |
None. | Gradient, 1 chunk = 4 m by manager units; no lower strate in this plan. Manager/dispatch widths are 4/8 m. |
| FloatingIslands | 0 / FloatingIslands |
FloatingIslands; FloatingIslands.ClusterField geometry v3 |
[-60,4) |
Active one-sided upper seal [3.5,4) = 0.5 m. It overlaps the content range by 0.5 m. |
None in geometry v3. | Gradient, 2 chunks = 8 m. Core does not apply it; manager/dispatch widths are both 4 m. |
| FloatingIslands | 1 / SurfaceWorld |
SurfaceWorld; SurfaceWorld.Heightfield2D v1 |
[-632,-120) |
No separate volumetric band; cap profile is in content, with mesh fallback. | None. | Gradient, 1 chunk = 4 m; no lower strate in this plan. Manager/dispatch widths are 4/8 m. |
Dispatch provenance is recorded per stratum in the JSON snapshot:
- SurfaceWorld bounds come from
BuildSurfaceStratumPlan, which converts each chunk with 32 Core voxels = 8 m.NativeSurfaceDensityAtselects withfloor(CoreZ/32), then callsGetGeneratorTypeForChunk/GetStrateIndex. The manager's owner chunk is 4 m. - FI bounds come from
BuildFloatingIslandStratumPlan, which converts each 32-voxel owner chunk through the 12.5/25 cm owner/Core ratio = 16 Core voxels = 4 m.NativeFloatingIslandDensityAtuses the same conversion before the manager lookup. - Legacy TunnelNetwork selection uses the Core 32-voxel chunk lookup. The manager helper assigns the upper strate's transition to its lower interface.
SurfaceWorld strata carry four cap profiles, 33 route points and their attached passages. The FI strate carries four island anchors and its attached passages. The snapshot preserves these recipe anchors in their source fixed-point units.
The owner configuration’s non-Hard transitions are currently not honored by Core at these interfaces.
UVoxelStrateManager::GetGenerationParams contains legacy vector blending, but Core’s compiled
dispatcher selects the resolved/native per-strate fields without applying that blend. FI v3 calls
VF_ApplyUpperBoundarySeal for its ceiling; player edit brushes are applied after the native field,
so that seal remains diggable. Bands default to diggable=true, protected=false; protection is an
explicit option.
Current SurfaceWorld plan, top → bottom
TunnelNetwork ceiling [8,9) (configured; inactive in Core density)
TunnelNetwork content [-120,8)
TunnelNetwork bedrock [-121,-120) (configured; inactive in Core)
SurfaceWorld ceiling: none
SurfaceWorld content [-632,-120)
SurfaceWorld bedrock: none
Current FI prototype, top → bottom
FI ceiling [3.5,4) active, inset into FI content by 0.5 m
FI content [-60,4)
FI bedrock: missing
Unassigned interval [-120,-60) = 60 m
SurfaceWorld ceiling: none
SurfaceWorld content [-632,-120)
SurfaceWorld bedrock: none
The SurfaceWorld and FI content interiors therefore do not overlap: the FI prototype has a 60 m gap. The owner manager slots meet at −60 m when both use 4 m owner chunks, but SurfaceWorld plan/query dispatch converts chunks at 8 m while FI converts at 4 m. In the gap, Core answers through the compiled analytic FloatingIslands fallback, not either planned recipe; probes at −68 m returned solid density −4.125. SurfaceWorld and TunnelNetwork content interiors touch at −120 m in the SurfaceWorld prototype, but Core does not apply the declared Gradient there.
Compatibility validation and boundary probes
Compatibility mode accepted both layouts with seven reported issues apiece. SurfaceWorld reports unhonored transition, 4/8 m dispatch-unit ambiguity on both strates, and missing current-field ceiling and bedrock bands on both. FI reports its unhonored transition, missing FI bedrock, the 0.5 m ceiling/content overlap, the 60 m uncovered interval, and missing SurfaceWorld ceiling and bedrock. These are recorded as compatibility deviations, not world changes.
Strict mode accepted a valid synthetic two-strate fixture. Its seven negative controls rejected:
| Control | Strict check that rejects it |
|---|---|
| Nominal band overlap | Bedrock(N) bottom must equal ceiling(N+1) top. |
| Nominal band gap | The same exact nominal contiguity check. |
| Missing bedrock | bedrock.present is required. |
| Missing ceiling | ceiling.present is required. |
| Wrong band order | Each band kind and the ceiling → content → bedrock edges must match. |
| Gap between bedrock(N) and ceiling(N+1) | Their nominal endpoints must be equal. |
| Interpenetration wider than transition | Explicit overlap must be at most the mode’s limit; this control uses 4,000,001 µm against a 4,000,000 µm Gradient zone. |
Hard has a 0 m limit. Gradient uses TransitionBlendChunks × 4 m; Interleaved adds its recorded
two-manager-chunk warp amplitude to the blend width. The nominal bands still touch exactly; the
separate interpenetration field records any permitted physical crossing. Current Core
interpenetration is 0 m because it does not apply the declared blends.
Each plan audited 21 points: one Core voxel (0.25 m) below, at, and above every distinct content, active-band, configured-band, and transition-zone endpoint. The remaining points agreed with the snapshot. Every disagreement was an uncovered snapshot point answered by a named compiled analytic fallback:
| Prototype | Probe Z (m) | Actual Core dispatch | Density / occupancy |
|---|---|---|---|
| SurfaceWorld | −632.250 | compiled-analytic/TunnelNetwork |
+1, air |
| SurfaceWorld | 8.000, 8.250, 8.750, 9.000, 9.250 | compiled-analytic/TunnelNetwork |
+9.648438, +10.64844, +12.64844, +13.64844, +14.64844; all air |
| FI | −632.250 | compiled-analytic/TunnelNetwork |
+1, air |
| FI | −120.000, −119.750 | compiled-analytic/FloatingIslands |
−108.4793, −107.4969; solid |
| FI | −68.250, −68.000, −67.750, −60.250 | compiled-analytic/FloatingIslands |
−4.125; solid at each point |
| FI | 4.000, 4.250 | compiled-analytic/FloatingIslands |
+0.671875, +2.253906; air |
Probe summaries: SurfaceWorld 6/21 disagreements; FI 9/21. Full per-point records are in
Saved/Linux/linux21/boundary-probes-{surface-world,floating-islands}.log.
Identity, output parity and cost
Snapshots round-tripped through canonical JSON. At W1/W8/W12 their bytes were identical per recipe:
| Recipe | Stable identity | Canonical JSON SHA-256 |
|---|---|---|
| SurfaceWorld | resolved-layout-v1-fnv64:63cf4d2661149fcd |
267586b3da9bc5c08c654c097559b205222f53c594c4c4332cb4929fd3d75c05 |
| FloatingIslands | resolved-layout-v1-fnv64:1d90167f37ef9323 |
7bb9e9d745de3a2edf4276f507a5e4c082ff86aa73d9c1ad7e77c1b4d8b8bea8 |
The 28 hash runs (both recipes, Clang fp-contract=off and GCC default, W1/W8/W12 and W12×5)
matched all 12 L19 rows per run. The 14 dedicated 24 m crossing runs also matched all 12 L19
crossing rows. The table gives the final Clang W12×5 rows, in density/mesh/payload/topology order;
each equals its L19 reference.
| Scope | SurfaceWorld | FloatingIslands |
|---|---|---|
| Full detail | 0ee0579bd15cbbe4 / 32e5d4964d610fee / 1932b96ee4b1d910 / 69743c6bad3447dc |
43034299d33f2536 / a41e8353ec4bbe9c / cd0e3e15eef827b0 / 0b3c3f13cc1d6f8a |
| Whole view | c10697a8f48380c7 / 4197fc1072f0ff58 / 7b3e616ec9459851 / c879e35592bf33e5 |
00bc3607a7839854 / 4baa66127c2b0892 / e11ef05e851a1517 / 1278bc4b1fffb869 |
| LOD 0 | 769f2a706d585a72 / 33eeeb39fa443816 / 645621a1d968983f / c2457ed905036c9d |
ccf97d8e95163a35 / 3333fa0ddebdece2 / d1906bffc2b9d6f2 / a261f3d965e15c12 |
| LOD 1 | 69cc5a5c0a2c60af / b48335f5410c57d5 / d15c5480162ab8ba / feca1bd025823604 |
25fa2f0fa7fbb6e6 / c549c519707ac1d7 / 66f797cde4ebdecf / 2383982a12a27ee5 |
| LOD 2 | 85deed5683a77202 / 53469895987aeea2 / e55f8ae7e1532033 / d5feb12a0e85c09b |
c0577decd8a02cab / 3ccf08b7be6edc5b / 0abcbbda5a06c110 / 11c77b71b606fe75 |
| LOD 3 | 6518caefb3be7e7f / ec513c90b853a614 / f62fa1137ff17f82 / ccf1dcf681965816 |
386e0c0ef2d7c920 / 1ee2c82d34ad9918 / 000a6514ba018406 / 1b4523b19e90f305 |
| LOD 4 | 62d4be96021992f4 / 42706847cb9c744a / eab76f9634e4b9bd / 207ffbb6ef184397 |
e8117a3a803be9f8 / 8a6c36cae1fe0e30 / c839f1b1629eff8c / 0ce9d7ea77b4f62b |
| LOD 5 | 5e4a8c38b8cea6fc / 76adc9ae86988e27 / 938975bf7cc6d94d / 42e135856abdbcac |
ca6d1df453c6b600 / 02c90d834d9a3fb6 / 4364c37d526f4104 / 1b1cf40d25e50ddf |
| LOD 6 | e036e95b9006945b / a880cc101a4ed957 / bd82f1aefad6dd89 / 5e9f3408345d95b3 |
6764e347b08603a0 / 46c6ed9a1f029b94 / 5b8dc9d5b7cb0d3d / a10a4a69a93eac4d |
| LOD 7 | 8ee358af56a30d8d / 5cbd8e5965a2cc3f / d4a7fe5d9e4bde30 / 4dd52cd090a9af78 |
c7cd1b483c598595 / a545eb567dc4a0df / b0a1fb225437e05a / 301d1b884c509550 |
| LOD 8 | c3458e1cbdb9c471 / fba3698d21dd1be0 / 77dfb814eac3a24c / c9514f1580c42449 |
7b6e9279b4993109 / cc63440d9867a18d / 12f5cec78b38fa1b / eed919db6db6b2a7 |
Exact-query rows (density/unclamped, detail, collision): SurfaceWorld e4d4a8eb95b35933 / e4d4a8eb95b35933,
efcba20c0c70c415, e604823a249029bf; FloatingIslands 87e5c0dbf9ee9ee2 / 87e5c0dbf9ee9ee2,
efcba20c0c70c415, e604823a249029bf. The representative 24 m crossing W12×5 whole-view row is the
SurfaceWorld row above; all crossing full-detail, LOD and exact-query rows matched the L19 crossing
reference.
Five interleaved hashing-off W12 pairs against L19 measured SurfaceWorld medians 1.510 s old / 1.512 s new (+0.14%) and FI 13.487 s old / 13.381 s new (−0.79%). The opt-in snapshot is constructed once at plan time, outside tile workers; ordinary standalone evaluation does not request it. No hash rows were produced during these pairs.
Clang and GCC builds passed at 12 jobs. Final build peak process-tree/single-process RSS was 2,697,676/450,248 KiB (Clang) and 4,570,704/897,024 KiB (GCC). The final evidence runner's maximum single-process RSS was 583,736 KiB. All runs used CPUs 0–11 and stayed below the per-run limit; no governor or system changes were made.
Failed and retried runs
- An initial snapshot invocation omitted
--stream-benchmark --stream-pipelineand exited 2; adding the required flags passed. - Early Clang builds caught a
stratesmember typo, then an audit initializer/type error. Both were fixed; the final Clang builds passed. - The first complete evidence pass exited 1 at boundary probing because the audit read the host manager after the harness had released it. Dispatch provenance was moved to Core's live selector; the final audits passed.
- One GCC build wrapper was interrupted (exit 130) while diagnosing an empty progress log, then rerun successfully. No runtime/hash run timed out or exceeded 15 minutes, and no L19 hash mismatch remained.
Owner note
This records the present strata and confirms the selected ceiling → content → bedrock model. FI still has no floor in v3; SurfaceWorld has no volumetric floor or separate ceiling; the 8 m / 4 m dispatch conversions leave a 60 m FI-prototype gap answered by analytic fallback. Core currently ignores the configured transition blend at these interfaces. Bedrock and ceiling protection remain explicit options with diggable defaults. This round changes no world output.
The Unreal adapter adds only a separate resolved_layout JSON field beside world_assembly; that
small edit could not be compiled on this Linux machine. No async path, density evaluator, hash input,
or recipe version changed. No commit, push, or stash was made.
Orchestrator review (Claude)
- Merged: read-only snapshot + validator, no world change (28 hash runs and 14 crossing runs equal L19;
cost within noise). The Unreal adapter gains a 193-line
resolved_layoutexport besideworld_assembly. It is export-only, but UNCOMPILED here; it must be built on the owner PC. - Key facts for the owner: the authored params put the SW top at −60 m (4 m owner chunks), Core builds SW at −120…−632 m (8 m conversion); the 60 m between FI and SW is unowned and answered by the analytic FloatingIslands fallback as solid. No strate has an active bedrock band; SW has no ceiling band (mesh fallback only); configured Gradient transitions are ignored by Core.
- To check next: whether the "ledges" ground seen under the islands is this fallback solid in the unowned gap rather than SW terrain (L19 attributed them to SW at about −60…−73 m).