# 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//generator/`. The shared Core record uses canonical JSON schema v1 and an FNV-1a payload identity. The required structure, top to bottom, is: ```text 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. `NativeSurfaceDensityAt` selects with `floor(CoreZ/32)`, then calls `GetGeneratorTypeForChunk` / `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. `NativeFloatingIslandDensityAt` uses 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. ```text 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-pipeline` and exited 2; adding the required flags passed. - Early Clang builds caught a `strates` member 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_layout` export beside `world_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).