Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux70/RunHeadlessArrivalBenchmarksL70.py
T
Fr0zkaandClaude Opus 5.5 bd68aee1ca parity: Unreal and headless resolve the same four-strate plan (L70, v214)
- Export commandlet writes the live Core adapter's world_assembly + resolved layout pair;
  the headless owner path imports that pair (manifest/layout equal, layout_chunk_width_q
  validated). owner_world.json re-exported from the owner's staged assets on the Linux host.
- Adapter SW route: Core clearance/radius floors, 0.5 m support search, outward-facing
  tie-break; passage mouth/mid radius floors match Core (36/24 owner voxels).
- FI in Unreal now uses the legacy (compiled analytic) generator unless a plan is imported:
  the auto native-FI plan failed the passage audit on the owner plan (1843 blocked samples,
  945 open-air violations). Owner decides whether native FI returns.
- In-engine spawn traces per strate (3 each): SW GenerateTile 42.7 worker-s vs 20.1 headless
  for equal tile counts; LOD0 p95 45-169 ms in UE.
- Fast tier green; all three passages pass on the shared plan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
2026-10-27 06:22:48 +01:00

47 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""Benchmark the exact exported owner plan at its four arrivals."""
from __future__ import annotations
import subprocess
from pathlib import Path
ROOT = Path(__file__).resolve().parents[4]
OWNER = ROOT / "Standalone/data/owner_world.json"
BIN = ROOT / "Saved/Linux/l70/bin/VoxelForgeCoreHeadless-l70-clang"
OUT = ROOT / "Saved/Linux/l70/headless-arrivals"
SPAWNS_M = {
0: (8.0, 16.0, -372.2626953125),
1: (25.8369140625, 3.19921875, -737.0),
2: (19.166015625, -14.2001953125, -753.3740234375),
3: (-20.0625, -5.068359375, -900.353515625),
}
def main() -> int:
if not BIN.is_file() or not OWNER.is_file():
raise SystemExit(f"missing headless binary or owner export: {BIN} {OWNER}")
OUT.mkdir(parents=True, exist_ok=True)
result_codes = []
for strate, spawn in SPAWNS_M.items():
camera = ",".join([*(f"{x:.9f}" for x in spawn), "0", "0"])
log = OUT / f"strate{strate}.log"
command = [
str(BIN), str(OWNER), "--world-assembler-prototype", "--stream-benchmark",
"--stream-pipeline", "--force-generate", "--workers=12", "--clip-radius=3",
"--max-clip-level=8", "--max-level=8", f"--camera={camera}",
]
wrapped = ["taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--",
"timeout", "1740s", *command]
with log.open("w", encoding="utf-8") as stream:
result = subprocess.run(wrapped, cwd=ROOT, stdout=stream,
stderr=subprocess.STDOUT, timeout=1740, check=False)
result_codes.append(result.returncode)
print(f"[L70HeadlessArrival] strate={strate} camera_m={camera} exit={result.returncode} log={log}",
flush=True)
return 0 if all(code == 0 for code in result_codes) else 2
if __name__ == "__main__":
raise SystemExit(main())