wip(step2f): coherent field -- flakes, speckle, grid, roof fixed; 3 crumbs + 636 ms left; last edits UNCOMPILED
Stopped by low memory (another app at 14 GB; processes failed with 0xC0000142). r6 (compiled and measured, owner playing during the run), step 2e -> step 2f r6: crumbs < 1 m^3 (max per profile) 2,898 -> 3 FAIL (0,0,0,0,2,1,3,2) flakes (shard share / p95 angle) 40.7% / 84.2 deg -> 2.1% / 33.1 deg pass lattice-scale detail energy 0.832 -> 0.016 pass grid signature (autocorrelation) 0.666 -> 0.349 pass min solid share / roof openings 2.7%, 26,657 -> 79.2%, 0 pass worst profile ring time 642.8 -> 636.3 ms FAIL (6 workers, 259^3) Step 2e measured 642.8 ms here vs 570 ms idle earlier: the game was costing ~12% during this run. Brick proofs + audit, seams + injected seam, 1 vs 6 worker determinism pass. After r6, feature probabilities were lowered to remove the last crumbs: NOT compiled, NOT measured. TraversalSeeds, in-game captures and the LOD-rejection figure for 2e are still to do. Reject screenshots included. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
1 parent
0a7492ffab
commit
d6555df5fa
9 files changed
+1665
-65
No files matched your search
@@ -1,6 +1,6 @@
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[ValidateSet('canonical', 'owner', 'probe', 'perf', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'parity', 'horizon', 'horizon-render', 'determinism', 'symbolize-stacks', 'region-eval', 'step2d', 'step2e')]
|
||||
[ValidateSet('canonical', 'owner', 'probe', 'perf', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'parity', 'horizon', 'horizon-render', 'determinism', 'symbolize-stacks', 'region-eval', 'step2d', 'step2e', 'step2f', 'step2f-capture')]
|
||||
[string]$Scenario = 'canonical',
|
||||
[switch]$Build,
|
||||
[switch]$EnableRender,
|
||||
@@ -22,6 +22,10 @@ param(
|
||||
[int]$HorizonLevel = 5,
|
||||
[ValidateRange(1, 100000)]
|
||||
[int]$HorizonRenderDistanceChunks = 768,
|
||||
[ValidateRange(0, 7)]
|
||||
[int]$Step2fProfile = 0,
|
||||
[ValidateSet('inside', 'wall-closeup')]
|
||||
[string]$Step2fCaptureView = 'inside',
|
||||
[ValidateSet(32, 64, 128)]
|
||||
[int]$ParityExportSize = 128,
|
||||
[string]$ParityExportTile = '',
|
||||
@@ -62,12 +66,12 @@ $AssetEvidence = @()
|
||||
$CommandletMetrics = [ordered]@{}
|
||||
$GameMetrics = [ordered]@{}
|
||||
$HorizonMetrics = [ordered]@{
|
||||
requested = $Scenario -in @('horizon', 'horizon-render')
|
||||
requested = $Scenario -in @('horizon', 'horizon-render', 'step2f-capture')
|
||||
status = 'not_run'
|
||||
level = $HorizonLevel
|
||||
render_distance_chunks = $HorizonRenderDistanceChunks
|
||||
}
|
||||
$HorizonRenderMetrics = [ordered]@{ requested = $Scenario -eq 'horizon-render'; status = 'not_run' }
|
||||
$HorizonRenderMetrics = [ordered]@{ requested = $Scenario -in @('horizon-render', 'step2f-capture'); status = 'not_run' }
|
||||
$DeterminismEvidence = [ordered]@{ requested = $Scenario -eq 'determinism'; status = 'not_run' }
|
||||
$SurfaceFallMetrics = [ordered]@{
|
||||
requested = $Scenario -eq 'surface-fall' -or
|
||||
@@ -575,7 +579,7 @@ function Sync-OwnerAssets {
|
||||
$null = Copy-Item -LiteralPath $source -Destination $target -Force -PassThru
|
||||
[void]$rows.Add([ordered]@{
|
||||
name = $assetName
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'step2d', 'step2e')
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'step2d', 'step2e', 'step2f', 'step2f-capture')
|
||||
source_path = $source
|
||||
source_sha256 = Get-Sha256 $source
|
||||
staged_path = $target
|
||||
@@ -623,7 +627,7 @@ function Get-AssetEvidence {
|
||||
$target = Join-Path $HostRoot "Content\VoxelForge\$assetName.uasset"
|
||||
[void]$rows.Add([ordered]@{
|
||||
name = $assetName
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'step2d', 'step2e')
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'step2d', 'step2e', 'step2f', 'step2f-capture')
|
||||
source_path = $source
|
||||
source_sha256 = Get-Sha256 $source
|
||||
staged_path = $target
|
||||
@@ -1526,6 +1530,33 @@ try {
|
||||
}
|
||||
}
|
||||
}
|
||||
'step2f' {
|
||||
$step2fLog = Join-Path $RunRoot 'Logs\step2f.log'
|
||||
$args = New-CommonArguments 'commandlet' $step2fLog (Merge-Cvars $baseCvars)
|
||||
$args += New-CommandletArguments $commandletOut 'walk,export' ($Assets -eq 'owner') $false 128
|
||||
$researchOut = Join-Path $PluginRoot "Saved\Research\step2f\$Label"
|
||||
$args += @('-step2f', '-regionworkers=6', ('-researchout="{0}"' -f $researchOut))
|
||||
$commandletLedger = Invoke-UnrealLaunch 'step2f-commandlet' $args `
|
||||
$step2fLog (Join-Path $RunRoot 'Logs\step2f.stdout.log') `
|
||||
(Join-Path $RunRoot 'Logs\step2f.stderr.log')
|
||||
$step2fReportPath = Join-Path $researchOut 'step2f_report.json'
|
||||
$step2fReport = Read-JsonFile $step2fReportPath
|
||||
if ($null -eq $step2fReport) {
|
||||
$CommandletMetrics = [ordered]@{ status = 'missing'; output = $researchOut; report = $step2fReportPath }
|
||||
Add-Failure "step2f did not produce $step2fReportPath"
|
||||
} else {
|
||||
$CommandletMetrics = [ordered]@{
|
||||
status = if ((Get-JsonValue $step2fReport 'pass' $false) -and $commandletLedger.status -eq 'passed') { 'passed' } else { 'failed' }
|
||||
output = $researchOut
|
||||
report = $step2fReportPath
|
||||
worst_profile_meets_600ms = Get-JsonValue $step2fReport 'worst_profile_meets_600ms' $false
|
||||
result = $step2fReport
|
||||
}
|
||||
if (-not (Get-JsonValue $step2fReport 'pass' $false)) {
|
||||
Add-Failure 'step2f geometry gates, 2e rejection audit, speed, sound proofs, seams, or determinism failed'
|
||||
}
|
||||
}
|
||||
}
|
||||
'symbolize-stacks' {
|
||||
if (([string]::IsNullOrWhiteSpace($StackSamplesPath)) -or -not (Test-Path -LiteralPath $StackSamplesPath -PathType Leaf)) {
|
||||
throw "-StackSamplesPath must name an existing raw sampler CSV."
|
||||
@@ -1591,6 +1622,47 @@ try {
|
||||
Add-Failure "horizon render did not produce a capture: $($HorizonRenderMetrics.status)"
|
||||
}
|
||||
}
|
||||
'step2f-capture' {
|
||||
$tracePath = Join-Path $RunRoot 'step2f_capture_trace.jsonl'
|
||||
$baseCvars['voxel.TestRenderDistanceChunks'] = $HorizonRenderDistanceChunks
|
||||
$baseCvars['voxel.TestMaxClipLevel'] = $HorizonLevel
|
||||
$baseCvars['voxel.StartupTraceFile'] = $tracePath
|
||||
$baseCvars['voxel.StartupTraceMaxTiles'] = 16384
|
||||
$baseCvars['voxel.TestCeilingView'] = 1
|
||||
$baseCvars['voxel.TestCeilingCaptureDelaySeconds'] = 60
|
||||
$baseCvars['voxel.TestExitSeconds'] = 120
|
||||
$baseCvars['voxel.OuterClassifierMode'] = 0
|
||||
$baseCvars['voxel.ResearchParameterizedCave'] = 1
|
||||
$baseCvars['voxel.ResearchParameterizedCaveSet'] = $Step2fProfile
|
||||
$renderLog = Join-Path $RunRoot 'Logs\step2f-capture.log'
|
||||
$args = New-CommonArguments 'game' $renderLog (Merge-Cvars $baseCvars) $true
|
||||
$gameLedger = Invoke-UnrealLaunch "step2f-profile-$Step2fProfile-$Step2fCaptureView" $args `
|
||||
$renderLog (Join-Path $RunRoot 'Logs\step2f-capture.stdout.log') `
|
||||
(Join-Path $RunRoot 'Logs\step2f-capture.stderr.log')
|
||||
$GameMetrics = Get-StreamingMetrics $renderLog
|
||||
$HorizonMetrics = Get-HorizonMetrics $tracePath $gameLedger $GameMetrics
|
||||
$HorizonRenderMetrics = Get-HorizonRenderMetrics $gameLedger $renderLog
|
||||
if ($HorizonMetrics.status -ne 'ok') {
|
||||
Add-Failure "step2f capture render trace did not settle: $($HorizonMetrics.status)"
|
||||
}
|
||||
if ($HorizonRenderMetrics.status -ne 'passed') {
|
||||
Add-Failure "step2f profile $Step2fProfile in-game capture failed: $($HorizonRenderMetrics.status)"
|
||||
} else {
|
||||
$profileNames = @('OpenVaults', 'TightNetwork', 'ChamberHalls', 'ShaftForest', 'FloatingArchipelago', 'PillaredCathedral', 'TerracedBasin', 'HyperComplex')
|
||||
$profileName = $profileNames[$Step2fProfile]
|
||||
$captureDirectory = Join-Path $PluginRoot 'Saved\Research\step2f\captures'
|
||||
Ensure-Directory $captureDirectory
|
||||
$captureName = '{0}_{1}.png' -f $profileName, $Step2fCaptureView
|
||||
$capturePath = Join-Path $captureDirectory $captureName
|
||||
$image = @($HorizonRenderMetrics.images | Sort-Object modified_utc | Select-Object -Last 1)
|
||||
if ($image.Count -eq 0 -or -not (Test-Path -LiteralPath $image[0].path -PathType Leaf)) {
|
||||
Add-Failure "step2f profile $Step2fProfile image path was missing after capture"
|
||||
} else {
|
||||
Copy-Item -LiteralPath $image[0].path -Destination $capturePath -Force
|
||||
$HorizonRenderMetrics.saved_capture = $capturePath
|
||||
}
|
||||
}
|
||||
}
|
||||
'determinism' {
|
||||
$defaultDump = Join-Path $RunRoot 'tile_hashes_default.json'
|
||||
$crtFma3OffDump = Join-Path $RunRoot 'tile_hashes_crt_fma3_off.json'
|
||||
@@ -1932,6 +2004,7 @@ $result = [ordered]@{
|
||||
commandlet = $CommandletMetrics
|
||||
region_eval = if ($Scenario -eq 'region-eval') { $CommandletMetrics } else { $null }
|
||||
step2e = if ($Scenario -eq 'step2e') { $CommandletMetrics } else { $null }
|
||||
step2f = if ($Scenario -eq 'step2f') { $CommandletMetrics } else { $null }
|
||||
game = $GameMetrics
|
||||
horizon = $HorizonMetrics
|
||||
horizon_render = $HorizonRenderMetrics
|
||||
|
||||
Reference in new issue
Block a user