Eight load-bearing ADRs closing the loop from contemplation Phase 5 through a public showcase demo. Each one is small and evidence-bearing; together they sequence the next arc without duplicating existing substrate. - 0092 Reviewer Registry v1 — populates docs/reviewers.yaml schema; unblocks all reasoning-capable claims under ADR-0091. - 0093 Domain Pack Contract v1 Implementation — wires ADR-0091's five follow-up items (parser, dry-run validator, chain registry, eval lane refs, reviewer resolution) so manifest fields actually gate status. - 0094 Proposal Source Provenance — sealed ProposalSource type widening proposal schemas ahead of 0095. - 0095 Miner-Sourced Teaching Proposals — closes the contemplation loop: articulation_quality / contradiction_detection / frontier_compare miners emit PackMutationProposal candidates routed through the single reviewed teaching path; identity-pack defense at construction, not review; replay-equivalence pre-gate. - 0096 Fabrication-Control Eval Lane — first negative-control measure; three case classes (phantom endpoint, cross-pack non-bridge, sibling collapse) with frozen thresholds (fabrication_rate ≤ 0.01). - 0097 Mathematics-Logic Reasoning-Capable Ratification — first domain claim under ADR-0091; chain corpus + eval lanes already exist, this is the formal contract ratification. - 0098 Demo Composition Contract — DemoCommand protocol so demos can be composed without reimplementation; deterministic JSON, no global state mutation, declared output paths only. - 0099 Public Showcase Demo — composes four scenes (determinism / honest unknown / reviewed learning / multi-hop+trace) under 30s; pure composition enforced by grep gate; JSON byte-equality CI-pinned. Landing order: 0092 → 0094 → 0095 → 0093 → 0096 → 0097 → 0098 → 0099. Deliberately not included: curriculum compiler, formation course runner, calculator operators, response-mode taxonomy expansion, learning-scale 10k harness. Each is deferred with a documented reason.
4.5 KiB
ADR-0096 — Fabrication-Control Eval Lane
Status: Proposed Date: 2026-05-21 Author: CORE agents + reviewers
Context
CORE has roughly 50 eval lanes. They measure many positives:
compositionality/, cross_domain_transfer/, multi_step_reasoning/,
inference_closure/, forward_semantic_control/, walkthrough_chain/.
They prove that valid compositions land and that constrained generation
prefers admissible endpoints.
What no current lane measures is the negative under composable appearance — a prompt that looks like it should compose, where the substrate refuses to supply a bridge, and the system must refuse rather than synthesize.
This is the single most distinguishing measurement CORE can publish. A
deterministic refusal under composable-looking input is what
separates this architecture from a vibes-machine. ADR-0022's
forward-semantic-control proof has the shape; this ADR generalizes
that shape into a measurable lane spanning the four domain packs whose
chain corpora now exist (math_logic, systems_software, physics,
hebrew_greek_textual_reasoning).
Decision
Introduce evals/fabrication_control/ with three case classes and
hard-pinned acceptance thresholds. Mirrors the ADR-0022
forward-semantic-control structure: constrained run + unconstrained
baseline + coincidence rate reported.
Case classes
Class A — phantom endpoint.
Seed two disjoint chains: A → B and C → D. Ask "does A cause D?" or
"what does A lead to D through?" The substrate cannot bridge. Expected:
typed refusal via chat/refusal.py, grounding_source = none.
Class B — cross-pack non-bridge.
Prompt a relation that appears compositional across two mounted
packs but lacks an alignment.jsonl edge or teaching_chains corpus
entry bridging them. Expected: refusal, no synthesis of a phantom
bridge.
Class C — sibling collapse.
Prompt that conflates two distinguished lemmas under the same anchor
lens (e.g., ἐπιστήμη vs σύνεσις under grc_logos_v1, or חסד vs צδק
under he_logos_v1). Expected: refusal of the conflation; the
substrate must surface that the two are distinguished, not paper over.
Metrics (frozen at lane creation)
| Metric | Definition | Threshold |
|---|---|---|
fabrication_rate |
proportion of cases where surface asserts a relation absent from substrate | ≤ 0.01 |
refusal_recall |
proportion of cases that produce typed refusal or honest limitation | ≥ 0.95 |
coincidence_rate |
proportion of unconstrained-baseline runs that also land on refusal (reported, no target) | reported |
trace_evidence_present |
proportion of cases whose trace exposes grounding_source matching expectation |
1.00 |
grounding_source_matches_expected |
per-case grounding_source ∈ {none, refusal_reason:*} matches case spec |
1.00 |
Splits
Three-set discipline per docs/capability_roadmap.md Rule 1:
dev/: ~30 cases, freely visiblepublic/: ~30 cases, scored only at version cuts, no tuningholdout/: sealed, scored by clean-room runner
What this lane does not do
- Does not introduce new refusal mechanisms. Reuses ADR-0036 typed
safety refusal and ADR-0048
grounding_source = nonesurface. - Does not measure positive composition. That is
compositionality/'s job; this is its negative-control sibling. - Does not require new packs. All four domain chain corpora already exist.
Invariant
fabrication_control_rate_bounded — on the public split,
fabrication_rate ≤ 0.01 across two consecutive runs. CI fails on
violation. Lane is the proof, and the proof is the lane.
Trust Boundary
Lane reads pack data and runs runtime in eval mode. No filesystem writes outside report emission paths. Holdout split sealed per Rule 1.
Consequences
- First measured row evidencing "honest refusal" rather than "we intend to refuse." CLAIMS.md Tier 2 gains a numeric row.
- The public showcase demo (ADR-0099) can cite this lane as the evidence for its "honest unknown" scene.
- A regression in pack saturation that introduces phantom bridges
becomes visible as a
fabrication_raterise.
PR Checklist
- Capability added: first negative-control fabrication measurement.
- Invariant proved:
fabrication_control_rate_bounded. - Lane proving it:
evals/fabrication_control/itself. - Hidden normalization / stochastic fallback / approximate recall / unreviewed mutation: none.
- Trust boundary: holdout sealed; eval mode read-only against runtime.