passages: exact relief skip + per-tile BVH node masks (L82); FI/TN LOD0-2 -12%
- Wall relief noise is skipped when its hard-bounded contribution cannot change the final max; mouth surface/tread noise only on paths that use it. - Exact active BVH-node masks cached per tile/passage/segment range; no per-sample lower_bound. - Full-view audit imports the exported Core plan (not the stale 26-point root route): 21,425/21,425 walkability samples pass. Cold (L80 protocol, medians) LOD0-2: SW 1.16->1.11, FI 2.86->2.51, TN 2.88->2.54, VS 1.23->1.22 s. Passage share FI 64.6->58.7%, TN 65.4->58.4%. Hashes identical (v214). TN "slowdown" from L81 not reproduced (5 pairs, 3.08 -> 2.75 s). Fast tier PASS; Linux UE host builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
9cb5e53b17
commit
f572108dc4
10 files changed
+665
-41
No files matched your search
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run the full-view surface-world passage validation against resolved routes."""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[4]
|
||||
OUT = ROOT / "Saved/Linux/l82/audits"
|
||||
DATA = ROOT / "Standalone/data/owner_world.json"
|
||||
BINARY = ROOT / "Saved/Linux/l82/bin/VoxelForgeCoreHeadless-clang19"
|
||||
RECIPE = re.compile(r"^\[WorldAssemblerRecipeAudit\] requested=surface-world "
|
||||
r"actual=surface-world .*status=PASS$", re.M)
|
||||
WALK = re.compile(r"^\[Walkability\] PASS source=resolved_core_layout (\d+)/(\d+) "
|
||||
r"compiled Core passage centerline samples remain open$", re.M)
|
||||
AUDIT = re.compile(r"^\[ResolvedPassageAudit\].*walkability=PASS$", re.M)
|
||||
SUMMARY = re.compile(r"^\[ResolvedPassageAuditSummary\].*status=PASS$", re.M)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
log = OUT / "owner-surface-world-full.log"
|
||||
command = [
|
||||
"taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--",
|
||||
"env", "VOXELFORGE_L81_PASSAGE_BOUND_PADDING_VOXELS=0", "timeout", "1740s",
|
||||
str(BINARY), str(DATA), "--workers=12", "--world-assembler-prototype",
|
||||
"--stream-benchmark", "--stream-pipeline", "--force-generate", "--clip-radius=3",
|
||||
"--max-clip-level=8", "--max-level=-1",
|
||||
"--audit-resolved-layout-passages",
|
||||
]
|
||||
start = time.monotonic()
|
||||
with log.open("w", encoding="utf-8") as stream:
|
||||
result = subprocess.run(command, cwd=ROOT, stdout=stream,
|
||||
stderr=subprocess.STDOUT, check=False, timeout=1740)
|
||||
output = log.read_text(encoding="utf-8", errors="replace")
|
||||
walk = WALK.search(output)
|
||||
rows = {
|
||||
"exit_code": result.returncode,
|
||||
"wall_s": round(time.monotonic() - start, 3),
|
||||
"recipe_pass": RECIPE.search(output) is not None,
|
||||
"canonical_walkability_pass": walk is not None,
|
||||
"canonical_center_samples": int(walk.group(2)) if walk else 0,
|
||||
"resolved_audit_passages": len(AUDIT.findall(output)),
|
||||
"resolved_audit_summary_pass": SUMMARY.search(output) is not None,
|
||||
"legacy_root_route_failure": "[WalkabilityRoute] passage=" in output,
|
||||
"log": str(log.relative_to(ROOT)),
|
||||
}
|
||||
(OUT / "summary.json").write_text(json.dumps(rows, indent=2) + "\n",
|
||||
encoding="utf-8")
|
||||
print("[L82OwnerPassageAudit] " + json.dumps(rows, sort_keys=True), flush=True)
|
||||
return 0 if (result.returncode == 0 and rows["recipe_pass"]
|
||||
and rows["canonical_walkability_pass"]
|
||||
and rows["resolved_audit_passages"] > 0
|
||||
and rows["resolved_audit_summary_pass"]
|
||||
and not rows["legacy_root_route_failure"]) else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in new issue
Block a user