The word "expert" in the previous status name implied raw-capability parity
with frontier LLMs on the same benchmark — which the gate does NOT verify.
What the gate actually verifies is CORE *claim-shape compliance*:
* signed digest (replay-reproducible from on-disk lane results)
* replay determinism (same inputs → byte-equal trace_hash)
* typed refusal (fabrication refused, not paraphrased)
* exact recall (no ANN, no cosine, no attention bottleneck)
* grounding-source provenance
These are claim shapes a transformer LLM cannot structurally produce
regardless of raw accuracy. A frontier LLM might score higher on the
same benchmark but cannot pass this contract.
Rename scope (semantics only, per ADR-0113):
status string "expert-demo" → "audit-passed"
predicate key predicates.expert_demo → predicates.audit_passed
reason key expert_demo_reason → audit_passed_reason
YAML key expert_demo_claims → audit_passed_claims
CLI command core demo expert → core demo audit-passed
output dir evals/expert_demos/ → evals/audit_passed/
artifact filenames expert_demo.{json,html} → audit_passed.{json,html}
HTML title CORE Expert-Demo: X → CORE Audit-Passed: X
Internal Python identifiers (module/file/function/class names like
`expert_demo.py`, `evaluate_expert_demo`, `ExpertDemoClaim`,
`expert_demo_claim_for`) are deliberately kept to minimize churn. ADR
file titles (ADR-0106..0112) preserved as historical record.
`expert` namespace reserved for ADR-0114+: an actual capability tier
above `audit-passed` backed by a public benchmark with a stated
threshold. ADR-0114 proposes the first such target — GSM8K-math —
laying out a falsifiable 7-phase arc (parser → solver → verifier →
stepped-realizer → eval lane → first `expert` ledger tier promotion).
Tests: 184 directly-affected tests green (140 capability/expert-demo
suite + 34 demo/audit-tour + 10 correction-cue). Smoke suite 67/67.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
263 lines
10 KiB
Markdown
263 lines
10 KiB
Markdown
# ADR-0114 — Expert-Capability Roadmap: GSM8K-Math First
|
|
|
|
**Status:** Proposed
|
|
**Date:** 2026-05-22
|
|
**Author:** CORE agents + reviewers
|
|
**Depends on:** ADR-0091, ADR-0106, ADR-0109, ADR-0110, ADR-0111, ADR-0112, ADR-0113
|
|
**Supersedes:** none (greenfield)
|
|
|
|
---
|
|
|
|
## Context
|
|
|
|
ADR-0113 reserved the `expert` namespace for a future ledger tier
|
|
above `audit-passed`. `audit-passed` verifies CORE *claim-shape
|
|
compliance* (signed digest, replay determinism, typed refusal, exact
|
|
recall) — a real, transformer-unreachable property. It does **not**
|
|
verify raw task performance against external benchmarks.
|
|
|
|
This ADR proposes the first concrete path toward an `expert` ledger
|
|
status. It is greenfield: no engine for it exists today.
|
|
|
|
### Honest framing of distance
|
|
|
|
The current architecture is impressive at the substrate level
|
|
(determinism, exact CGA recall, reviewed teaching, audit trail). It
|
|
is **far from expert-level on generative tasks**:
|
|
|
|
- The deterministic realizer composes pack lemmas via fixed templates
|
|
and reviewed teaching chains. There is no symbolic solver, no proof
|
|
search, no multi-step problem decomposition.
|
|
- `en_mathematics_logic_v1` pack has 16 lemmas. Solving an
|
|
AMC-10 problem requires a working pipeline that does not exist.
|
|
- "Expert prose" is fuzzily defined and would need ~30k+ lemma
|
|
lexicon plus discourse-level planning beyond current capability.
|
|
|
|
The honest current state is: **no domain is at expert-level capability
|
|
by any external measure**. The `audit-passed` rows for math and
|
|
physics describe CORE-specific claim shapes, not raw-task supremacy.
|
|
|
|
This ADR proposes building toward that — starting with the lowest-
|
|
hanging credible target: **grade-school math word problems on GSM8K**.
|
|
|
|
### Why GSM8K first
|
|
|
|
- **Public benchmark with established frontier baselines.** Frontier
|
|
LLMs report 92-95% on GSM8K. Smaller open models report 30-70%. The
|
|
comparison space is well-mapped.
|
|
- **Checkable answers.** Each problem has a single integer answer; no
|
|
fuzzy grading required.
|
|
- **Smallest architectural delta.** The math pack already names the
|
|
right operators (`adds`, `subtracts`, `multiplies`, `divides`); the
|
|
realizer already composes deterministic surfaces. The missing piece
|
|
is a real solver loop, not a fundamentally different substrate.
|
|
- **Honest first step.** If CORE scores at 6th-grader level on GSM8K,
|
|
the result is *still load-bearing* — because the score would be
|
|
replayable, traceable, and grounded in a way frontier LLM scores
|
|
structurally cannot be. We can claim "Nth-percentile GSM8K, with
|
|
trace-verifiable solutions" — a claim no LLM can make.
|
|
- **Compositional fit.** GSM8K's reasoning depth (typically 2-8 steps)
|
|
fits CORE's proposition-graph + teaching-chain substrate without
|
|
requiring an unbounded search.
|
|
|
|
---
|
|
|
|
## Decision
|
|
|
|
Establish a phased path to a first `expert` ledger tier claim, scoped
|
|
to **`mathematics_logic`** as the first domain and **GSM8K** as the
|
|
first benchmark. Each phase is its own ADR; this ADR proposes the
|
|
sequence and defines exit criteria.
|
|
|
|
### Phase 1 — Problem Parser (ADR-0115, future)
|
|
|
|
Build `generate/math_parser.py`: turns a natural-language word problem
|
|
into a typed proposition graph.
|
|
|
|
- Input: GSM8K problem string.
|
|
- Output: a `MathProblemGraph` with typed nodes: `entity`, `quantity`,
|
|
`unit`, `operation`, `unknown`, `relation`.
|
|
- Constraint: deterministic. Same input → byte-identical graph.
|
|
- No solver yet — just structured parse.
|
|
|
|
Exit criterion: on a curated dev set of 50 GSM8K-style problems
|
|
(authored, not from GSM8K to avoid contamination), parse correctness
|
|
≥ 0.90 measured by human review against a published rubric.
|
|
|
|
### Phase 2 — Deterministic Solver (ADR-0116, future)
|
|
|
|
Build `generate/math_solver.py`: a tiny term-rewriting system over the
|
|
`MathProblemGraph` using the existing math-pack operator vocabulary.
|
|
|
|
- Input: `MathProblemGraph`.
|
|
- Output: a `SolutionTrace` — ordered list of operation applications
|
|
ending at a numeric answer (or a typed refusal if the graph is
|
|
under-determined).
|
|
- Constraint: pure function. No sampling. Trace is byte-deterministic
|
|
from input.
|
|
|
|
Exit criterion: on the Phase 1 curated dev set, solver yields correct
|
|
final answer on ≥ 80% of graphs the parser produces correctly. The
|
|
solver does **not** need to solve every problem; it needs to be honest
|
|
about which it can.
|
|
|
|
### Phase 3 — Verifier (ADR-0117, future)
|
|
|
|
The verifier re-derives the answer from the `SolutionTrace` and emits
|
|
a typed verdict. This is the easy phase — CORE's substrate already
|
|
has replayability. The verifier just enforces it on this new artifact.
|
|
|
|
Exit criterion: replay determinism = 1.0 on all Phase 2 outputs.
|
|
|
|
### Phase 4 — Stepped-Realizer Extension (ADR-0118, future)
|
|
|
|
Extend the existing realizer to emit show-your-work prose from a
|
|
`SolutionTrace` — one sentence per operation, with pack-grounded
|
|
operator vocabulary.
|
|
|
|
Exit criterion: every Phase 2 success produces a stepped explanation
|
|
of length proportional to trace length, with each sentence
|
|
pack-grounded.
|
|
|
|
### Phase 5 — GSM8K Eval Lane (ADR-0119, future)
|
|
|
|
Author `evals/gsm8k/`:
|
|
|
|
- `dev/cases.jsonl` — curated subset of GSM8K train (300 problems).
|
|
- `public/v1/cases.jsonl` — curated subset of GSM8K train (1500
|
|
problems; disjoint from dev).
|
|
- `holdouts/v1/cases_plaintext.jsonl` — curated subset of GSM8K
|
|
*test* (300 problems; never read during development).
|
|
- `runner.py` — drives parser → solver → verifier → realizer and
|
|
scores against the integer answer.
|
|
- `contract.md` — lane contract; lane shape `gsm8k_capability_shape`
|
|
(new shape; introduced by ADR-0119 amendment to ADR-0109).
|
|
|
|
Exit criterion: lane runner produces deterministic results. Honest
|
|
first number reported (whatever it is).
|
|
|
|
### Phase 6 — First `expert` Promotion Contract (ADR-0120, future)
|
|
|
|
Define the `expert` ledger status:
|
|
|
|
- `expert=true` iff:
|
|
1. `audit_passed=true` predicates pass (ADR-0106 + ADR-0109)
|
|
2. At least one **capability lane** attached to the domain meets a
|
|
**human-expert-calibrated threshold** declared in the lane's
|
|
`contract.md`
|
|
3. Reviewer-signed `expert_claims` entry whose evidence-bundle
|
|
digest reproduces byte-for-byte (mirrors ADR-0106 §1.5 exactly)
|
|
4. The capability lane's threshold is declared **publicly** in the
|
|
ADR, not buried in a config — so external readers can debate the
|
|
calibration.
|
|
|
|
For GSM8K specifically, candidate human-expert-calibrated thresholds:
|
|
|
|
| Threshold | Interpretation |
|
|
|---|---|
|
|
| ≥ 0.40 | "competent" — beats average 14-year-old human |
|
|
| ≥ 0.60 | "advanced" — competitive open-source LLM territory |
|
|
| ≥ 0.85 | "expert" — frontier-LLM territory; published-paper bar |
|
|
|
|
ADR-0120 must pick one and justify the choice. The chosen number is
|
|
*falsifiable*: if CORE scores below it, no `expert` row.
|
|
|
|
### Phase 7 — Second Capability Domain (ADR-0121+, future)
|
|
|
|
Pick a second capability domain only after Phase 6 lands. Likely
|
|
candidates: symbolic logic with quantifiers (closest cousin to math),
|
|
or DSL code generation (checkable, lexicon-bounded). Defer until
|
|
math expertise is real.
|
|
|
|
### Writing / open-prose capability — explicitly deferred
|
|
|
|
Open prose ("expert essay" / "expert article") is **not** on this
|
|
roadmap. Reasons:
|
|
|
|
- "Correct prose" is fuzzily defined; no GSM8K-equivalent benchmark
|
|
exists with sharp scoring.
|
|
- Required lexicon (~30k+ working English lemmas) is two orders of
|
|
magnitude larger than the current cognition pack.
|
|
- Discourse-level planning beyond current capability would need a
|
|
separate architectural arc.
|
|
|
|
Writing capability becomes appropriate once at least two symbolic
|
|
domains have landed at `expert` and the substrate has been stress-tested
|
|
against checkable benchmarks.
|
|
|
|
---
|
|
|
|
## Non-Decisions
|
|
|
|
This ADR explicitly does **not**:
|
|
|
|
- Commit to a phase timeline. Each phase is its own ADR with its own
|
|
scope. The ADR sequence is the durable artifact; the schedule is not.
|
|
- Promise CORE will reach 85% GSM8K. We commit to *honest scoring*,
|
|
not to a target. If the architecture caps out at 35%, we report 35%.
|
|
- Pretend the audit-passed gate is a capability claim. The two tiers
|
|
are distinct and remain distinct.
|
|
- Re-render existing audit-passed claims as expert claims. Math and
|
|
physics audit-passed promotions stand independently of any future
|
|
expert promotion on the same domain.
|
|
|
|
---
|
|
|
|
## Invariants
|
|
|
|
### `adr_0114_expert_namespace_undefined_until_adr_0120`
|
|
|
|
No code ships an `expert` ledger status before ADR-0120 lands. The
|
|
`_EXPERT_DOMAIN_STATUSES` tuple in `core.capability.reporting` stays
|
|
at 5 entries. Tested by the existing reporting tests.
|
|
|
|
### `adr_0114_gsm8k_is_first_capability_target`
|
|
|
|
The first capability lane authored under this roadmap is GSM8K
|
|
(ADR-0119). No other capability lane lands first.
|
|
|
|
### `adr_0114_expert_requires_explicit_threshold`
|
|
|
|
The first `expert` promotion contract (ADR-0120) must declare a
|
|
public threshold number for the underlying capability lane. No
|
|
hidden calibration.
|
|
|
|
---
|
|
|
|
## Acceptance evidence (for this proposed ADR)
|
|
|
|
ADR-0114 is accepted when:
|
|
|
|
- The ADR file exists in `docs/decisions/` and is linked from
|
|
`docs/decisions/README.md`
|
|
- No code changes — this is a roadmap ADR only
|
|
- README updated to point at this sequence as the path-to-expert
|
|
|
|
No tests need to be added by this ADR. Tests are scoped to each
|
|
implementation ADR.
|
|
|
|
---
|
|
|
|
## Consequences
|
|
|
|
- The repo has a public, dated commitment to a first expert-capability
|
|
target. The "what are you actually claiming is expert-level?"
|
|
question now has a written answer: nothing yet; the path is ADR-0115
|
|
through ADR-0120.
|
|
- The first `expert` claim, when it lands, will be *falsifiable*: tied
|
|
to a public benchmark with a stated threshold. If CORE underperforms,
|
|
the row stays at `audit-passed`.
|
|
- The `audit-passed` status remains the load-bearing CORE-vs-LLM claim
|
|
in the interim. Nothing about the expert roadmap diminishes it; the
|
|
two tiers measure orthogonal properties.
|
|
|
|
---
|
|
|
|
## Out of scope
|
|
|
|
- Implementation of any of Phases 1-7. Each is its own ADR.
|
|
- Writing / open-prose roadmap. Deferred until at least one symbolic
|
|
domain lands at `expert`.
|
|
- Specific GSM8K threshold choice. ADR-0120's job.
|
|
- Alternative first benchmarks (MATH, MMLU-math, AIME). All are
|
|
candidates after GSM8K; none replace it as Phase 1.
|