core/docs/adr/ADR-0106-expert-demo-promotion-contract.md
Shay 310aed9ff0
chore: Refactor CLI and Governance Anchors (#926)
* docs: consolidate governance anchors and clean up test registries

* refactor(cli): decompose cli into dedicated modules

* test: fix broken test baselines and formatting

* docs: add domain boundary READMEs for governance anchors

* test: update baseline for determination lane

* test: fix capability_pass expectation

* test: fix CORE_SHOWCASE_SKIP_BUDGET enforcement

* chore: cleanup CLI extraction and unreachable code
2026-07-03 12:34:56 -07:00

5.3 KiB

ADR-0106 — Expert-Demo Promotion Contract

Status: Accepted Date: 2026-05-22 Author: CORE agents + reviewers Depends on: ADR-0091, ADR-0092, ADR-0093, ADR-0096, ADR-0097, ADR-0100, ADR-0101, ADR-0102


Context

Four domains now sit at reasoning-capable in the ledger (mathematics_logic, physics, systems_software, hebrew_greek_textual_reasoning). The expert_demo field on each ledger row is false and currently has no domain-aware contract behind it.

core/capability/reporting.py:418 is the only site that can flip expert_demo to true, and it does so by reading the cognition lane's public/holdout metrics regardless of which domain is being scored. This is incoherent: a math ratification cannot be promoted to expert_demo by evidence from a cognition pack it never claimed against.

Without a domain-aware contract, reasoning-capable is the ceiling — and that ceiling is "contract predicates satisfied, no fabrication, operator coverage above floor," which is not the same claim as "the system can do real expert work in this domain." External readers cannot distinguish the two, so the ratification ledger overstates what the system has actually demonstrated.

ADR-0106 closes that gap.


Decision

Introduce expert_demo as a domain-scoped, reviewer-signed capability promotion, not a global threshold.

1. Promotion predicate (domain-aware)

expert_demo = true for a ratified domain D requires all of:

  1. D is already reasoning-capable (ADR-0093 contract still holds).
  2. Every lane attached to D's ratified packs reports public and holdout splits at:
    • surface_groundedness >= 0.95
    • term_capture_rate >= 0.85
    • intent_accuracy >= 0.95
    • versor_closure_rate == 1.0
  3. D's fabrication_control lane is passed=1.0 on both public and holdout.
  4. A signed expert-demo claim exists in the reviewer registry under a new expert_demo_claims block, naming:
    • domain_id
    • evidence_lanes (list of lane ids consulted)
    • evidence_revision (git sha at promotion time)
    • signed_by (reviewer id from ADR-0092 registry)
    • claim_digest (SHA-256 over the canonical evidence bundle)
  5. The promotion is replay-deterministic: re-running the consulted lanes at evidence_revision reproduces claim_digest byte-for-byte.

If any condition fails the row stays at reasoning-capable. Promotion is never silent — it requires both mechanical thresholds AND a reviewer signature.

2. Reporting changes

core/capability/reporting.py stops consulting the cognition lane for non-cognition domains. The expert-demo branch consults the domain's own attached lanes. The cognition lane keeps its existing thresholds only when the domain under evaluation is the cognition pack itself.

3. First worked promotion

This ADR does not promote any domain. It defines the contract.

A follow-up ADR (ADR-0107, expected to be mathematics_logic) will be the first worked expert-demo promotion against the contract defined here, including the reviewer-signed claim and the SHA-pinned evidence bundle.


Invariants

expert_demo_requires_signature

No domain row may carry expert_demo=true without a corresponding entry in expert_demo_claims whose claim_digest matches the re-derived evidence.

expert_demo_domain_aware

The reporting layer must consult only lanes attached to the domain's ratified packs when computing expert_demo. Cross-domain lane bleed (e.g. cognition lane metrics deciding a math promotion) is rejected by a test gate.

expert_demo_replay_byte_equality

Re-running every consulted lane at evidence_revision must reproduce the exact JSON bytes hashed into claim_digest. A drift here demotes the row to reasoning-capable until re-signed.


Acceptance evidence

Accepted when the following land together:

  • expert_demo_claims block added to the reviewer registry schema (ADR-0092 extension, additive only)
  • domain-aware expert_demo predicate in core/capability/reporting.py
  • new test tests/test_expert_demo_contract.py covering the three invariants above
  • updated docs/adr/README.md index and "Accepted reasoning-capable domains" table noting the expert_demo column is contract-gated (not thresholded only)
  • no domain row's expert_demo field flips by this ADR — only the contract changes

Consequences

  • "Reasoning-capable" becomes an honest ceiling: it means the contract predicates hold, not that the system has demonstrated expert work.
  • Promoting a domain to expert_demo=true now requires deliberate reviewer action and replayable evidence — the same discipline that ADR-0092 imposed on reviewers themselves.
  • The ledger becomes externally legible: an outside reader can tell at a glance which domains are contract-passing versus demonstrated.
  • Opens the door to ADR-0107+ as worked promotions, starting with mathematics_logic as the smallest expert-demo proof surface.

Out of scope

  • This ADR does not change Domain Pack Contract v1 (ADR-0091).
  • This ADR does not introduce new eval lanes.
  • This ADR does not promote any existing domain — promotions are separate ADRs that consume this contract.
  • Multi-reviewer threshold signing (ADR-0105 candidate frontier) is orthogonal and remains future work.