core/core/cognition
Shay 34baf60b35
feat(W-020b): DerivedRecognizer producer wiring (ADR-0154) (#278)
W-007/ADR-0149 wired the consumer side of the recognizer registry
(first_admitted_recognizer → graph derivation, opt-in via
recognition_grounded_graph). The producer side — capturing
(tokens, bundle) from admitted turns so derive_recognizer at
checkpoint can anti-unify them — had no production caller.
record_recognition_example existed but was only invoked by tests,
so _pending_recognizer_examples stayed empty in live sessions and
the registry could never grow from traffic.

Observed: 103-turn session wrote recognizers.jsonl empty even with
recognition running.

- CognitiveTurnPipeline.run calls runtime.record_recognition_example
  at the admitted-recognition boundary
- Producer fires unconditionally; consumer (derive_recognizer at
  checkpoint) stays opt-in behind the same flag — flipping it later
  is no longer a cold start
- hasattr guard keeps the pipeline tolerant of non-ChatRuntime
  runtimes

Validated: tests/test_adr_0154_recognizer_producer_wiring.py (5
tests covering admit/refuse, flag-off producer, end-to-end loop,
accumulation); core test --suite cognition/smoke + recognition
phase 1/2/refusal-propagation all green.

Out of scope: bootstrap of the first recognizer from operator
review (substrate-liveness audit scope); bounded growth of the
producer queue when consumer flag stays off (future LRU cap).
2026-05-25 18:44:12 -07:00
..
__init__.py feat(phase3): core/cognition/explain.py — close Gap 3 introspection 2026-05-16 15:09:48 -07:00
explain.py feat(w013): wire explain_last_turn() into core chat /explain REPL command (#265) 2026-05-25 06:09:49 -07:00
pipeline.py feat(W-020b): DerivedRecognizer producer wiring (ADR-0154) (#278) 2026-05-25 18:44:12 -07:00
provenance.py chore(phase2): close W-006/W-010/W-014 — cleanup + doc amendments (#264) 2026-05-25 06:05:17 -07:00
result.py [codex] Implement energy-modulated vault surface (#269) 2026-05-25 11:33:32 -07:00
surface_resolution.py fix(cognition): declare surface authority resolution (#76) 2026-05-20 19:42:10 -07:00
trace.py feat(adr-0024): Phase 2 — honest refusal with typed evidence 2026-05-17 14:49:08 -07:00