wip(assembler): M1 round 5 -- native SurfaceWorld manifest delivered into the Unreal Core route

Manifest imported into UVoxelSettings (hash 8933693d9560ba9f), folded into the season
content hash only when Core is on. BuildHost: W1/W8/W16 stable, 2553 surface tiles match
standalone, 432 LOD transitions, collision on all 36 expected tiles. Matched timing
96.8 s native vs 197.3 s bridge (2.04x). Collision support tiles wait for Core region admission.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-09 15:31:48 +02:00
1 parent 2d0cec90e4
commit f67b519e75
11 files changed
+1002 -45

No files matched your search

+30 -2
View File
@@ -1,6 +1,7 @@
[CmdletBinding()]
param(
[ValidateRange(60, 900)][int]$TimeoutSeconds = 900
[ValidateRange(60, 900)][int]$TimeoutSeconds = 900,
[string]$WorldAssemblyManifestPath = ''
)
# Exercise AVoxelWorld Core streaming, collision, anchor movement, and carving in BuildHost only.
@@ -13,6 +14,8 @@ $StagePlugin = Join-Path $HostRoot 'Plugins\VoxelForge'
$HostProject = Join-Path $HostRoot 'HostProject.uproject'
$OutputRoot = Join-Path $StagePlugin 'Saved\CoreWorldValidation'
$OutputDirectory = Join-Path $OutputRoot 'Output'
$InputDirectory = Join-Path $OutputRoot 'Input'
$StagedWorldAssembly = Join-Path $InputDirectory 'world_assembly.json'
$LogDirectory = Join-Path $OutputRoot 'Logs'
$LocalAppData = Join-Path $OutputRoot 'LocalAppData'
$UserDirectory = Join-Path $OutputRoot 'User'
@@ -33,11 +36,19 @@ function Assert-UnderPath([string]$Candidate, [string]$Root) {
Assert-UnderPath $HostRoot (Join-Path $PluginRoot 'Saved\BuildHost')
Assert-UnderPath $OutputRoot (Join-Path $StagePlugin 'Saved')
if ([string]::IsNullOrWhiteSpace($WorldAssemblyManifestPath)) {
$WorldAssemblyManifestPath = Join-Path $PluginRoot 'Standalone\Research\WorldAssemblerM1\round4\world_assembly.json'
}
$WorldAssemblyManifestPath = [IO.Path]::GetFullPath($WorldAssemblyManifestPath)
Assert-UnderPath $WorldAssemblyManifestPath $PluginRoot
foreach ($required in @($HostProject, $EditorCmd)) {
if (-not (Test-Path -LiteralPath $required -PathType Leaf)) {
throw "Required BuildHost commandlet input is missing: $required"
}
}
if (-not (Test-Path -LiteralPath $WorldAssemblyManifestPath -PathType Leaf)) {
throw "Reviewed world assembly manifest is missing: $WorldAssemblyManifestPath"
}
$foreignEditors = @(Get-Process -ErrorAction SilentlyContinue |
Where-Object { $_.ProcessName -like 'UnrealEditor*' })
@@ -63,10 +74,15 @@ foreach ($assetName in $ExpectedAssetHashes.Keys) {
}
}
foreach ($directory in @($OutputDirectory, $LogDirectory, $LocalAppData,
foreach ($directory in @($OutputDirectory, $InputDirectory, $LogDirectory, $LocalAppData,
$UserDirectory, $DerivedDataCache, $ZenData)) {
[IO.Directory]::CreateDirectory($directory) | Out-Null
}
Copy-Item -LiteralPath $WorldAssemblyManifestPath -Destination $StagedWorldAssembly -Force
$ManifestData = Get-Content -LiteralPath $StagedWorldAssembly -Raw | ConvertFrom-Json
if ($ManifestData.content_hash -ne '8933693d9560ba9f') {
throw "BuildHost world assembly input is not the reviewed round-4 manifest: $($ManifestData.content_hash)"
}
$CrashBefore = @{}
foreach ($CrashRoot in $CrashRoots) {
@@ -102,6 +118,7 @@ $BaseArguments = @(
'-run=VoxelForgeExplore', '-seed=0', '-archetype=TunnelNetwork', '-slot=0',
'-modes=export', '-gameconfig=1', '-coreworldtest=1',
'-settingsref=/Game/VoxelForge/DA_Settings.DA_Settings',
('-coreworldassembly="{0}"' -f $StagedWorldAssembly),
('-out="{0}"' -f $OutputDirectory)
)
@@ -153,6 +170,8 @@ try {
if ($CompletedLog -match '\[VoxelForgeCoreWorldTest\] pass complete=1' -and
$CompletedLog -match 'Commandlet VoxelForgeExploreCommandlet_\d+ finished execution \(result 0\)') {
$ExitCode = 0
} elseif ($CompletedLog -match 'Commandlet VoxelForgeExploreCommandlet_\d+ finished execution \(result (-?\d+)\)') {
$ExitCode = [int]$Matches[1]
}
}
if ($ExitCode -eq -1073741502 -and $Attempt -eq 1) {
@@ -188,6 +207,15 @@ foreach ($Phase in @('initial', 'anchor', 'edit', 'surface_travel', 'surface_str
if ($Text -notmatch '\[VoxelForgeCoreWorldTest\] worker_hash_matrix=1/8/16 stable=1') {
throw "BuildHost Core actor log is missing the W1/W8/W16 determinism marker. See $FinalLog."
}
if ($Text -notmatch '\[VoxelForgeCoreWorldTest\] world_assembly_hash=8933693d9560ba9f plans=1 native=1') {
throw "BuildHost Core actor log does not prove the reviewed native SurfaceWorld plan was attached. See $FinalLog."
}
if ($Text -notmatch '\[VoxelForgeCoreWorldTest\] native_biome_field=1 .*sampled_biomes=[2-9]') {
throw "BuildHost Core actor log does not prove native SurfaceWorld biome assignment. See $FinalLog."
}
if ($Text -notmatch '\[VoxelForgeCoreWorldTest\] matched_surface_tile_timing=1 .*same_keys=1 tiles=2553') {
throw "BuildHost Core actor log is missing the matched native/legacy-bridge surface timing. See $FinalLog."
}
$NewCrashes = @(Get-NewCrashFolders)
if ($NewCrashes.Count -gt 0) {
throw "New UECC crash folders appeared during Core actor validation: $($NewCrashes -join '; ')"