core/generate/comprehension
Shay 1a78e36e69
feat(comprehension): lexeme primitive registry (ADR-0164.1) (#324)
Adds generate/comprehension/lexeme_primitives.py with the eight seed
primitives specified by ADR-0164.1:

  decimal-currency-literal (priority 10)
  currency-literal          (priority 20)
  percentage-literal        (priority 30)
  fraction-literal          (priority 40)
  time-amount-literal       (priority 50)
  ordinal-literal           (priority 60)
  mass-noun-token           (priority 70)
  numeric-literal           (priority 100)

LexemePrimitive and LexemeMatch are frozen/slots dataclasses. scan()
runs primitives in priority order and returns the first hit wrapped in
a MappingProxyType over sorted-key extracted_values for canonical-bytes
stability. All patterns use explicit space characters ([ ]?, [- ]?) not
\s so the ADR-0165 compliance invariant holds.

55 tests cover: construction invariants, canonical fires (each
primitive on its own example), overlap precedence ($18.00, 1/2, 50%),
refusal on Tina/empty/verbs, determinism, sorted-key stability, and
the ADR-0165 compliance smoke test.
2026-05-26 20:03:39 -07:00
..
__init__.py feat(comprehension): add ComprehensionState skeleton (#321) 2026-05-26 19:32:22 -07:00
lexeme_primitives.py feat(comprehension): lexeme primitive registry (ADR-0164.1) (#324) 2026-05-26 20:03:39 -07:00
state.py feat(comprehension): split ComprehensionState into ProblemReadingState + SentenceReadingState (ADR-0164.3) (#323) 2026-05-26 19:54:17 -07:00