74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
"""ADR-0122 — systems_software audit-passed promotion deferred.
|
|
|
|
Pins the deferral invariants:
|
|
|
|
1. systems_software stays reasoning-capable with audit_passed=false.
|
|
2. The blocker is the named symbolic_logic shape mismatch.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from core.capability.expert_demo import evaluate_expert_demo, materialise_lane_results
|
|
from core.capability.reporting import _latest_eval_result, ledger_report
|
|
from core.capability.reviewers import ExpertDemoClaim, Reviewer, ReviewerRegistry
|
|
|
|
|
|
_SYSTEMS_LANES = ("symbolic_logic", "inference_closure", "fabrication_control")
|
|
|
|
|
|
def _fetch(lane: str, split: str) -> dict[str, object]:
|
|
payload = _latest_eval_result(lane, "v1", split)
|
|
metrics = dict(payload.get("metrics", {}) or {})
|
|
if "by_class" not in metrics and "by_class" in payload:
|
|
metrics["by_class"] = payload["by_class"]
|
|
return metrics
|
|
|
|
|
|
def _systems_row() -> dict:
|
|
rows = {row["domain"]: row for row in ledger_report()["domains"]}
|
|
return rows["systems_software"]
|
|
|
|
|
|
class TestAdr0122Deferral:
|
|
def test_systems_software_stays_reasoning_capable(self) -> None:
|
|
row = _systems_row()
|
|
assert row["status"] == "reasoning-capable"
|
|
assert row["predicates"]["reasoning_capable"] is True
|
|
assert row["predicates"]["audit_passed"] is False
|
|
|
|
def test_named_blocker_matches_gate_reason(self) -> None:
|
|
reviewer = Reviewer(
|
|
reviewer_id="shay-j",
|
|
display_name="Joshua Shay",
|
|
role="primary",
|
|
domains=("*",),
|
|
review_scope=("pack", "proposal", "chain", "eval"),
|
|
provenance="adr-0092:bootstrap:2026-05-21",
|
|
)
|
|
claim = ExpertDemoClaim(
|
|
domain_id="systems_software",
|
|
evidence_lanes=_SYSTEMS_LANES,
|
|
evidence_revision="adr-0122:reviewed:2026-05-22",
|
|
signed_by="shay-j",
|
|
claim_digest="0" * 64,
|
|
)
|
|
registry = ReviewerRegistry(
|
|
schema_version=1,
|
|
reviewers=(reviewer,),
|
|
expert_demo_claims=(claim,),
|
|
)
|
|
lane_results = materialise_lane_results(_SYSTEMS_LANES, fetch_split=_fetch)
|
|
|
|
verdict = evaluate_expert_demo(
|
|
domain_id="systems_software",
|
|
reasoning_capable=True,
|
|
registry=registry,
|
|
domain_lanes=_SYSTEMS_LANES,
|
|
lane_results=lane_results,
|
|
)
|
|
|
|
assert verdict.passed is False
|
|
assert (
|
|
verdict.reason
|
|
== "lane 'symbolic_logic' missing accuracy (and no passed/total fallback) (split=public)"
|
|
)
|