core/core
Shay 9d31f80fc8
fix(W-011/W-012): propagate recognition refusal + catch InnerLoopExhaustion (#258)
W-011: recognition refusal_reason now materializes in
CognitiveTurnResult.refusal_reason via RECOGNITION_REFUSED enum value.
Precedence: recognition wins over generation (earlier-fail boundary).

W-012: ChatRuntime.chat() catches InnerLoopExhaustion from generate()
and returns a typed refusal ChatResponse with refusal_reason populated,
instead of propagating as an unhandled exception.

Adds RefusalReason.RECOGNITION_REFUSED to generate/exhaustion.py.

Lane SHAs: 7/7 match (demos don't exercise refusal paths — no re-pin).
Smoke + cognition suites green. Full suite not run to completion.
2026-05-24 20:46:46 -07:00
..
capability feat(ADR-0120 math, ledger flip): mathematics_logic → expert tier (first-ever) (#195) 2026-05-23 18:55:34 -07:00
cognition fix(W-011/W-012): propagate recognition refusal + catch InnerLoopExhaustion (#258) 2026-05-24 20:46:46 -07:00
contemplation feat(contemplation): land ADR-0080 phase 1 (#119) 2026-05-22 13:10:03 -07:00
demos feat: ADR-0113 rename expert-demoaudit-passed; reserve expert namespace (ADR-0114 GSM8K roadmap) 2026-05-22 15:36:10 -07:00
physics feat(epistemic): Phase 3 state tagging spine (#220) 2026-05-24 11:26:06 -07:00
__init__.py
_safe_display.py feat(adr-0051): trust-boundary hardening pass 2026-05-18 07:09:55 -07:00
cli.py feat(ADR-0120-math): math-expert promotion composer — technical pass on first eval, awaiting reviewer signature (#194) 2026-05-23 16:44:56 -07:00
config.py fix(W-016): wire vault probe into ChatRuntime discovery contemplation (#257) 2026-05-24 20:30:03 -07:00
epistemic_state.py feat(epistemic): populate normative_detail on TurnEvent and ChatResponse (#223) 2026-05-24 11:56:34 -07:00