core/docs/decisions/ADR-0168.1-math-frameclaim-proposal-adapter.md

276 lines
6.9 KiB
Markdown

# ADR-0168.1 — MathFrameClaimProposal Adapter
**Status:** Proposed (design bridge; no runtime FrameClaim admission in this PR)
**Date:** 2026-05-27
**Author:** Shay
**Parent:** [ADR-0168](./ADR-0168-frameclaim-ratification.md)
**Related:** ADR-0057, ADR-0167, ADR-0163, ADR-0164, ADR-0166
---
## Context
ADR-0168 identified a required compatibility bridge before any FrameClaim
implementation can land.
ADR-0057 ordinary `TeachingChainProposal` eligibility requires a reviewed
`source="corpus"` evidence pointer. That is correct for cognition teaching
chains, where the claim is grounded in reviewed teaching-corpus material.
Math-domain FrameClaims originate elsewhere:
```text
MathReaderRefusalEvidence / audit rows
```
Those rows are legitimate evidence of a teachable gap, but they are not
cognition corpus evidence and must never be laundered into cognition corpus
pointers.
Therefore FrameClaim cannot simply reuse ordinary `TeachingChainProposal`
as-is without either:
1. weakening ADR-0057's reviewed-evidence floor, or
2. falsely treating audit evidence as cognition corpus evidence.
Both are forbidden.
---
## Decision
Choose a math-specific proposal/ratification adapter:
```text
MathFrameClaimProposal
```
instead of creating a reviewed math corpus artifact first.
This adapter preserves ADR-0057's discipline:
- append-only proposal log
- replay-equivalence/admissibility as precondition, not permission
- explicit operator review before mutation
- no deletion
- no auto-accept
- no active-pack mutation during replay
but gives math-domain audit evidence its own honest evidence floor.
---
## Why not a reviewed math corpus first?
A reviewed math corpus may eventually be useful, but it is premature for the
first FrameClaim bridge.
Creating it now would require deciding:
- corpus schema
- corpus lifecycle
- corpus indexing semantics
- corpus replay integration
- whether frame evidence, slot evidence, and composition evidence share one
corpus or separate corpora
- how accepted math evidence relates to pack manifests
That is a larger substrate decision than FrameClaim needs.
The adapter is narrower:
```text
one claim type
one proposal surface
one replay gate
one operator acceptance boundary
```
It keeps the capability path moving without inventing a new corpus family
before the need is proven.
---
## Data shape
A future implementation should define a frozen, canonicalizable data shape
similar to:
```python
@dataclass(frozen=True, slots=True)
class MathFrameClaimProposal:
proposal_id: str
claim_signature: str
surface_form: str
frame_category: str
polarity: Literal["affirms", "falsifies"]
evidence: tuple[MathReaderRefusalEvidencePointer, ...]
replay_evidence: AdmissibilityReplayEvidence | None
review_state: Literal["pending", "accepted", "rejected", "withdrawn"]
operator_note: str
provenance: MathProposalProvenance | None
```
This is deliberately not a `TeachingChainProposal` because its evidence floor
is not cognition corpus evidence.
It is also deliberately not a runtime frame registry entry. It is a proposal.
---
## Evidence floor
A `MathFrameClaimProposal` is eligible only if it has:
1. at least one audit/refusal evidence pointer,
2. a deterministic audit-row digest,
3. a normalized claim signature,
4. a known `missing_operator` subtype mapping to `FrameClaim`,
5. an allowlisted `frame_category`,
6. `boundary_clean=True`, and
7. `polarity in {"affirms", "falsifies"}`.
Audit evidence must include enough provenance to replay the claim:
- case id
- sentence index
- token/span index when available
- missing operator
- refusal reason/detail
- recognized terms digest
- audit row canonical digest
The evidence pointer source must be a math-specific value such as:
```text
source="math_audit"
```
It must not be `source="corpus"` unless and until a real reviewed math corpus
exists.
---
## Replay gate
The adapter uses the math-domain replay gate:
```text
run_admissibility_replay_gate
```
Replay remains a precondition, not permission.
If replay regresses any protected metric, the proposal auto-transitions to
`rejected` with an `auto_rollback_regression` note.
If replay passes, the proposal remains `pending` until explicit operator
review.
---
## Accepted proposal effect
Accepting a `MathFrameClaimProposal` may only append or propose append to a
reviewed frame mapping artifact.
It must not directly mutate:
- active runtime state
- solver code
- parser code
- graph verifier code
- arithmetic semantics
- cognition corpus
- cognition packs
Acceptance should produce an append-only provenance record linking:
```text
proposal_id -> claim_signature -> target artifact row -> reviewer
```
---
## Idempotency
`proposal_id` must derive from canonical claim identity, not clock time.
Recommended identity:
```text
sha256(domain | subtype | surface_form | frame_category | polarity | evidence_digest_set)
```
Equivalent evidence should deduplicate. Adding a second audit row for the same
claim may either:
1. append evidence to the existing proposal record, or
2. create a new event referencing the existing proposal id.
It must not create a second independent mutation opportunity for the same
claim.
---
## Partition guarantees
The adapter is math-domain only.
It must not:
- consume cognition corpus evidence,
- emit cognition TeachingChainProposal records,
- append to cognition chains,
- read cognition semantic-domain classifiers,
- use cognition replay gates.
It may share infrastructure patterns from ADR-0057, but not evidence identity.
---
## Acceptance gates for implementation
A future implementation PR must prove:
- deterministic claim signature
- deterministic proposal id
- duplicate evidence deduplication
- append-only proposal log behavior
- replay-gate selection = math admissibility replay
- replay pass leaves proposal pending, not accepted
- replay regression auto-rejects
- operator accept is required for mutation
- accept writes only the reviewed math frame target artifact
- active corpus and active pack bytes are unchanged during replay
- audit evidence is never serialized as cognition corpus evidence
- case 0050 remains safe
- recognized-but-uninjectable remains refused unless fully admitted correctly
---
## Non-goals
This ADR does not implement:
- FrameClaim runtime admission
- frame mapping artifact schema
- workbench rendering
- CompositionClaim
- ReferenceClaim
- SlotClaim
- reviewed math corpus substrate
- automatic acceptance
This is only the bridge decision that makes future FrameClaim implementation
compatible with ADR-0057.
---
## Decision summary
> Use a dedicated `MathFrameClaimProposal` adapter for math-domain FrameClaim
> evidence. Preserve ADR-0057's replay/review discipline, but do not impersonate
> ADR-0057's cognition corpus evidence floor. Audit evidence stays audit
> evidence; operator-reviewed accepted proposals may later append to a reviewed
> math frame artifact under deterministic replay gates.