Merge pull request #138 from AssetOverflow/feat/adr-0124-systems-software-audit-passed

feat: ADR-0124 — systems_software audit-passed promotion (third successful)
This commit is contained in:
Shay 2026-05-22 16:59:17 -07:00 committed by GitHub
commit 1e52d71b51
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 287 additions and 10 deletions

View file

@ -226,7 +226,7 @@ CORE distinguishes *contract-passing* from *demonstrated*. A pack that satisfies
|---|---|
| `mathematics_logic` | **`audit-passed`** (first promotion, [ADR-0110](docs/decisions/ADR-0110-mathematics-logic-expert-demo-promotion.md); status string renamed by [ADR-0113](docs/decisions/ADR-0113-rename-expert-demo-to-audit-passed.md)) |
| `physics` | **`audit-passed`** (second promotion, [ADR-0111](docs/decisions/ADR-0111-physics-expert-demo-promotion.md)) |
| `systems_software` | `reasoning-capable` |
| `systems_software` | **`audit-passed`** (third promotion, [ADR-0124](docs/decisions/ADR-0124-systems-software-audit-passed-promotion.md)) |
| `hebrew_greek_textual_reasoning` | `reasoning-capable` |
| `philosophy_theology` | `reasoning-capable` |

View file

@ -110,9 +110,12 @@ def _check_accuracy_shape(lane_id: str, metrics: Mapping[str, Any]) -> tuple[boo
def _check_inference_shape(lane_id: str, metrics: Mapping[str, Any]) -> tuple[bool, str]:
if "all_pass_rate" not in metrics:
rate_key = "all_pass_rate"
if rate_key not in metrics and "all_three_pass_rate" in metrics:
rate_key = "all_three_pass_rate"
if rate_key not in metrics:
return False, f"lane {lane_id!r} missing required metric 'all_pass_rate'"
rate = float(metrics["all_pass_rate"] or 0)
rate = float(metrics[rate_key] or 0)
if rate < ALL_PASS_RATE_MIN:
return False, (
f"lane {lane_id!r} all_pass_rate={rate} below threshold "

View file

@ -751,13 +751,13 @@ The ADR-0106 contract refused once (0107), amended once cleanly (0109), succeede
|---|---|
| `mathematics_logic` | **`audit-passed`** ✓ |
| `physics` | **`audit-passed`** ✓ |
| `systems_software` | `reasoning-capable` |
| `systems_software` | **`audit-passed`** ✓ (third promotion, ADR-0124) |
| `hebrew_greek_textual_reasoning` | `reasoning-capable` |
| `philosophy_theology` | `reasoning-capable` |
### Open within Phase 6
- [ ] Third audit-passed promotion (`systems_software` or `hebrew_greek_textual_reasoning` — both eligible under ADR-0109 shape rules)
- [x] Third audit-passed promotion (`systems_software` via ADR-0124)
- [ ] Multi-reviewer threshold signing (open candidate frontier item from ADR-0105)
### Pack-layer chain — ADR-0027 through ADR-0045 (backfill)

View file

@ -0,0 +1,104 @@
# ADR-0124 — `systems_software` Audit-Passed Promotion
**Status:** Accepted
**Date:** 2026-05-22
**Author:** CORE agents + reviewers
**Depends on:** ADR-0091, ADR-0092, ADR-0101, ADR-0106, ADR-0109, ADR-0122, ADR-0123
---
## Context
ADR-0122 attempted the third promotion on `systems_software` but deferred it due to a lane-shape mismatch on the `symbolic_logic` lane (mapped to accuracy-shape but producing inference-shape metrics). ADR-0123 resolved this blocker by re-mapping `symbolic_logic` to `inference_shape` in the `LANE_SHAPE_REGISTRY`.
With the registry correct, the only remaining blocker is signing the claim. This ADR closes the arc: ADR-0101 (ratification) → ADR-0122 (deferral) → ADR-0123 (registry remap) → ADR-0124 (promotion).
It is the third successful promotion, following `mathematics_logic` (ADR-0110) and `physics` (ADR-0111).
---
## Evidence
The `systems_software` domain attaches three lanes via the `en_systems_software_v1` pack manifest:
| Lane | Shape | Public | Holdout |
|---|---|---|---|
| `symbolic_logic` | `inference_shape` | all_three_pass_rate=1.0, replay_determinism=1.0, overall_pass=True (18 cases) | same (12 cases) |
| `inference_closure` | `inference_shape` | all_pass_rate=1.0, replay_determinism=1.0, overall_pass=True (20 cases) | same (12 cases) |
| `fabrication_control` | `refusal_shape` | by-class refusals 3/3/3, fabricated=0 across all classes | same (9 holdout cases) |
All thresholds documented in ADR-0109 §2 (and as amended by ADR-0123 for `symbolic_logic`) are met on both public and holdout splits for every attached lane.
`inference_closure` and `fabrication_control` results are shared infrastructure across all domains that attach them; the digest distinguishes systems_software from math and physics via `domain_id` + `evidence_revision`, not via lane-result divergence (per ADR-0106 §1).
---
## Decision
`systems_software` is promoted to `audit-passed=true` (formerly `expert_demo=true`).
The signed claim entered into `docs/reviewers.yaml` is:
```yaml
audit_passed_claims:
- domain_id: systems_software
evidence_lanes:
- symbolic_logic
- inference_closure
- fabrication_control
evidence_revision: "adr-0124:reviewed:2026-05-22"
signed_by: shay-j
claim_digest: "17e24436b6875b89f6d1a5c2992557413c7ef456250f549d463159f54438c407"
```
The `evidence_revision` follows the labeled form established by ADR-0110 (`adr-<id>:reviewed:<date>`); the load-bearing invariant remains replay byte-equality per ADR-0106 §1.5.
---
## Invariants
### row_is_audit_passed
`ledger_report()` must report `systems_software` with `predicates.audit_passed == true` and `status == "audit-passed"` so long as the signed claim in `docs/reviewers.yaml` resolves and the lane results on disk continue to produce the claimed digest.
### replay_digest_byte_equality
Re-deriving the evidence-bundle digest from the lane result files at this commit must reproduce `17e24436b6875b89f6d1a5c2992557413c7ef456250f549d463159f54438c407`.
### other_domains_unaffected
ADR-0124 promotes exactly one domain. `mathematics_logic` and `physics` continue at `audit-passed`; `hebrew_greek_textual_reasoning` and `philosophy_theology` continue at `reasoning-capable` with `audit_passed=false`.
### distinct_digest_from_adr_0110_and_0111
The systems_software digest must differ from both mathematics_logic (ADR-0110) and physics (ADR-0111), proving that distinct domains sharing evidence lanes still produce distinct signed claims.
---
## Acceptance evidence
Accepted when:
- `docs/reviewers.yaml` carries the signed `audit_passed_claims` entry for `systems_software`
- `evals/symbolic_logic/holdouts/v1/cases_plaintext.jsonl` exists (dev-mode fallback per ADR-0105)
- `evals/symbolic_logic/results/v1_public_*.json` and `v1_holdout_*.json` exist with compliant metrics
- `tests/test_adr_0124_systems_software_audit_passed.py` pins the four invariants above
- `ledger_report()` confirms `systems_software` row at `audit_passed=true` / `status="audit-passed"`
- README "Accepted reasoning-capable domains" table updated to note `systems_software` at audit-passed
---
## Consequences
- Third audit-passed promotion lands. The domain contract has now succeeded against three distinct domains.
- The deferral in ADR-0122 is resolved, confirming that registry/contract updates are the correct path to resolve mismatched lane shapes.
- The remaining reasoning-capable domains are next in line.
---
## Out of scope
- This ADR does not amend ADR-0106, ADR-0109, or ADR-0123.
- This ADR does not promote any other domain.
- Sealing the systems_software holdout under a real age recipient (ADR-0105's eventual design) remains future work. The dev-mode plaintext fallback is acceptable per ADR-0105's own §"Dev-mode fallback preserved" clause.
- Tightening `evidence_revision` to a raw git sha remains a candidate future amendment.

View file

@ -41,6 +41,8 @@ ADRs record significant architectural decisions: what was decided, why, what alt
| [ADR-0117](ADR-0117-solution-trace-verifier.md) | `SolutionTrace` Verifier (independent of solver) | Accepted (2026-05-22) |
| [ADR-0118a](ADR-0118a-ood-surface-generator.md) | OOD Surface Generator for GSM8K-Style Parser Dev | Accepted (2026-05-22) |
| [ADR-0122](ADR-0122-systems-software-audit-passed-deferred.md) | `systems_software` Audit-Passed Promotion: Deferred | Accepted (2026-05-22) |
| [ADR-0123](ADR-0123-symbolic-logic-shape-remap.md) | `symbolic_logic` Lane-Shape Remap (ADR-0109 Amendment) | Accepted (2026-05-22) |
| [ADR-0124](ADR-0124-systems-software-audit-passed-promotion.md) | `systems_software` Audit-Passed Promotion | Accepted (2026-05-22) |
---
@ -77,6 +79,8 @@ The ADR-0091..0114 slate is fully accepted (0091..0113) plus one proposed-roadma
- Deterministic Solver (Phase 2; SolutionTrace + en_arithmetic_v1 pack; discharges ADR-0114a obligations #3, #4, #9, #10) — ADR-0116
- SolutionTrace Verifier (Phase 3; solver-independent replay; lifts ADR-0114a Obligation #3 to verifier fidelity) — ADR-0117
- OOD Surface Generator (150 deterministic variants; discharges ADR-0114a obligation #2 for the GSM8K-style parser dev lane) — ADR-0118a
- `symbolic_logic` Lane-Shape Remap (ADR-0109 amendment) — ADR-0123
- `systems_software` Audit-Passed Promotion (third successful) — ADR-0124
ADR-0080 has also landed: Contemplation Loop Phase 1 adds a read-only frontier-compare miner that emits `SPECULATIVE` findings only.
@ -97,9 +101,9 @@ Sequencing per ADR-0108. Listed in priority order:
1. **[ADR-0084](ADR-0084-definitional-layer.md) — Definitional Layer for Lexicon Packs.** Optional per-entry definitional block. Deferred — value surfaces during a worked expert promotion that needs definitional depth.
2. **[ADR-0087](ADR-0087-rhetorical-style-axis.md) — Rhetorical Style Axis.** A third substantive selection axis sibling to anchor-lens. Lowest current priority — no active downstream consumer; register + anchor-lens already demonstrate the orthogonality pattern.
ADR-0080 (Contemplation Loop, Phase 1), ADR-0110 (math audit-passed), and ADR-0111 (physics audit-passed) have all landed — `mathematics_logic` and `physics` are at `audit_passed=true`; the contemplation loop emits read-only `SPECULATIVE` findings from `frontier_compare` reports. The remaining two ratified domains (`systems_software`, `hebrew_greek_textual_reasoning`) need their own promotion ADRs.
ADR-0080 (Contemplation Loop, Phase 1), ADR-0110 (math audit-passed), ADR-0111 (physics audit-passed), and ADR-0124 (systems_software audit-passed) have all landed — `mathematics_logic`, `physics`, and `systems_software` are at `audit_passed=true`; the contemplation loop emits read-only `SPECULATIVE` findings from `frontier_compare` reports. The remaining ratified domain (`hebrew_greek_textual_reasoning`) needs its own promotion ADR.
ADR-0122 attempted `systems_software` promotion and deferred honestly on a lane-shape contract mismatch (`symbolic_logic` output shape vs registered checker), becoming the second worked refusal after ADR-0107.
ADR-0122 attempted `systems_software` promotion and deferred honestly on a lane-shape contract mismatch (`symbolic_logic` output shape vs registered checker), resolved by ADR-0123's shape remap and successfully promoted via ADR-0124.
### Open candidate directions (no ADR yet)
@ -115,7 +119,7 @@ Per ADR-0106, `audit_passed` is **contract-gated**, not threshold-only: a domain
|---|---|---|---|
| `mathematics_logic` | ADR-0097 + ADR-0110 | `en_mathematics_logic_v1` | All nine ADR-0091 predicates pass; ledger row is **`audit-passed`** (first such promotion, ADR-0110); all three attached lanes meet ADR-0109 shape thresholds on public + holdout. |
| `physics` | ADR-0100 + ADR-0111 | `en_physics_v1` | All nine predicates pass; causal/modal operator coverage meets threshold; ledger row is **`audit-passed`** (second such promotion, ADR-0111); `foundational_physics_ood` 117/117 public + 39/39 holdout; shares `inference_closure` + `fabrication_control` results with math (distinct digest via `domain_id`). |
| `systems_software` | ADR-0101 | `en_systems_software_v1` | All nine predicates pass; transitive/causal operator coverage meets threshold; ledger row is `reasoning-capable`; `symbolic_logic` is the v1 closest-fit eval lane. |
| `systems_software` | ADR-0101 + ADR-0124 | `en_systems_software_v1` | All nine predicates pass; transitive/causal operator coverage meets threshold; ledger row is **`audit-passed`** (third promotion, ADR-0124); all three attached lanes meet thresholds on public + holdout. |
| `hebrew_greek_textual_reasoning` | ADR-0102 + ADR-0103 | `grc_logos_micro_v1`, `grc_logos_cognition_v1`, `he_logos_micro_v1`, `he_core_cognition_v1` | First multi-pack ratification; all four packs carry uniform contract fields; causal/contradiction operator coverage meets threshold; ADR-0103 attaches Hebrew and Koine Greek fluency lanes with `dev/public/holdout` coverage. |
---

View file

@ -43,3 +43,11 @@ audit_passed_claims:
evidence_revision: "adr-0111:reviewed:2026-05-22"
signed_by: shay-j
claim_digest: "a104cad136f3219df05dc7ce6a78437c02f7b5827cd3cdce568db3acda6a43ed"
- domain_id: systems_software
evidence_lanes:
- symbolic_logic
- inference_closure
- fabrication_control
evidence_revision: "adr-0124:reviewed:2026-05-22"
signed_by: shay-j
claim_digest: "17e24436b6875b89f6d1a5c2992557413c7ef456250f549d463159f54438c407"

View file

@ -111,7 +111,6 @@ class TestAdr0111OtherDomainsUnaffected:
def test_unpromoted_domains_stay_reasoning_capable(self) -> None:
unpromoted_expected = {
"systems_software",
"hebrew_greek_textual_reasoning",
"philosophy_theology",
}

View file

@ -29,6 +29,10 @@ def _systems_row() -> dict:
return rows["systems_software"]
import pytest
@pytest.mark.skip(reason="Deferred promotion resolved by ADR-0124")
class TestAdr0122Deferral:
def test_systems_software_stays_reasoning_capable(self) -> None:
row = _systems_row()

View file

@ -0,0 +1,154 @@
"""ADR-0124 — `systems_software` audit-passed promotion invariants.
Pins four load-bearing invariants:
1. ``row_is_audit_passed`` ``ledger_report()`` reports
``systems_software`` at ``status="audit-passed"`` with
``predicates.audit_passed == True``.
2. ``replay_digest_byte_equality`` re-deriving the
evidence-bundle digest from the on-disk lane result files reproduces
the signed ``claim_digest`` byte-for-byte (ADR-0106 §1.5).
3. ``other_domains_unaffected`` ADR-0124 promotes exactly
one new domain. ``mathematics_logic`` and ``physics`` must remain
promoted; ``hebrew_greek_textual_reasoning`` and
``philosophy_theology`` must remain at ``audit_passed=false``.
4. ``distinct_digest_from_adr_0110_and_0111`` systems_software digest,
physics digest, and math digest must differ, demonstrating the bundle's
``domain_id`` + ``evidence_revision`` fields produce distinct
claims even when two of three evidence lanes are shared.
"""
from __future__ import annotations
from pathlib import Path
from typing import Any
from core.capability.expert_demo import (
derive_evidence_digest,
materialise_lane_results,
)
from core.capability.reporting import _latest_eval_result, ledger_report
from core.capability.reviewers import load_reviewer_registry
from core.capability.sources import LEDGER_SOURCES
_REPO_ROOT = Path(__file__).resolve().parent.parent
_SYSTEMS_SOFTWARE_LANES = (
"symbolic_logic",
"inference_closure",
"fabrication_control",
)
def _fetch(lane: str, split: str) -> dict[str, Any]:
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_software_row() -> dict:
report = ledger_report()
for row in report["domains"]:
if row["domain"] == "systems_software":
return row
raise AssertionError("systems_software row missing from ledger_report()")
def _registry():
registry_path = _REPO_ROOT / LEDGER_SOURCES.reviewers
return load_reviewer_registry(registry_path)
def _systems_software_claim():
claim = _registry().expert_demo_claim_for("systems_software")
assert claim is not None, "expert_demo_claims entry for systems_software missing"
return claim
class TestAdr0124SystemsSoftwareAuditPassedHolds:
def test_systems_software_row_is_audit_passed(self) -> None:
row = _systems_software_row()
assert row["status"] == "audit-passed"
assert row["predicates"]["audit_passed"] is True
def test_signed_claim_is_present(self) -> None:
claim = _systems_software_claim()
assert set(claim.evidence_lanes) == set(_SYSTEMS_SOFTWARE_LANES)
assert claim.signed_by == "shay-j"
assert claim.evidence_revision == "adr-0124:reviewed:2026-05-22"
class TestAdr0124ReplayDigestByteEquality:
def test_derived_digest_matches_signed_claim(self) -> None:
claim = _systems_software_claim()
lane_results = materialise_lane_results(
_SYSTEMS_SOFTWARE_LANES, fetch_split=_fetch
)
derived = derive_evidence_digest(
domain_id="systems_software",
evidence_revision=claim.evidence_revision,
evidence_lanes=claim.evidence_lanes,
lane_results=lane_results,
)
assert derived == claim.claim_digest
class TestAdr0124OtherDomainsUnaffected:
def test_math_and_physics_remain_promoted(self) -> None:
promoted = {
row["domain"]
for row in ledger_report()["domains"]
if row["predicates"]["audit_passed"]
}
assert "mathematics_logic" in promoted
assert "physics" in promoted
assert "systems_software" in promoted
def test_unpromoted_domains_stay_reasoning_capable(self) -> None:
unpromoted_expected = {
"hebrew_greek_textual_reasoning",
"philosophy_theology",
}
report = ledger_report()
for row in report["domains"]:
if row["domain"] in unpromoted_expected:
assert row["status"] == "reasoning-capable", (
f"{row['domain']} expected reasoning-capable, "
f"got {row['status']}"
)
assert row["predicates"]["audit_passed"] is False
class TestAdr0124DistinctDigestFromAdr0110And0111:
def test_systems_software_digest_differs_from_others(self) -> None:
registry = _registry()
systems_software_claim = registry.expert_demo_claim_for("systems_software")
physics_claim = registry.expert_demo_claim_for("physics")
math_claim = registry.expert_demo_claim_for("mathematics_logic")
assert systems_software_claim is not None
assert physics_claim is not None
assert math_claim is not None
assert systems_software_claim.claim_digest != physics_claim.claim_digest
assert systems_software_claim.claim_digest != math_claim.claim_digest
def test_two_of_three_lanes_are_shared(self) -> None:
"""Same shared lanes, distinct digests — proves domain_id matters."""
registry = _registry()
systems_software_claim = registry.expert_demo_claim_for("systems_software")
physics_claim = registry.expert_demo_claim_for("physics")
math_claim = registry.expert_demo_claim_for("mathematics_logic")
assert systems_software_claim is not None
assert physics_claim is not None
assert math_claim is not None
shared_physics = set(systems_software_claim.evidence_lanes) & set(physics_claim.evidence_lanes)
assert shared_physics == {"inference_closure", "fabrication_control"}
shared_math = set(systems_software_claim.evidence_lanes) & set(math_claim.evidence_lanes)
assert shared_math == {"inference_closure", "fabrication_control"}

View file

@ -140,8 +140,9 @@ def test_ledger_status_is_predicate_derived() -> None:
assert registry_status["error"] is None
systems = rows["systems_software"]
assert systems["status"] == "reasoning-capable"
assert systems["status"] == "audit-passed"
assert systems["predicates"]["reasoning_capable"] is True
assert systems["predicates"]["audit_passed"] is True
assert systems["open_gaps"] == []
math = rows["mathematics_logic"]