Shay
|
957e7c6642
|
feat(comprehension): split ComprehensionState into ProblemReadingState + SentenceReadingState (ADR-0164.3) (#323)
Reconciles the #321 skeleton with ADR-0164.3's two-level state model.
Changes:
- Renames ComprehensionState → SentenceReadingState (backward-compat alias
kept; existing callers need not change)
- Adds 7 new fields to SentenceReadingState (all defaulted so existing
construction still compiles):
frame, pending_quantities, pending_entity_ref, pending_verb,
token_index, lookback (≤8 entries, validated), partial_frame_payload
- Introduces SentenceFrame (Literal), VerbReference, AppliedCategory,
FramePayload (stub, frame_kind validated)
- Adds ProblemReadingState (outer, problem-scoped) with all 7 fields
per ADR-0164.3 table order, no defaults (explicit construction required)
- Introduces PartialInitialPossession and PartialOperation (nullable
precursors to ADR-0115 types), PronounResolution
- Adds READER_REFUSAL_REASONS (11-member frozenset, closed/ADR-tracked)
and ReaderRefusal dataclass with reason validation
- Adds to_canonical_bytes() standalone function implementing
ADR-0164.3 §Canonical-bytes rules: sort keys, omit None, Decimal→str;
handles ProblemReadingState, SentenceReadingState, ReaderRefusal
- SentenceReadingState.canonical_bytes() kept backward-compatible
(original 5 fields, null for None) — existing pinned-bytes tests pass
- 47 tests: all original tests pass; new tests cover ProblemReadingState
construction, determinism gate, sensitivity gate, ReaderRefusal
construction and every READER_REFUSAL_REASONS entry
Refs: #320 (ADR-0164.3), #321 (comprehension-state-skeleton)
|
2026-05-26 19:54:17 -07:00 |
|