Files
chimera-gfx-Public/tests/test_retroarch_phase10aa.py
T
Chimera GFX release export a6037502d7
phase0-ci / build-and-audit (push) Successful in 2m14s
Publish Chimera GFX source
2026-09-03 03:27:14 +02:00

62 lines
3.4 KiB
Python

#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-3.0-or-later
"""Mutation guardrails for Phase-1.0AA offline fake integration."""
from __future__ import annotations
import argparse
from copy import deepcopy
import importlib.util
from pathlib import Path
import sys
def load(path: Path):
spec = importlib.util.spec_from_file_location("phase10aa_validator", path)
assert spec and spec.loader
module = importlib.util.module_from_spec(spec); sys.modules[spec.name] = module
spec.loader.exec_module(module); return module
def main() -> int:
parser = argparse.ArgumentParser(); parser.add_argument("--root", type=Path, required=True)
args = parser.parse_args(); root = args.root.resolve()
validator = load(root / "tools/validate_retroarch_phase10aa.py")
original = validator.load_json(root / "manifests/retroarch/phase-1.0aa-offline-fake-adapter.json")
cases = []
def mutation(name, function): cases.append((name, function))
mutation("01 activation rejected", lambda r: r["activation"].update(active=True))
mutation("02 target rejected", lambda r: r["activation"].update(target_address="device.invalid"))
mutation("03 connection authority rejected", lambda r: r["authorizations"].update(ps5_connection_authorized=True))
mutation("04 request authority rejected", lambda r: r["authorizations"].update(device_request_authorized=True))
mutation("05 result authority rejected", lambda r: r["authorizations"].update(result_receive_authorized=True))
mutation("06 retry rejected", lambda r: r["authorizations"].update(automatic_retry=True))
mutation("07 reconnect rejected", lambda r: r["authorizations"].update(reconnect_authorized=True))
mutation("08 resume rejected", lambda r: r["authorizations"].update(resume_authorized=True))
mutation("09 adapter subclass rejected", lambda r: r["fake_boundary"].update(adapter_subclasses_allowed=True))
mutation("10 live protocol rejected", lambda r: r["fake_boundary"].update(live_adapter_protocol_present=True))
mutation("11 network import rejected", lambda r: r["fake_boundary"].update(network_import_present=True))
mutation("12 real clock rejected", lambda r: r["fake_boundary"].update(real_clock_present=True))
mutation("13 second send rejected", lambda r: r["ordering_contract"].update(complete_batch_send_count=2))
mutation("14 EOF completion rejected", lambda r: r["ordering_contract"].update(remote_eof="COMPLETE"))
mutation("15 early deadline rejected", lambda r: r["ordering_contract"].update(early_deadline="COMPLETE"))
mutation("16 target retention rejected", lambda r: r["evidence_contract"].update(target_retained=True))
mutation("17 physical erasure proof rejected", lambda r: r["evidence_contract"].update(physical_memory_erasure_proven=True))
mutation("18 live adapter decision rejected", lambda r: r["decision"].update(live_adapter_allowed=True))
mutation("19 device action rejected", lambda r: r["performed_actions"].update(ps5_connected=True))
mutation("20 hardware proof rejected", lambda r: r["tests"].update(hardware_claim_from_host_test=True))
failures = []
for name, mutate in cases:
value = deepcopy(original); mutate(value)
if validator.validate_record(value): print(f"PASS {name}")
else: failures.append(name); print(f"FAIL {name}: mutation accepted")
if failures: return 1
print(f"Phase-1.0AA guardrails passed: {len(cases)}")
return 0
if __name__ == "__main__":
raise SystemExit(main())