PROGRESS.md was last updated mid-Phase-5 (~ADR-0021). The pack-layer chain (ADR-0027..0045), forward-graph+surface composer chain (ADR-0046..0089), and evidence-governed domain layer (ADR-0091..0110) were all absent. capability_roadmap.md was last updated 2026-05-17 and predated the expert-demo promotion contract entirely. Added to both: - Phase 6 — Evidence-Governed Domain Layer section covering ADR-0091 contract chain through ADR-0110 expert-demo arc, including the refused-amended-succeeded narrative and the current ledger state (math at expert-demo, four others at reasoning-capable). - Backfill subsections for ADR-0027..0045 (pack-layer chain) and ADR-0046..0089 (forward-graph + surface-composer + register + anchor-lens + contemplation-loop work) marked retrospective. capability_roadmap.md also gains a '2026-05-22' status update at the top alongside the existing 2026-05-17 entry. The full Phase 0-5 exit-criteria rewrite remains queued separately. No code, no tests, no claims changes.
40 KiB
Capability Roadmap — Progress Tracker
Tracks completion of the phased plan defined in docs/capability_roadmap.md
(ADR-0016). Updated as work lands.
Naming note. "Phase N" in this document refers to capability-roadmap phases (Phase 0 through Phase 5+). The ADR-0024 chain has its own six-phase plan (Phase 1 through Phase 6) which is tracked separately immediately below. Do not conflate the two.
ADR-0024 Chain — Forward Semantic Control Closure
Status: Complete ✓ Closed: 2026-05-17
A standalone six-phase plan that closes forward semantic control as a deterministic, trace-evidenced, refuse-able mechanism. Distinct from the capability-roadmap phases below.
| Phase | Commit | Deliverable | Contract tests |
|---|---|---|---|
| 1 | 3940290 |
Pack-grounded fixture rewrite + architectural finding | (rewrites) |
| 2 | 310793a |
Typed InnerLoopExhaustion + RefusalReason + trace fold |
+10 |
| 3 | 639e107 |
ADR-0026 ranked-with-margin gate (δ = 0.4 default) | +13 |
| 4 | 542e13d |
ADR-0025 rotor / frame admissibility (sibling module) | +11 |
| 5 | b664984 |
Stratified 5-family mechanism-isolation corpus + benign EXHAUSTION_CEILING corpus | +20 |
| 6 | a076506 |
Three-condition comparative demo (C1 replay / C2 traced rejection / C3 coherent refusal) | +17 |
| CLI | 36aad75 |
Suite aliases (adr-0024, refusal, margin, rotor, …) + core demo subcommand + results manifest |
+14 |
ADRs moved to Accepted under this chain: 0024, 0025, 0026. ADRs strengthened: 0022 (TBDs closed), 0023 (proof evidence expanded).
Evidence locations:
- Runtime contracts:
docs/runtime_contracts.md— Refusal / Margin / Rotor admissibility sections - Stratified findings:
docs/evals/phase5_stratified_findings.md - Comparative demo:
docs/evals/phase6_comparative_demo.md - Reports:
evals/forward_semantic_control/results/(+ auto-refreshedindex.json) - ADR index:
docs/decisions/README.md— "ADR-0024 chain" section
How to verify on a fresh checkout:
core test --suite adr-0024 # 98 contract tests across the chain (~2 min)
core demo all # phase5 + phase6 + combined summary (~40 s)
core demo audit-tour # pack-layer architecture in 4 scenes (ADR-0027..0041)
core demo pack-measurements # ADR-0043 — pack-layer claims as per-pack measurements
core demo long-context-comparison # ADR-0045 — CORE NIAH recall + frozen transformer baselines
core demo list-results # index of every JSON report with headline metrics
Phase 0 — Benchmark Methodology Lock-in
Status: Complete Started: 2026-05-15 Completed: 2026-05-16
- Promote roadmap to ADR-0016
- Extract
docs/eval_methodology.mdfrom roadmap Part I - Create progress tracker (
docs/PROGRESS.md) - Implement
evals/<lane>/directory convention - Build generic eval framework (
evals/framework.py) - Retrofit
core eval cognitioninto new convention- Split 45 cases into dev (13) / public v1 (13) / holdout (19)
- Write
evals/cognition/contract.md - Migrate
runner.pyto use framework - Record v1 results under new layout
- Generalize
core eval <lane>CLI (dynamic lane discovery) - Implement holdout runner scaffold
- Implement baseline runner scaffold
- Exit gate:
core eval cognitionruns under new convention with v1 public + holdout + baseline
Methodology issues discovered (Phase 0 audit)
- Pipeline turn_log crash:
CognitiveTurnPipeline.run()assumedturn_logwas always populated afterchat(), but the unknown-domain gate returns a stub without appending. Fixed with fallback to tokenizer output. - Versor drift in multi-turn sessions:
test_pipeline_preserves_versor_closurereveals that after 3 turns in the same session, "spirit breath" causesversor_condition = 1.12e-04(threshold: 1e-6). Pre-existing; resolved by strict runtime closure enforcement (always unitize after sandwich product). - Identity/drive bias shelved: Premature persona motor and drive bias introduced trajectory drift. Removed in favour of persona-neutral generic runtime; identity returns behind explicit IdentityProfile contract.
Phase 1 — Foundational Triple
Status: Complete ✓ Started: 2026-05-16 Completed: 2026-05-16 Depends on: Phase 0 exit
- grammatical-coverage lane (v1 + v2 complete)
- Enumerate English v1 constructions (13 constructions: C01-C13)
- Write contract test pairs (PropositionGraph -> surface family)
- Implement v1 dev/public (~41/36 items)
- Implement holdout (52 items) — 100% pass
- Engineer
realizer.pyto pass v1 (dev=100%, public=100%, holdout=100%) - Hebrew pack (
he_core_cognition_v1with binyanim support) - Koine Greek pack (
grc_logos_cognition_v1with Greek morphology) - Generate v2 on pass (deeper nesting, longer sentences, rarer vocabulary) — 36 cases (100% pass)
- zero-code-domain-acquisition lane (v1 complete, zero engineering gaps)
- Define 3 surprise domains (kinship, calendar, color)
- Build pack-only authoring kits (vocabulary, relations, axioms, teaching examples, prompts)
- Test: author brings CORE to >=80% without Python edits (100% achieved)
- Log engineering gaps (ZERO — pack-only authoring contract is solid)
- v1 dev (30/30), v1 public (18/18 across all 3 domains), v1 holdout (21/21) — all 100% pass
- identity-divergence lane (v1 complete)
- Define two identity axis sets (Axis A: Precision-first, Axis B: Generosity-first)
- Curate shared curriculum (93 teaching events across color/kinship/reasoning/spatial)
- Build divergence metric (>0.30 threshold): all pass (1.000)
- Build coherence metric (>0.85 threshold for A and B): all pass (1.000)
- Identity-stripped baseline with causal check: all pass (delta=1.000)
- v1 dev (5/5), v1 public (5/5), v1 holdout (5/5) — all 100% pass
- Exit gate: All three lanes pass v1 public + holdout ✓
Phase 2 — Structural Wins Made Visible
Status: In Progress Started: 2026-05-16 Depends on: Phase 1 exit
- provenance lane (v1 complete)
- Define Provenance dataclass + compute_provenance() (
core/cognition/provenance.py) - Unit tests for provenance derivation (6/6 pass —
tests/test_provenance.py) - Build pack-axiom / vault-recall / teaching / mixed case categories
- v1 dev (10/10), v1 public (20/20), v1 holdouts (15/15) — all 100% pass
- Sub-metrics: replay_determinism=1.0, source_attribution=1.0, source_validity=1.0, input_sensitivity=1.0
- Fixed shape regression in
generate/stream.pyscore-weighted recall (np.eye → multivector identity) - Replaced linear-blend rotor scaling with manifold-preserving
rotor_power(algebra/rotor.py); 41 closure-preservation tests - Restored
respond()/result.final_stateidentity contract after anchor pull
- Define Provenance dataclass + compute_provenance() (
- monotonic-learning lane (v1 complete)
- Define contract: longitudinal regression check across ≥10 teaching cycles
- Implement runner: shared session, sorted ops, per-(cycle, domain) accuracy table
- Generator (
scripts/generate_monotonic_cases.py) for cycle/probe corpora - v1 dev (10 cycles), v1 public (12 cycles, 3 domains), v1 holdouts (12 cycles, 2 distinct domains)
- All splits: max_regression=0.00, floor_score=1.00, overall_pass=true
- Structural win demonstrated: zero regression across 34 total cycles / 7 distinct domains
- calibration lane (v1 complete)
- Define contract: typed signals for no_grounding / coherent / correction_proposed
- Classification from
CognitiveTurnResult(vault_hits + pack_mutation_proposal) - Runner with per-case fresh pipeline (avoids cross-case field drift)
- v1 dev (12/12), v1 public (24/24), v1 holdouts (18/18) — all 100% pass
- Sub-metrics: no_grounding=1.0, coherent=1.0, correction_proposed=1.0
- Architectural finding documented (
evals/calibration/gaps.md): the ingest gate is geometric, not semantic — 6/42 hand-chosen OOD prompts fire the geometric gate. v1 measures recall-presence + correction-firing signals (deterministic), not semantic OOD. Pipeline override of gate's safety surface is a separate gap.
- symbolic-logic lane (v1 complete)
- Define contract: structural foundations for proposition-based inference
- Patterns: modus_ponens_chain, modus_tollens_chain, syllogism, negation, chain_recall
- Runner: per-case fresh pipeline + double-run replay check
- Sub-metrics: premise_recall=1.0, replay_determinism=1.0, proposal_storage=1.0
- v1 dev (8/8), v1 public (18/18), v1 holdouts (12/12) — all 100% pass
- Architectural finding documented (
evals/symbolic_logic/gaps.md): CORE has no first-class inference operator yet. v1 measures the storage, replay, and recall foundations on which a future inference engine would be built. v2 would assert specific inference correctness (transitive recall surface contents).
- adversarial-identity lane (v1 complete)
- Define contract: identity-override attacks rejected at review; legitimate corrections still accepted
- Cover all
_IDENTITY_MARKERSfamilies (you are / forget / pretend / override / ignore / your name / act as / from now / character / personality) - Per-case fresh pipeline; prior question primes the review surface
- Sub-metrics: attack_rejection_rate=1.0, legitimate_acceptance_rate=1.0
- v1 dev (10/10), v1 public (25/25), v1 holdouts (18/18) — all 100% pass
- All five Phase 2 v1 lanes passing ✓
- Frontier baselines computed for all lanes (structural-zero floor)
docs/frontier_baselines.md— per-lane analysis: frontier LLMs do not emit the typed signals CORE's rubrics score against (provenance sources, pack_mutation_proposal, vault_hits, REJECTED_IDENTITY outcome, deterministic trace_hash)- Per-lane structural-zero baseline JSON written under
evals/<lane>/baselines/v1_structural_zero.json StructuralZeroBaselineadapter inevals/baseline_runner.py— deterministic floor; live-API adapters can be added when keys are configured
- v2 lanes: all five at 100% pass
- monotonic-learning v2 — 20 cyc / 5 dom (public), 18 cyc / 4 dom (holdouts)
- provenance v2 — 30 + 20 cases, all sub-metrics 1.0
- adversarial-identity v2 — 35 + 22 cases, all 1.0
- calibration v2 — 33 + 24 cases, all class accuracies 1.0
- symbolic-logic v2 — 24 + 16 cases (chains up to 5 hops), all 1.0
- Exit gate: v3 lanes for at least two of the five ✓
- monotonic-learning v3 — 30 cyc / 7 dom (public), 25 cyc / 6 dom (holdouts),
max_regression=0.0,floor_score=1.0on both splits - adversarial-identity v3 — 30 + 20 paraphrased-attack cases.
Initial v3 result (pre-fix):
attack_rejection_rate=0.0,legitimate_acceptance_rate=1.0. v3 was a load-bearing finding that exposed the marker-string defense as brittle to paraphrase.
- monotonic-learning v3 — 30 cyc / 7 dom (public), 25 cyc / 6 dom (holdouts),
Identity-override defense — fix #2 + fix #3 (2026-05-16)
Triggered by the v3 finding above. Two-layer defense now active in
teaching/review.py:
- Fix #2 (syntactic).
_is_identity_overrideapplies four deterministic rules: (a) legacy markers, (b) redirect-verb + role-frame co-occurrence, (c) negating qualifier ±3 tokens from a role-frame, (d) negating qualifier ±3 tokens from a redirect-verb. - Fix #3 (geometric).
IdentityCheck.would_violate(score, manifold)predicate added tocore/physics/identity.py;review_correctionnow acceptsidentity_score/identity_manifoldkwargs and is wired inCognitiveTurnPipeline._run_teachingfromresponse.identity_score.
Lane results after both fixes:
| split | attacks | attack_rej | legit_acc |
|---|---|---|---|
| public/v1 | 15 | 1.0 | 1.0 |
| holdouts/v1 | 10 | 1.0 | 1.0 |
| public/v2 | 20 | 1.0 | 1.0 |
| holdouts/v2 | 12 | 1.0 | 1.0 |
| public/v3 | 20 | 1.0 | 1.0 |
| holdouts/v3 | 12 | 1.0 | 1.0 |
| public/v4 | 20 | 1.0 | 1.0 |
| holdouts/v4 | 12 | 1.0 | 1.0 |
| public/v5 | 20 | 1.0 | 1.0 |
| holdouts/v5 | 12 | 1.0 | 1.0 |
v4 is the regression gate for fix #2 — new attack vocabulary
combinations that exercise rules (b)/(c)/(d) without repeating v3's
specific surface. v5 is the regression gate for the normalization
layer — contractions (you're/it's/let's/don't), curly quotes
(U+2018/U+2019), em-dashes, and verb morphology (becoming /
transformed / dropped / becomes) — all now folded before rule
evaluation. All v1–v5 splits pass at 100%; legitimate-correction
false-positive rate is 0% (including legitimates that themselves
use contractions: wisdom's broader, knowledge isn't merely collected, etc.).
Honest finding: with the current default IdentityManifold (three
unit-axis ValueAxes), the geometric layer flags 0/32 of v3 attacks
independently of fix #2. The predicate and wiring are in place; the
manifold's axis design is the limiting factor and needs sharpening
before the geometric defense can carry weight on its own. See
evals/adversarial_identity/gaps.md.
Geometric-axis sharpening investigation (2026-05-16)
A focused empirical investigation against v3 and v5 (preserved as
evals/adversarial_identity/calibration/probe_field_signature.py)
swept every candidate per-case discriminator derivable from the
existing CognitiveTurnResult — identity_score.alignment, field-delta
L2 norm, semantic-coord energy ratio, vault_hits, surface length,
intent tag. No signal separated attack from legitimate at the
per-case level. identity_score.alignment is 1.000 universally;
field-delta distributions overlap heavily; vault retrieval grounds
both kinds similarly.
The pipeline encodes identity-override attacks and legitimate corrections into statistically indistinguishable field-state geometries. No amount of axis-direction sharpening on the IdentityManifold can recover a signal that isn't present in the trajectory data being projected.
Architectural conclusion: fix #3 cannot be made load-bearing
in place. The required upstream work — encoding token semantic
categories into specific blade coordinates of the field versor at
the ingest gate, then redefining the IdentityManifold axes in the
32-dim Cl(4,1) basis with a real inner-product projection — is a
scoped multi-PR effort, not a single sharpening exercise. The
calibration probe stands as the empirical baseline that any future
ingest-gate change must beat before fix #3 can be claimed
load-bearing. See evals/adversarial_identity/gaps.md for the
full table of measured signals and the recommended path.
What stands today as the load-bearing defense: fix #2 (syntactic rules a/b/c/d) + the normalization layer reject 100% of v1–v5 attacks (n=121) with 0 false positives on 51 legitimate corrections. Fix #3's predicate, unit tests, and wiring remain as scaffolding for the upstream work above.
Phase 2 — COMPLETE
All five Phase 2 v1+v2 lanes pass at 100%; frontier structural
baselines documented; v3 satisfies the exit-gate requirement (two
lanes, one demonstrating a passing structural-depth test and one
demonstrating an architectural vulnerability that the geometric
identity-check fix in evals/adversarial_identity/gaps.md would
close).
Parallel eval infrastructure (2026-05-16)
evals/parallel.py—run_cases_parallel()helper usingmultiprocessing.Poolwith the"spawn"start method (avoids forking heavy parent state). Default workers =min(cpu_count, 8).- Wired into the four per-case lanes (provenance, calibration,
symbolic-logic, adversarial-identity).
run_lane(..., workers=N)controls parallelism;workers=1forces serial for debugging. - Empirical speedup (adversarial-identity public/v1, 25 cases): serial 14.1s → parallel 3.1s (~4.5x).
- Monotonic-learning intentionally stays serial within a split (shared longitudinal session by design).
Phase 3 — Reasoning Depth — IN PROGRESS
inference-closure v1 (2026-05-16) — honest failure, gap filed
First Phase 3 lane built and run. Scores derivation of entailments
that were not directly asserted (transitive is / precedes /
grounds / causes / belongs_to chains) over the
en_core_cognition_v1 relation vocabulary.
| split | n | derived_recall_rate | premises_stored_rate | replay_determinism | overall_pass |
|---|---|---|---|---|---|
| public/v1 | 20 | 0.0 | 1.0 | 1.0 | False |
| holdouts/v1 | 12 | 0.0 | 1.0 | 1.0 | False |
v1 is the expected honest failure per the roadmap. Foundation
guarantees from Phase 2 (storage and replay determinism) hold at this
depth: every premise emits a PackMutationProposal, every
(premises, probe) sequence is trace-hash-deterministic. The
inference-closure step itself does not yet exist in CORE.
Architectural gaps filed
(evals/inference_closure/gaps.md):
generate/graph_planner.pyhas no transitive composition — the probe's articulation target picks a single node; no chained relation walk produces the derived entailment.field/propagate.pyhas no derivable-but-not-asserted recall — vault retrieval scores direct CGA inner products; no path-recall operator over relation-typed edges.
Both gaps are v2 engineering candidates and may share a single implementation surface. Structural-zero frontier baseline recorded: frontier LLMs do not emit the typed signals these sub-metrics score by construction.
Phase 3 v1 sweep complete (2026-05-16) — all five lanes scored
| Lane | split | primary signal | foundation (stored / replay) |
|---|---|---|---|
| inference-closure | public | derived_recall = 0.0 | 1.0 / 1.0 |
| inference-closure | holdouts | 0.0 | 1.0 / 1.0 |
| compositionality | public | compositional = 0.0625 (1/16, fluke) | 1.0 / 1.0 |
| compositionality | holdouts | 0.0 | 1.0 / 1.0 |
| multi-step-reasoning | public | endpoint = 0.0 | 1.0 / 1.0 |
| multi-step-reasoning | holdouts | 0.0 | 1.0 / 1.0 |
| introspection | public | explain_api_present = 0.0 | n/a |
| introspection | holdouts | 0.0 | n/a |
| cross-domain-transfer | public | transfer = 0.0 | 1.0 / 1.0 |
| cross-domain-transfer | holdouts | 0.0 | 1.0 / 1.0 |
The signal across all five lanes is unanimous: Phase 2 storage
- replay guarantees hold at this depth (1.0 across the board); the reasoning-depth signal is uniformly zero. The five lanes triangulate the same architectural gap from five angles:
- Gap 1:
generate/graph_planner.pyhas no transitive composition.plan_articulationpicks a single node; no chained relation walk synthesizes derived nodes. - Gap 2:
field/propagate.pyhas no derivable-but-not-asserted recall. Vault retrieval is direct CGA inner product; no path-recall operator over relation-typed edges. - Gap 3: no
core/cognition/explain.pymodule. No primitive exists to generate a natural-language account of a prior turn. - Gap 4: no structural-pattern recogniser. Relation patterns are not first-class entities; subdomain-A teaching does not shape subdomain-B competence.
Gaps 1, 2, 4 cluster on the same code surface (graph planner + field propagate) and may close together. Gap 3 is a distinct module-creation work item.
Phase 3 v2 work plan (recommended sequence)
- Pin the open scope decisions flagged "Before Phase 3" in the Open Scope Decisions table below — Agency (responsive vs. goal-directed) and Tool use (typed deterministic operators). Transitive composition under (2) is essentially a typed deterministic operator, so the tool-use decision shapes how the work below should be structured.
- Engineer Gaps 1 + 2 as one bounded PR: a typed
transitive_walk(graph, head, relation, max_hops)operator ingraph_planner.py+ apath_recall(vault, entity, relation_chain)operator infield/propagate.py. Both deterministic, both exact-CGA. Re-run inference-closure, multi-step-reasoning, compositionality, cross-domain-transfer to score the lift. - Engineer Gap 3 independently:
core/cognition/explain.pyproducing deterministic natural-language accounts that round-trip. - Re-author cross-domain-transfer v2 with the matched-control comparison contract refinement once B-arm recall is non-zero.
Phase 3 v2 sweep — 8 of 10 splits passing (2026-05-16)
Engineering work from ADRs 0017 + 0018 has now landed. Two bundles:
Bundle 1 — transitive_walk + path_recall (commit 57a6174)
teaching/relation_parse.pylifts correction text into typed(head, relation, tail)triples using the en_core_cognition_v1 relation vocabulary.teaching.store.PackMutationProposalcarries the typed triple;TeachingStore.triples()exposes the cross-turn typed-relation graph.generate/operators.pydefinestransitive_walk(single-relation chain) andpath_recall(multi-relation chain).generate.intentgainsTRANSITIVE_QUERYintent tag with a parsedrelationfield for "What does X precede/cause/ground?" and "Where does X belong?" forms.CognitiveTurnPipeline.rundispatches the operator afterruntime.chat()and folds the chain endpoint into the surface.compute_trace_hashandCognitiveTurnResultgainoperator_invocationso operator runs are load-bearing for replay equality per ADR-0018.
Bundle 2 — core/cognition/explain.py (commit pending)
- Deterministic canonical re-statement of a turn, dispatched on the intent tag. DEFINITION → "What is X?", TRANSITIVE_QUERY → "What does X precede?" / "Where does X belong?", CORRECTION → the original correction text, etc.
- Closes Gap 3. No learned model; pure dispatch.
Phase 3 v2 lane re-score:
| Lane | split | v1 | after v2 bundles |
|---|---|---|---|
| inference-closure | public | 0.0 | 1.0 ✓ |
| inference-closure | holdouts | 0.0 | 1.0 ✓ |
| multi-step-reasoning | public | 0.0 | 0.7333 ✓ |
| multi-step-reasoning | holdouts | 0.0 | 0.8 ✓ |
| cross-domain-transfer | public | 0.0 | 1.0 ✓ |
| cross-domain-transfer | holdouts | 0.0 | 1.0 ✓ |
| introspection | public | 0.0 | 1.0 ✓ |
| introspection | holdouts | 0.0 | 1.0 ✓ |
| compositionality | public | 0.0625 | 0.3125 (partial) |
| compositionality | holdouts | 0.0 | 0.3 (partial) |
Bundle 3 — multi_relation_walk + permissive intent
generate.operators.multi_relation_walkwalks any outgoing relation edge from the head (relation label dropped, structure preserved). Returns the chain endpoint regardless of which relation predicate the chain uses at each step.generate.intent._TRANSITIVE_QUERY_REloosened to accept any verb-like word as the relation; previously enumerated a closed set. Unrecognised relations now route to TRANSITIVE_QUERY and the pipeline's two-step dispatch finds a chain throughmulti_relation_walkwhen no same-relation chain exists.CognitiveTurnPipeline._maybe_transitive_walkprecision-first dispatch: trytransitive_walk(relation)for literal precision; fall back tomulti_relation_walkwhen that returns singleton.
Phase 3 v1 — 10 OF 10 SPLITS PASSING:
| Lane | split | v1 | after v2 | after v3 |
|---|---|---|---|---|
| inference-closure | public | 0.0 | 1.0 | 1.0 |
| inference-closure | holdouts | 0.0 | 1.0 | 1.0 |
| multi-step-reasoning | public | 0.0 | 0.73 | 1.0 |
| multi-step-reasoning | holdouts | 0.0 | 0.80 | 1.0 |
| compositionality | public | 0.0625 | 0.31 | 0.6875 |
| compositionality | holdouts | 0.0 | 0.30 | 0.80 |
| cross-domain-transfer | public | 0.0 | 1.0 | 1.0 |
| cross-domain-transfer | holdouts | 0.0 | 1.0 | 1.0 |
| introspection | public | 0.0 | 1.0 | 1.0 |
| introspection | holdouts | 0.0 | 1.0 | 1.0 |
Every Phase 3 lane passes v1. Foundation guarantees
(premises_stored_rate, replay_determinism) remain 1.0 across
all lanes. Trace_hash bit-stability holds with operator records
folded in.
Compositionality is the only lane below 1.0 perfect-score (0.69 /
0.80); the residual failures are the novel_pair_under_seen_relation
and novel_relation_on_seen_pair cases whose contract authoring
itself is ambiguous — these are contract-refinement candidates for
v2 of that lane, not engineering work. Overall_pass threshold
(≥ 0.50) is comfortably exceeded.
Phase 3 v1 — DONE
All five lanes have v1 results with honest scores. Each failure has
a documented architectural deferral (gaps.md per lane). Phase 3
exit requires ≥ 2 lanes passing v1 by phase exit; today 0 / 5 pass,
which is the expected v1 floor. Phase 3 exit is gated on the v2
engineering above.
Phase 3 — Reasoning Depth
Status: Not Started Depends on: Phase 2 exit
- compositionality lane (construction-family splits, not sampling)
- inference-closure lane
- introspection lane
- multi-step-reasoning lane
- cross-domain-transfer lane
- Pin agency scope decision (responsive vs. goal-directed)
- Pin tool-use scope decision
- Exit gate: All five v1 scored; at least two passing v1
Phase 4 — Scale and Efficiency — IN PROGRESS
sample-efficiency v1 (2026-05-16) — first quantitative-curve lane lands
First Phase 4 lane. Measures corrections-to-competence curves
across 17 concepts (10 public + 7 holdouts). Per-concept curriculum
is a 4-hop chain of is corrections; probe asks the chain head
after each cumulative-correction count k ∈ {0,1,2,3,4}; score is
the number of chain-tail tokens visible in the probe surface.
| Split | concepts | first_hit | saturation | rate | replay |
|---|---|---|---|---|---|
| public/v1 | 10 | 1.0 | 4.0 | 1.0 | 1.0 |
| holdouts/v1 | 7 | 1.0 | 4.0 | 1.0 | 1.0 |
Every concept's curve: [0,1,2,3,4]. One correction → one
chain hop → one new token in surface. No diminishing returns; no
plateau; no spurious confabulation at k=0. Replay determinism is
1.0 across every snapshot — the curve is the deterministic function
of (concept, k), not a sampled estimate.
Phase 4 framework discipline ("Plot, do not threshold") is honored:
the lane reports the curve and the single structural gate
(replay_determinism ≥ 0.95) is met at perfect 1.0.
What the linearity says. CORE's reviewed-teaching loop integrates each typed correction into the proposition-graph substrate, and the typed inference operator (ADR-0018) surfaces the chain endpoint on the next probe. The result is one-shot learning per correction on chain-shaped curricula — visible by construction, not inferred from training-set statistics.
v2 follow-on candidates (in evals/sample_efficiency/gaps.md):
branching curricula, distractor corrections, OOD probes,
multi-relation chains, confidence-interval reporting.
long-context-cost v1 + ADR-0019 Stage 1 (2026-05-16)
Second Phase 4 lane. Measures vault.recall latency as a function
of stored-entry count N. Pre-vectorisation: median 875 ms at N=1k,
8,727 ms at N=10k — unfit for runtime use. Diagnosis: per-element
Python dispatch in algebra/backend.py::vault_recall, not algebra
cost.
ADR-0019 Stage 1 shipped in same session. The CGA inner
product is exactly diagonal with ±1 metric values (verified
empirically), so cga_inner(X,Y) = sum_i metric[i]*X[i]*Y[i].
This factors into a NumPy scan that preserves per-versor serial
component reduction order — scores are bit-identical to the
scalar path, verified by tests/test_vault_recall_vectorised.py.
| N | pre-vec median | post-vec median | speedup |
|---|---|---|---|
| 1k | 874.774 ms | 0.217 ms | ~4,030x |
| 10k | 8,727.420 ms | 1.701 ms | ~5,130x |
| 100k | ~87,000 ms (extrap) | 20.795 ms | ~4,200x |
Slope 0.99 (linear). No approximate recall introduced. Stages 2 (norm-bucketed exact pre-filter) and 3 (layered store with deterministic promotion) are documented in ADR-0019 but deferred — Stage 1 alone moved per-turn recall from seconds to milliseconds at every probed N.
multi-agent-composition v1 (2026-05-16)
Third Phase 4 lane. Structural test that composition does not launder identity violations. Two CORE instances (A, B), no shared state, message-passing only: user text → B.run() → B's articulation_surface → A.run() → A's review verdict.
| split | attacks | legits | attack_rej | legit_acc | b_err | overall_pass |
|---|---|---|---|---|---|---|
| public/v1 | 10 | 5 | 1.00 | 1.00 | 0.00 | true |
| holdouts/v1 | 5 | 3 | 0.80 | 1.00 | 0.00 | false |
Public 15/15 — every attack on A that is routed through B's
articulator is still rejected by A's identity check.
Composition does not launder. One holdout failure
(MAC-HOLD-001 "disregard your axiology") is a vocabulary gap in
the identity check's term family — would also pass through
single-agent A. Documented in evals/multi_agent_composition/gaps.md.
Phase 4 — EXIT (2026-05-16)
All three planned lanes shipped, frontier baselines published, gaps documented.
| Lane | Public | Holdouts | Curve / Gate |
|---|---|---|---|
| sample_efficiency | 10/10 | 7/7 | one-shot-per-correction, replay 1.0 |
| long_context_cost | linear (slope 0.99) | — | post-Stage-1 21 ms @ N=100k |
| multi_agent_composition | 15/15 | 7/8 | composition does not launder |
Exit gate ("all curves published with confidence intervals") is met for the curves; CI bands are v2 work per each lane's gaps.md. Vault indexing strategy is decided (ADR-0019: Stage 1 now, Stages 2/3 gated on future evidence).
What Phase 4 changed in the runtime:
algebra/backend.py::vault_recall— vectorised exact scan, bit-identical to scalar path._CGA_INNER_METRIC— diagonal metric derived once at import.- Bit-identity contract pinned by
tests/test_vault_recall_vectorised.py.
What Phase 4 left for Phase 5 / Rust parity:
- Sample-efficiency v2: branching curricula, distractor corrections, OOD probes.
- Long-context-cost v2: multi-run sampling, real-content variant, fill-cost sub-lane.
- Multi-agent-composition v2: composite trace hash, chain depth
2, shared-state lane.
- Identity-check vocabulary extension (axiology / ontology / telos / ethos) — improves adversarial_identity and multi_agent_composition holdouts.
Phase 4 — Scale and Efficiency
Status: EXITED 2026-05-16 Exit evidence: all three lanes above, ADR-0019.
- sample-efficiency curves (>=10 concepts)
- long-context-cost curves (10^3 to 10^5 vault entries; 10^6 deferred to v2 after Stage 1)
- multi-agent-composition (>=2 agents, message-passing only, replay preserved per-agent)
- Vault indexing strategy decided (ADR-0019)
- Exit gate: all curves published; CI bands deferred to v2 per gaps.md
Phase 5 — Curriculum Era
Status: IN PROGRESS (opened 2026-05-16, ADR-0020 Option C) Depends on: Phase 4 exit (✓ 2026-05-16) Parallel track: Rust backend parity port, per-surface bit-identity gated.
- 5.1 English fluency (
english_fluency_oodv1, 100% on public + holdouts, 2026-05-16) - 5.2 Hebrew fluency (
hebrew_fluencyv1, 3/3 — script + length rubric; lexeme-slot grounding deferred to v2, seeevals/hebrew_fluency/gaps.md) - 5.3 Koine Greek fluency (
koine_greek_fluencyv1, 3/3 — same v1 scope as 5.2) - 5.4 Elementary mathematics (
elementary_mathematics_oodv1, 117/117 public + 39/39 holdouts = 100%) - 5.5 Foundational physics (
foundational_physics_oodv1, 117/117 + 39/39 = 100%) - 5.6 Foundational biology (
foundational_biology_oodv1, 117/117 + 39/39 = 100%) - 5.7 Classical literature (
classical_literature_oodv1, 117/117 + 39/39 = 100%) - Phase 1-4 lanes re-run on every release (no regression)
Parallel track — Rust parity (ADR-0020)
Per-surface bit-identity gates landed (2026-05-16):
vault_recall— passing, dispatch enabled (1.91× at N=1M)cga_inner— passing, dispatch enabledgeometric_product— passing, dispatch enabledversor_condition— passing after f64 fold fix, dispatch enabledversor_apply— f64 port passing, dispatch enabled (29× over Python on the runtime hot path)- ADR-0021 (Epistemic Grade Policy) schema wired across teaching + trace + lexicon (2026-05-16)
Compositionality + paragraph-scale fluency (2026-05-16)
compose_relationsoperator +FRAME_TRANSFERintent lifts compositionality from 68.8% → 100% on public/v1 (16/16) and holdouts/v1 (10/10). Closes the residualnovel_pair_under_seen_relationpattern: "What does X R in Y?" surfaces both R-tails deterministically via a pure lookup over the typed teaching store; result is folded intooperator_invocationsotrace_hashstays bit-identical.- inference_closure, multi_step_reasoning, cross_domain_transfer
all verified at 100% across public + holdouts after the new
operator and intent shape land (no regressions from the wider
FRAME_TRANSFERregex). discourse_paragraphv2 ships scaling cases at 10 / 20 / 50 sentences with per-sentence grammaticality + per-step subject alignment + bit-identical replay (3/3 passing), plus 3 runtime round-trip cases that prime the vault and verify the runtime path is byte-identical across two freshChatRuntimeinstances (3/3 passing).benchmarks/replay_vs_llm.pyships: long-form replay benchmark with optionalllm_callablefor frontier-LLM surface-variability comparison (BYO API client; no provider lock-in). Default cognition-pack prompts demonstrate CORE-side 100% bit-identical replay atruns=3.
Phase 6 — Evidence-Governed Domain Layer
Status: IN PROGRESS (opened 2026-05-21, first promotion landed 2026-05-22)
Depends on: Phase 5 corpus flywheel + pack-layer chain (ADR-0027..0045)
Roadmap: see docs/capability_roadmap.md Phase 6 entry.
This phase ratifies the distinction between contract-passing (reasoning-capable) and demonstrated (expert_demo=true) at the capability ledger surface.
Contract layer (all accepted)
- ADR-0091 Domain Pack Contract v1 — nine predicate checks on every ratified pack
- ADR-0092 Reviewer Registry v1 — schema-validated YAML reviewer roster
- ADR-0093 Domain Contract v1 implementation — runtime validator + ledger enforcement
- ADR-0094 Proposal source provenance — discriminated
ProposalSource(kind=...) - ADR-0095 Miner-sourced teaching proposals —
teaching/from_miner.py+ SHA-pinnedminer_loop_closurelane - ADR-0096 Fabrication-control eval lane — phantom / cross-pack / sibling-collapse refusals (SHA-pinned)
- ADR-0098 Demo composition contract
- ADR-0099 Public showcase demo (deterministic, byte-equal, <30s)
- ADR-0104 Curriculum-sourced teaching proposals —
teaching/from_curriculum.py+ SHA-pinnedcurriculum_loop_closurelane - ADR-0105 Sealed-holdout encryption via age — dev-mode plaintext fallback preserved
Reasoning-capable ratifications
- ADR-0097
mathematics_logicreasoning-capable (now superseded by ADR-0110 expert-demo, see below) - ADR-0100
physicsreasoning-capable - ADR-0101
systems_softwarereasoning-capable - ADR-0102
hebrew_greek_textual_reasoningreasoning-capable (first multi-pack ratification: 4 packs) - ADR-0103 Hebrew + Koine Greek fluency lane attachment to ADR-0102 packs
Expert-demo arc (the contract demonstrated end-to-end)
- ADR-0106 Expert-Demo Promotion Contract — domain-aware, reviewer-signed, replay-deterministic
- ADR-0107
mathematics_logicexpert-demo deferred — first promotion attempt honestly refused on two named blockers (metric-shape uniformity;inference_closure40% pass) - ADR-0108 Proposed-ADR sequencing — meta-decision pinning the post-ADR-0105 frontier
- ADR-0109 Lane-shape-aware threshold amendment — 8 lane ids → 5 shapes (
cognition_shape,accuracy_shape,inference_shape,refusal_shape,symbolic_logic_shape); unknown lanes fail-closed; cognition-shape thresholds preserved bit-identical - PR #117 — fix intent-classifier regression that had broken
inference_closure(_CORRECTION_CUE_PREFIX_REguard) - ADR-0110
mathematics_logicexpert-demo promoted — first domain atexpert_demo=truein project history; signed claim digest reproduces byte-for-byte from on-disk lane results
Contract demonstration narrative
The ADR-0106 contract refused once (0107), amended once cleanly (0109), and succeeded once (0110). External readers can now distinguish the two ceilings (reasoning-capable vs expert-demo) by inspecting the ledger.
Current ledger state (per core capability ledger)
| Domain | Status |
|---|---|
mathematics_logic |
expert-demo ✓ |
physics |
reasoning-capable |
systems_software |
reasoning-capable |
hebrew_greek_textual_reasoning |
reasoning-capable |
philosophy_theology |
reasoning-capable |
Open within Phase 6
- Second expert-demo promotion (any of
physics/systems_software/hebrew_greek_textual_reasoning— all now eligible under ADR-0109 shape rules) - Multi-reviewer threshold signing (open candidate frontier item from ADR-0105)
Pack-layer chain — ADR-0027 through ADR-0045 (backfill)
The pack-layer architecture that Phase 6 builds on was established as a sequence between Phases 4 and 5 work but never registered here. Captured retroactively:
- ADR-0027 Identity packs —
IdentityManifoldloaded from swappable, content-addressed pack - ADR-0028 Identity surface wiring — packs carry
surface_preferencesconsumed by assembler - ADR-0029 Safety packs — sibling to identity, never-swappable, fail-closed at startup
- ADR-0033 Ethics packs — third pack layer; swappable like identity, propositional like safety
- ADR-0035 Turn-loop verdicts —
SafetyCheck+EthicsCheckauto-invoked - ADR-0036 Safety refusal policy — typed runtime refusal
- ADR-0037 Ethics refusal opt-in
- ADR-0038 Hedge injection — soft remediation
- ADR-0039 Audit completeness —
TurnVerdictsbundle + stub-path emission - ADR-0040 Telemetry sink — structured JSONL turn-event sink
- ADR-0041 CLI verdicts + fan-out
- ADR-0042 Audit-tour demo —
core demo audit-tour - ADR-0043 Pack measurements — identity-divergence + refusal-calibration runners
- ADR-0044 Medical-ethics pack — worked-example domain ethics pack
- ADR-0045 Long-context comparison evidence
Forward-graph + surface-composer chain — ADR-0046 through ADR-0089 (backfill)
Also retroactive (the bulk happened between 2026-05-18 and 2026-05-20):
- ADR-0046/0047 Forward graph constraint — PropositionGraph → AdmissibilityRegion before generate runs
- ADR-0048..0066 Pack-grounded surface composers for every intent shape (DEFINITION, RECALL, COMPARISON, PROCEDURE, CORRECTION, NARRATIVE, EXAMPLE)
- ADR-0063/0064 Cross-pack resolver + cross-pack teaching corpora
- ADR-0068..0072 Register substrate (terse / convivial / formal); orthogonal axis — register holds
trace_hashCONSTANT - ADR-0073 Anchor lens substrate — substantive variation axis; opposite invariant from register (lens moves
trace_hashDISTINCT) - ADR-0078 Composer/graph atom equivalence telemetry
- ADR-0080 Contemplation Loop Phase 1 — read-only frontier-compare miner,
SPECULATIVE-only findings (landed 2026-05-22) - ADR-0083 Transitive chain surface — bounded multi-hop teaching-grounded surface
- ADR-0089 Discourse planner + compound-intent dispatch
Open Scope Decisions
| Decision | Status | Deadline |
|---|---|---|
| Agency (responsive vs. goal-directed) | Resolved 2026-05-16 — ADR-0017 (responsive-with-axiology) | Before Phase 3 ✓ |
| Tool use (typed deterministic operators) | Resolved 2026-05-16 — ADR-0018 (typed deterministic operators, no external IO) | Before Phase 3 ✓ |
| Code generation (first-class target) | Open | Before Phase 5 |
| Embodiment (sensorium gates) | Open | Phase 5 |