55 lines
2.4 KiB
Python
55 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
"""Validate Phase-1.0AP against current official Git objects."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import hashlib
|
|
import json
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
|
|
def git(repo: Path, *args: str) -> str:
|
|
return subprocess.run(["git", *args], cwd=repo, check=True,
|
|
capture_output=True, text=True).stdout.strip()
|
|
|
|
|
|
def check_blob(repo: Path, commit: str, path: str,
|
|
expected_blob: str, expected_size: int) -> None:
|
|
spec = f"{commit}:{path}"
|
|
assert git(repo, "rev-parse", spec) == expected_blob
|
|
assert int(git(repo, "cat-file", "-s", spec)) == expected_size
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--root", type=Path, required=True)
|
|
parser.add_argument("--sdk-root", type=Path, required=True)
|
|
parser.add_argument("--shsrv-root", type=Path, required=True)
|
|
args = parser.parse_args()
|
|
data = json.loads((args.root / "manifests/retroarch/phase-1.0ap-worker-feasibility-audit.json").read_text(encoding="utf-8"))
|
|
bindings = data["source_bindings"]
|
|
assert hashlib.sha256((args.root / "manifests/retroarch/phase-1.0ao-worker-supervisor-model.json").read_bytes()).hexdigest() == bindings["phase10ao_manifest_sha256"]
|
|
check_blob(args.sdk_root, bindings["sdk_commit"], "include/freebsd/unistd.h",
|
|
bindings["sdk_unistd_blob"], bindings["sdk_unistd_size"])
|
|
check_blob(args.sdk_root, bindings["sdk_commit"], "crt/syscall.h",
|
|
bindings["sdk_syscall_blob"], bindings["sdk_syscall_size"])
|
|
for prefix, path in (("shsrv_builtin", "builtin.c"),
|
|
("shsrv_elfldr", "elfldr.c"),
|
|
("shsrv_shell", "sh.c"), ("shsrv_pt", "pt.c")):
|
|
check_blob(args.shsrv_root, bindings["shsrv_commit"], path,
|
|
bindings[f"{prefix}_blob"], bindings[f"{prefix}_size"])
|
|
assert data["worker_creation"]["classification"] == "STRONG_SOURCE_CANDIDATE_NOT_RUNTIME_PROOF"
|
|
assert data["preemption"]["waitpid_calls_are_bounded"] is False
|
|
assert data["result_channel"]["fixed_size_worker_result_record_present"] is False
|
|
assert not any(data["authorizations"].values())
|
|
assert data["decision"]["target_worker_architecture_feasible"] is False
|
|
print("Phase-1.0AP worker feasibility audit validation passed")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|