P1 — adapt Prolog resolution to IntentFrame and establish the canonical realistic command corpus #156

Closed
opened 2026-08-22 21:52:33 +00:00 by lost-rob0t · 0 comments
lost-rob0t commented 2026-08-22 21:52:33 +00:00 (Migrated from github.com)

Parent epic: #150
Depends on: #155
Integrates with: #122 (optional pre-resolver rewrite), existing kb/intents.pl, modules/intent_resolver.pl, PrologEngine.

Goal

Make Prolog emit/adapt the semantic contract from #154/#155 for built-in intents and establish one table-driven realistic command corpus that all future clients/providers reuse.

Required implementation

  • preserve Prolog-first deterministic resolution;
  • adapt legacy IntentResult(kind,name,args) callers through an explicit compatibility boundary rather than spreading old/new shapes;
  • make timer, open, text, todo/schedule and other supported commands use the common typed-slot rules instead of one-off missing-argument behavior;
  • ensure bare set a timer becomes a typed missing-duration intent, not generic failure;
  • keep exact literal slot content bounded and correctly normalized;
  • expose only bounded resolver evidence/source metadata;
  • define compatibility/fallback behavior for ask, python skill terms and unsupported intents;
  • keep #122 strictly upstream: rewrite output is revalidated by this resolver and cannot invent slot/provider authority.

Canonical corpus

Check in one declarative corpus used by Prolog/Python tests and later Android/voice fixture tooling. Include positive, negative, ambiguous and boundary utterances. Minimum examples: timer complete/pending/correction/cancel; open complete/pending; text complete/pending; search; memory request; screenshot/device capability; server/device unavailable; quoted/literal values; question/conversation cases that must not be hijacked as commands; misspellings/rewrites only where #122 owns them.

Regression/adversarial tests

  • intent precedence conflicts;
  • zero/negative/huge durations;
  • Unicode and punctuation;
  • empty/whitespace input;
  • ambiguous verbs;
  • slot text containing words that look like commands;
  • no dynamic Prolog goal/import/provider names from user strings;
  • deterministic normalized results across repeated runs;
  • old valid intent fixtures either map identically or have documented intentional migration.

Gates

Focused Prolog/Python semantic corpus script, existing Prolog engine gate, full repo/Nix gates, changed-code coverage and exact-head Actions.

Acceptance

Every shipped built-in command has a realistic semantic fixture and the resolver returns the same versioned semantic shape used by dialogue/capability work, with legacy compatibility isolated rather than authoritative.

Parent epic: #150 Depends on: #155 Integrates with: #122 (optional pre-resolver rewrite), existing `kb/intents.pl`, `modules/intent_resolver.pl`, `PrologEngine`. ## Goal Make Prolog emit/adapt the semantic contract from #154/#155 for built-in intents and establish one table-driven realistic command corpus that all future clients/providers reuse. ## Required implementation - preserve Prolog-first deterministic resolution; - adapt legacy `IntentResult(kind,name,args)` callers through an explicit compatibility boundary rather than spreading old/new shapes; - make timer, open, text, todo/schedule and other supported commands use the common typed-slot rules instead of one-off missing-argument behavior; - ensure bare `set a timer` becomes a typed missing-duration intent, not generic failure; - keep exact literal slot content bounded and correctly normalized; - expose only bounded resolver evidence/source metadata; - define compatibility/fallback behavior for `ask`, python skill terms and unsupported intents; - keep #122 strictly upstream: rewrite output is revalidated by this resolver and cannot invent slot/provider authority. ## Canonical corpus Check in one declarative corpus used by Prolog/Python tests and later Android/voice fixture tooling. Include positive, negative, ambiguous and boundary utterances. Minimum examples: timer complete/pending/correction/cancel; open complete/pending; text complete/pending; search; memory request; screenshot/device capability; server/device unavailable; quoted/literal values; question/conversation cases that must not be hijacked as commands; misspellings/rewrites only where #122 owns them. ## Regression/adversarial tests - intent precedence conflicts; - zero/negative/huge durations; - Unicode and punctuation; - empty/whitespace input; - ambiguous verbs; - slot text containing words that look like commands; - no dynamic Prolog goal/import/provider names from user strings; - deterministic normalized results across repeated runs; - old valid intent fixtures either map identically or have documented intentional migration. ## Gates Focused Prolog/Python semantic corpus script, existing Prolog engine gate, full repo/Nix gates, changed-code coverage and exact-head Actions. ## Acceptance Every shipped built-in command has a realistic semantic fixture and the resolver returns the same versioned semantic shape used by dialogue/capability work, with legacy compatibility isolated rather than authoritative.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/zara#156
No description provided.