Make intent precedence state aware #40

Merged
lost-rob0t merged 1 commit from fix/zara-007-intent-precedence into feat/zara-timer-alarm-sounds 2026-07-19 01:34:57 +00:00
lost-rob0t commented 2026-07-18 21:40:09 +00:00 (Migrated from github.com)

What changed

  • added Prolog resolve/4 with explicit passive, conversation, and dictation state
  • removed duplicate stop, end, hello, search, and find KB routes
  • separated web search from todo search deterministically
  • added typed pending(...) results for missing open, text, and schedule slots
  • moved conversation and dictation stop classification out of Python into Prolog
  • added a typed PySwIP result adapter for actual string compounds and compound objects
  • added a checked-in 25-case intent corpus plus wake dispatch tests

Why

Duplicate Prolog clauses relied on source order, and wake mode treated compound Python skill terms as implementation-dependent strings. State controls and missing arguments could therefore resolve incorrectly or falsely execute.

Impact

Stop/end behavior follows interaction state, todo search cannot be shadowed by web search, every registered Python skill can cross the wake boundary, and incomplete commands return clarification instead of execution.

Validation

  • complete Nix gate: 24 pytest tests plus every scripts/test-*.sh
  • stable 25-case Prolog corpus matches t/fixtures/intents.expected
  • actual PySwIP string representation and mock compound adapter cases pass

Closes #8

## What changed - added Prolog `resolve/4` with explicit passive, conversation, and dictation state - removed duplicate `stop`, `end`, `hello`, `search`, and `find` KB routes - separated web search from todo search deterministically - added typed `pending(...)` results for missing open, text, and schedule slots - moved conversation and dictation stop classification out of Python into Prolog - added a typed PySwIP result adapter for actual string compounds and compound objects - added a checked-in 25-case intent corpus plus wake dispatch tests ## Why Duplicate Prolog clauses relied on source order, and wake mode treated compound Python skill terms as implementation-dependent strings. State controls and missing arguments could therefore resolve incorrectly or falsely execute. ## Impact Stop/end behavior follows interaction state, todo search cannot be shadowed by web search, every registered Python skill can cross the wake boundary, and incomplete commands return clarification instead of execution. ## Validation - complete Nix gate: 24 pytest tests plus every `scripts/test-*.sh` - stable 25-case Prolog corpus matches `t/fixtures/intents.expected` - actual PySwIP string representation and mock compound adapter cases pass Closes #8
Sign in to join this conversation.
No description provided.