"""Runtime validation entrypoint without pytest. Runs fast compile checks and the HTTP action-surface probe. """ from __future__ import annotations import argparse import py_compile import subprocess import sys from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] def _compile_targets() -> None: targets = [ PROJECT_ROOT / "models.py", PROJECT_ROOT / "client.py", PROJECT_ROOT / "server" / "app.py", PROJECT_ROOT / "server" / "sandbox.py", PROJECT_ROOT / "server" / "grader.py", PROJECT_ROOT / "server" / "fraud_hunter_env_environment.py", PROJECT_ROOT / "server" / "difficulty.py", PROJECT_ROOT / "training" / "grpo_train.py", PROJECT_ROOT / "eval.py", PROJECT_ROOT / "demo.py", PROJECT_ROOT / "scripts" / "http_surface_check.py", ] for target in targets: py_compile.compile(str(target), doraise=True) def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--base-url", default="http://localhost:8000") parser.add_argument("--seed-min", type=int, default=8001) parser.add_argument("--seed-max", type=int, default=10000) parser.add_argument("--skip-http", action="store_true") parser.add_argument("--remote-http", action="store_true") args = parser.parse_args() _compile_targets() if not args.skip_http: cmd = [ sys.executable, str(PROJECT_ROOT / "scripts" / "http_surface_check.py"), "--seed-min", str(args.seed_min), "--seed-max", str(args.seed_max), ] if args.remote_http: cmd.extend(["--remote", "--base-url", args.base_url]) subprocess.run(cmd, check=True) print("runtime validation passed") return 0 if __name__ == "__main__": raise SystemExit(main())