← Files Astral OrchestratorARCHIVED FILE
scripts/check-primary.py
7.46 KB · Oct 2, 2026 · 00:29 UTC
#!/usr/bin/env python3
"""Verify the current primary route from allowlisted local runtime evidence."""
from __future__ import annotations
import argparse
import json
import os
import re
import subprocess
import sys
from pathlib import Path
from typing import NoReturn
SCRIPT_DIR = Path(__file__).resolve().parent
if str(SCRIPT_DIR) not in sys.path:
sys.path.insert(0, str(SCRIPT_DIR))
from effort_settings import ALLOWED_EFFORTS # noqa: E402
SUPPORTED_PRIMARY_MODELS = {
"gpt-6-sol": "Sol",
"gpt-6-luna": "Luna",
"gpt-6-astra": "Astra",
"gpt-5.6-sol": "Legacy Sol",
}
PRIMARY_EFFORTS = ("none", "light", *ALLOWED_EFFORTS)
THREAD_ID_PATTERN = re.compile(
r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
)
MODEL_PATTERN = re.compile(r"[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}")
ALLOWED_STATUSES = {"match", "mismatch", "invalid", "unavailable"}
ALLOWED_REASONS = {
"primary-route-match",
"primary-route-mismatch",
"thread-id-invalid",
"thread-id-unavailable",
"sessions-directory-unavailable",
"rollout-unavailable",
"rollout-ambiguous",
"runtime-evidence-invalid",
}
def fail(message: str) -> NoReturn:
print(f"ERROR: {message}", file=sys.stderr)
raise SystemExit(1)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="Detect the supported model and effort of the current Astral primary."
)
parser.add_argument(
"--thread-id",
default=os.environ.get("CODEX_THREAD_ID"),
help="Codex thread id; defaults to CODEX_THREAD_ID.",
)
parser.add_argument(
"--sessions-dir",
type=Path,
help="Override the Codex sessions directory (intended for local inspection).",
)
parser.add_argument(
"--settings-file",
type=Path,
help=argparse.SUPPRESS,
)
strict = parser.add_mutually_exclusive_group()
strict.add_argument(
"--require-sol-ultra",
action="store_true",
help="Optionally require a Sol Ultra primary. No mode requires this flag.",
)
strict.add_argument(
"--require-astra-ultra",
action="store_true",
help="Optionally require an Astra Ultra primary. No mode requires this flag.",
)
return parser.parse_args()
def resolve_sessions_dir(configured: Path | None) -> Path:
"""Match the bundled inspector's default session location without reading rollouts."""
if configured is not None:
return configured
codex_home = os.environ.get("CODEX_HOME")
if codex_home:
return Path(codex_home).expanduser() / "sessions"
return Path.home() / ".codex" / "sessions"
def find_rollouts(sessions_dir: Path, thread_id: str) -> list[Path] | None:
"""Count only matching rollout filenames; rollout contents stay inspector-owned."""
try:
if not sessions_dir.is_dir():
return None
return [
path
for path in sessions_dir.rglob(f"rollout-*-{thread_id}.jsonl")
if path.is_file()
]
except OSError:
return None
def emit(
status: str,
reason: str,
expected_effort: str,
expected_model: str,
*,
thread_id: str | None = None,
observed_model: str | None = None,
observed_effort: str | None = None,
) -> None:
if status not in ALLOWED_STATUSES or reason not in ALLOWED_REASONS:
fail("internal primary-evidence contract error")
evidence: dict[str, str] = {
"expected_effort": expected_effort,
"expected_model": expected_model,
"reason": reason,
"status": status,
}
if thread_id is not None:
evidence["thread_id"] = thread_id
if observed_model is not None:
evidence["observed_model"] = observed_model
if observed_effort is not None:
evidence["observed_effort"] = observed_effort
print(json.dumps(evidence, separators=(",", ":"), sort_keys=True))
def main() -> int:
if sys.version_info < (3, 11):
fail("Python 3.11 or newer is required.")
args = parse_args()
strict_model = None
if args.require_sol_ultra:
strict_model = "gpt-5.6-sol"
elif args.require_astra_ultra:
strict_model = "gpt-6-astra"
expected_model = strict_model or "|".join(SUPPORTED_PRIMARY_MODELS)
expected_effort = "ultra" if strict_model else "any-supported"
thread_id = args.thread_id
if thread_id is None:
emit("unavailable", "thread-id-unavailable", expected_effort, expected_model)
return 1
if not isinstance(thread_id, str) or not THREAD_ID_PATTERN.fullmatch(thread_id):
emit("invalid", "thread-id-invalid", expected_effort, expected_model)
return 1
sessions_dir = resolve_sessions_dir(args.sessions_dir)
rollouts = find_rollouts(sessions_dir, thread_id)
if rollouts is None:
emit(
"unavailable",
"sessions-directory-unavailable",
expected_effort,
expected_model,
thread_id=thread_id,
)
return 1
if not rollouts:
emit("unavailable", "rollout-unavailable", expected_effort, expected_model, thread_id=thread_id)
return 1
if len(rollouts) != 1:
emit("invalid", "rollout-ambiguous", expected_effort, expected_model, thread_id=thread_id)
return 1
command = [
"sh",
str(SCRIPT_DIR / "inspect-agent-runtime.sh"),
"--sessions-dir",
str(sessions_dir),
"--thread-id",
thread_id,
]
inspected = subprocess.run(command, check=False, capture_output=True, text=True)
if inspected.returncode != 0:
emit(
"invalid",
"runtime-evidence-invalid",
expected_effort,
expected_model,
thread_id=thread_id,
)
return 1
try:
observed = json.loads(inspected.stdout)
except json.JSONDecodeError:
emit(
"invalid",
"runtime-evidence-invalid",
expected_effort,
expected_model,
thread_id=thread_id,
)
return 1
if not isinstance(observed, dict):
emit(
"invalid",
"runtime-evidence-invalid",
expected_effort,
expected_model,
thread_id=thread_id,
)
return 1
observed_thread_id = observed.get("thread_id")
observed_model = observed.get("model")
observed_effort = observed.get("effort")
if (
observed_thread_id != thread_id
or not isinstance(observed_model, str)
or not MODEL_PATTERN.fullmatch(observed_model)
or not isinstance(observed_effort, str)
or observed_effort not in PRIMARY_EFFORTS
):
emit(
"invalid",
"runtime-evidence-invalid",
expected_effort,
expected_model,
thread_id=thread_id,
)
return 1
if strict_model is None:
expected_effort = observed_effort
matches_model = observed_model in SUPPORTED_PRIMARY_MODELS
if strict_model is not None:
matches_model = observed_model == strict_model
matches = matches_model and observed_effort == expected_effort
emit(
"match" if matches else "mismatch",
"primary-route-match" if matches else "primary-route-mismatch",
expected_effort,
expected_model,
thread_id=thread_id,
observed_model=observed_model,
observed_effort=observed_effort,
)
return 0 if matches else 1
if __name__ == "__main__":
raise SystemExit(main())
SHA-256: 57d4924e85981eeceb00b189b7834834adf4d275e6d30731c6a5ecaacd95791a