core/core/capability
Shay 7784c39f9f feat(capability): implement ADR-0093 — Domain Pack Contract v1 wired in
Promotes ADR-0091 from proposed-but-unenforced to enforced. The CLI
command core capability domain-contract now runs the nine ADR-0091
predicates plus eval-lane artifact resolution; legacy structural-only
output remains available via --structural-only.

- new core/capability/domain_contract_predicates.py:
  evaluate_domain_contract(pack_id, *, data_root, chain_inventory,
  reviewer_registry) → DomainContractPredicateReport
- predicates wired:
  P1 manifest/checksum valid (via language_packs.compiler.load_pack)
  P2 gloss checksum (gloss-bearing packs only; otherwise vacuously pass)
  P3 domain_id ∈ DOMAIN_PACKS
  P4 teaching_chains entries ∈ TEACHING_CORPORA ∪ DOMAIN_CAPABILITY_CORPORA
  P5 ≥ 8 reviewed chains per claimed operator family from chain_report
  P6 ≥ 3 populated intent shapes per domain
  P7 every eval_lanes entry covers dev/public/holdout
  P8 reviewers resolve via ADR-0092 registry (consults can_review with
     scope='pack' and domain_id from contract)
  P9 known_gaps reference docs/gaps.md entries marked closed [x]
- _parse_gap_states reads docs/gaps.md format (- [x] / - [ ]) → {gap_id: closed?}
- _resolve_eval_lane_artifacts walks declared eval_lanes and surfaces
  per-split report path + SHA-256 (ADR-0093 item 4)
- CLI: cmd_capability_domain_contract now exits non-zero on any
  predicate failure; --structural-only preserves legacy behavior
- core.capability package re-exports new symbols (PredicateResult,
  DomainContractPredicateReport, evaluate_domain_contract)
- 24 unit tests covering contract presence/absence, each predicate
  positive + negative, gap parser, eval lane artifact surfacing,
  CLI default + structural-only paths, and determinism
- new evals/domain_contract_validation/ lane: 9 cases (positive +
  one negative per semantic predicate P3-P9 + determinism) passing
  9/9 byte-identical across runs (sha256 f9c06cde…)
- smoke 67/67, teaching 17/17, cognition 120/121 (pre-existing skip),
  ADR-0092..0095 tests 101/101; cognition eval byte-identical
  100/100/100/100
2026-05-21 18:33:23 -07:00
..
__init__.py feat(capability): implement ADR-0093 — Domain Pack Contract v1 wired in 2026-05-21 18:33:23 -07:00
domain_contract_predicates.py feat(capability): implement ADR-0093 — Domain Pack Contract v1 wired in 2026-05-21 18:33:23 -07:00
domains.py Add chain-first capability ledger and domain seeds (#97) 2026-05-20 21:33:24 -07:00
README.md Add chain-first capability ledger and domain seeds (#97) 2026-05-20 21:33:24 -07:00
reporting.py feat(capability): implement ADR-0092 — Reviewer Registry v1 2026-05-21 18:01:24 -07:00
reviewers.py feat(capability): implement ADR-0092 — Reviewer Registry v1 2026-05-21 18:01:24 -07:00
sources.py Add chain-first capability ledger and domain seeds (#97) 2026-05-20 21:33:24 -07:00

Capability Reports

Phase A-C adds read-only capability reports. These commands do not mutate packs, execute dynamic validators, or flip dormant runtime flags.

Available commands:

  • core capability chains --json
  • core capability flags --json
  • core capability ledger --json
  • core capability artifact --lane cognition --split public --version v1 --json
  • core capability domain-contract --pack-id en_core_cognition_v1 --json
  • core capability evidence-plan --json

Day-1 output is expected to be low-status:

Domain Expected status Primary blocker
systems_software reasoning-capable expert-demo still gated by domain eval thresholds and replay/provenance evidence
mathematics_logic reasoning-capable expert-demo still gated by domain eval thresholds and replay/provenance evidence
physics reasoning-capable expert-demo still gated by domain eval thresholds and replay/provenance evidence
hebrew_greek_textual_reasoning reasoning-capable expert-demo still gated by eval thresholds and replay/provenance evidence
philosophy_theology reasoning-capable expert-demo still gated by eval thresholds and replay/provenance evidence

Status is generated from predicates. A blocked row lifts only when the named gap is closed and the next status predicate passes.