feat(adr-0056): Phase C1 — contemplation loop landed
Implements ADR-0056's cognitive surface: takes a Phase B
DiscoveryCandidate and returns an enriched candidate with composed
polarity, classified claim_domain, evidence pointers, and recursive
sub-questions. No corpus mutation; no async; no LLM step.
Changes
- teaching/discovery.py: DiscoveryCandidate gains six C1 fields
with defaults that preserve Phase B JSONL byte-equality. Adds
EvidencePointer, SubQuestion, ClaimDomain types.
- teaching/contemplation.py (new): contemplate(candidate) +
canonical probe order (vault → pack → corpus), deterministic
decomposition over corpus-known intent objects, composition
rules from ADR-0056 §Composition, bounded-depth failsafe with
recursion_overflow audit signal. Vault probe is injectable;
None means no vault contribution this pass.
- tests/test_contemplation.py (16 tests): determinism (byte-
identical JSONL), no input/corpus mutation, empty pack+corpus
termination with gap-recorded sub-question, factual affirming
composition, direct same-pack contradiction → falsifies, mixed
evidence → undetermined + domain upgrade, recursion overflow,
frame-dependent connective → relational, Phase B byte-equality
preserved on uncontemplated candidates, sub_id stability,
evidence pointer admissibility, vault probe injection +
exception isolation.
Invariants preserved
- versor_condition(F) < 1e-6 — C1 touches no algebra path.
- No corpus / pack / runtime mutation — trust boundary intact.
- No clock-time, no LLM, no stochastic sampling, no async.
Lanes
- smoke 67, cognition 121, runtime 19, teaching 17, contemplation 16.
- core eval cognition: intent 100% / surface 100% /
term_capture 91.7% / versor 100% — unchanged.
Open questions stay open: frame-dependent connective table
authorship (v1 lives as a small constant in contemplation.py
pending pack-data migration), person-axis intent classification
for auto-evaluative, recursion-overflow telemetry shape, sub-
question deduplication. None block C1.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>