core/generate
Shay f223e61352 fix(generate): wire intent-aware realizer into chat hot path
The realize_semantic / realize_target pipeline in realizer.py was fully
implemented but never called from chat/runtime.py. The hot path only called
realize() from articulation.py, which returns raw S-P-O word tokens with no
intent, tense, negation, quantifier or rhetorical-move awareness. This
disconnected the 13-construction realizer from every live chat turn.

New module generate/intent_bridge.py:
- classify_intent_from_input() runs the rule-based classifier against the
  raw input text to obtain a DialogueIntent
- articulate_with_intent() builds a PropositionGraph from that intent,
  grounds the <pending> obj slots with recalled vocabulary from the
  generation result, plans articulation via plan_articulation(), and calls
  realize_semantic() for the intent-specific template path
- Falls back cleanly to the existing ArticulationPlan surface when the
  realizer returns an empty plan (OOV-heavy or UNKNOWN intent)

chat/runtime.py change:
- Import and call articulate_with_intent() after the existing realize() call
- Replace articulation.surface with the intent-bridge surface whenever the
  bridge returns a non-empty, non-pending string
- The existing ArticulationPlan dataclass is preserved and passed downstream
  so SentenceAssembler, turn_log, ChatResponse, and all trace fields remain
  structurally unchanged

Effect: chat() now produces intent-differentiated surfaces:
  DEFINITION  → "X is defined as Y"         (was "X Y Z")
  CAUSE       → "X is grounded in Y"         (was "X Y Z")
  CORRECTION  → "correction: X corrects Y"   (was "X Y Z")
  RECALL      → "recalling X: Y"             (was "X Y Z")
  VERIFICATION→ "X is verified: Y"           (was "X Y Z")
  COMPARISON  → "X and Y are distinguished..." (was "X contrasts_with Y")
  PROCEDURE   → "first, Y; then, X follows"  (was "X Y Z")
  CONJUNCTION → "X P and Y P"               (realizer edge handling)
  RELATIVE    → "X, which Pv Y, Pv Z"       (realizer edge handling)

Articulation fidelity is now geometrically honest AND structurally expressive.
The surface corresponds to internal intent state, not a generic S-P-O join.
2026-05-16 08:38:59 -07:00
..
__init__.py feat(generate): export SentenceAssembler, SentencePlan, assemble_surface from __init__ 2026-05-14 13:24:19 -07:00
articulation.py Graceful fallback in realize() when slot versors are missing 2026-05-13 21:41:52 -07:00
attention.py Add ADR-0008 salience attention 2026-05-13 22:40:36 -07:00
dialogue.py Fix test suite errors across core physics and generation 2026-05-14 13:02:32 -07:00
graph_planner.py feat(realizer): extend to all 13 English v1 constructions 2026-05-16 05:55:49 -07:00
intent.py feat: add intent-proposition graph comprehension layer 2026-05-14 19:52:57 -07:00
intent_bridge.py fix(generate): wire intent-aware realizer into chat hot path 2026-05-16 08:38:59 -07:00
morphology.py feat(realizer): extend to all 13 English v1 constructions 2026-05-16 05:55:49 -07:00
proposition.py Fix remaining runtime regressions after contract cleanup 2026-05-14 19:05:36 -07:00
realizer.py feat(realizer): extend to all 13 English v1 constructions 2026-05-16 05:55:49 -07:00
render.py feat(generate): add render.py — default TextRenderer and Renderer protocol (ADR-0011) 2026-05-13 10:51:52 -07:00
result.py Fix identity gating and vault telemetry 2026-05-14 15:44:01 -07:00
salience.py Implement core physics and pack validation 2026-05-14 12:35:19 -07:00
semantic_templates.py feat: vault recall index, Rust versor parity, cognitive pack expansion 2026-05-15 15:34:39 -07:00
stream.py fix(generate): close final generation field before return 2026-05-15 23:20:49 -07:00
surface.py feat(dialogue-fluency): wire multi-turn dialogue runtime 2026-05-15 21:05:59 -07:00
templates.py feat(realizer): extend to all 13 English v1 constructions 2026-05-16 05:55:49 -07:00