Spreads the four remaining Phase 3 lanes to map the full reasoning-
depth surface alongside inference-closure (already landed at e509e0d).
Each lane is a v1 honest probe per the roadmap; engineering work
follows once the full surface is visible.
Results across all five Phase 3 lanes:
lane split primary signal foundation
inference-closure public/v1 0.0 1.0 / 1.0
inference-closure holdouts/v1 0.0 1.0 / 1.0
compositionality public/v1 0.0625 (1/16) 1.0 / 1.0
compositionality holdouts/v1 0.0 1.0 / 1.0
multi-step-reasoning public/v1 0.0 1.0 / 1.0
multi-step-reasoning holdouts/v1 0.0 1.0 / 1.0
introspection public/v1 0.0 (no api) n/a
introspection holdouts/v1 0.0 n/a
cross-domain-transfer public/v1 0.0 1.0 / 1.0
cross-domain-transfer holdouts/v1 0.0 1.0 / 1.0
Foundation guarantees (storage + replay) intact across every lane
that has them. The reasoning-depth signal is uniformly zero. The
five lanes triangulate four architectural gaps:
Gap 1. generate/graph_planner.py has no transitive composition.
Gap 2. field/propagate.py has no derivable-but-not-asserted recall.
Gap 3. core/cognition/explain.py module does not exist.
Gap 4. no structural-pattern recogniser (cross-subdomain transfer).
Gaps 1, 2, 4 cluster on the same code surface and may close together
as a single bounded PR. Gap 3 is independent module-creation work.
Lane scaffolding mirrors inference-closure (contract.md, runner.py,
dev + public/v1 + holdouts/v1 cases.jsonl, baselines/v1_structural_zero.json,
gaps.md). All runners are parallel-safe and use the standard
run_lane(cases, *, config, workers) interface.
Per-lane gaps.md records the engineering shape for v2 plus future
directions worth not forgetting:
- compositionality/gaps.md: metaphor is compositionality with
selective property transfer; building it is correctly downstream
of closing this lane.
- cross-domain-transfer/gaps.md: metaphor + narrative as
cross-domain operators; narrative requires the Agency open-scope
decision to pin first.
- introspection/gaps.md: explain API is also the substrate for
first-person narrative self-account.
Recommended v2 sequence in docs/PROGRESS.md:
1. Pin Agency + Tool-use open-scope decisions (deadline: before
Phase 3 engineering).
2. Engineer Gaps 1 + 2 as one bounded PR.
3. Engineer Gap 3 independently.
4. Re-author cross-domain-transfer v2 with matched-control
contract refinement.
Phase 3 v1 exit: 0/5 lanes passing, which is the expected v1 floor.
CLI suites smoke / cognition / teaching pass; no regression on
Phase 2.
2.2 KiB
multi-step-reasoning eval lane
What it measures
Whether the pipeline produces and consumes intermediate proposition-graph states for problems whose solution requires three or more inferential hops.
This sharpens inference-closure: inference-closure scored two-hop transitive entailments; this lane scores 3-, 4-, and 5-hop chains and additionally checks that intermediate states are observable in the proposition graph after the chain is taught.
Why it matters
Single-hop and two-hop closure can in principle be implemented by local pattern composition. Three-or-more hops require the pipeline to build and traverse an inference path that does not exist verbatim in any single premise. This is closer to the roadmap's question: does CORE think, or does it pattern-match longer templates.
Patterns covered (v1)
| Pattern | Shape | Hops |
|---|---|---|
chain_3 |
A is B; B is C; C is D | 3 |
chain_4 |
A is B; B is C; C is D; D is E | 4 |
chain_5 |
A is B; B is C; C is D; D is E; E is F | 5 |
mixed_relation_3 |
A is B; B grounds C; C precedes D | 3 |
mixed_relation_4 |
A causes B; B grounds C; C is D; D precedes E | 4 |
Sub-metrics
M1. chain_endpoint_in_surface— the final-hop entity appears (case-insensitive, token-bounded) insurfaceorwalk_surface.M2. intermediate_in_graph— at least one intermediate hop is observable in the probe response's articulation_surface or walk_surface (proxy for graph state inspection).M3. premises_stored— every taught hop emits a proposal.M4. replay_determinism— two fresh runs match by trace_hash.
A case passes when M1 AND M3 AND M4 hold. M2 is reported as diagnostic signal — partial credit when chain_endpoint is missed.
Overall pass thresholds (v1)
chain_endpoint_recall_rate(M1) ≥ 0.50premises_stored_rate≥ 0.95replay_determinism≥ 0.95
Relationship to inference-closure v1
Same architectural gaps apply: no transitive composition in
graph_planner.py, no path-recall in field/propagate.py. This
lane scores how the gap scales with chain length. v1's likely
result: uniform M1 failure across all chain lengths.