Repair Prolog timer handling #38

Merged
lost-rob0t merged 1 commit from fix/zara-006-timers into fix/zara-005-dictation-lifecycle 2026-07-18 20:49:31 +00:00
lost-rob0t commented 2026-07-18 20:48:35 +00:00 (Migrated from github.com)

What changed

  • added deterministic Prolog timer parsing before generic verb selection
  • standardized timer commands as [Seconds, Name]
  • consolidated execution into one Prolog handler
  • kept scheduling, concurrent timer state, and completion notification in Prolog
  • made alarms explicitly unsupported instead of reporting false success
  • removed the redundant Python timer wrapper
  • added table-driven parser and fake-scheduler completion tests

Why

Generic intent and argument clauses shadowed timer-specific parsing, resolver and executor shapes disagreed, and completion only logged a claim that Python had handled a notification.

Impact

Common named and unnamed second/minute/hour timers resolve without the LLM, schedule the exact converted duration, and invoke the Prolog notification abstraction once on completion.

Validation

  • complete Nix gate: pytest plus every scripts/test-*.sh
  • pytest: 11 passed
  • timer fixtures, malformed inputs, unsupported alarms, exact scheduling, completion, and concurrent timers all passed

Closes #7

## What changed - added deterministic Prolog timer parsing before generic verb selection - standardized timer commands as `[Seconds, Name]` - consolidated execution into one Prolog handler - kept scheduling, concurrent timer state, and completion notification in Prolog - made alarms explicitly unsupported instead of reporting false success - removed the redundant Python timer wrapper - added table-driven parser and fake-scheduler completion tests ## Why Generic intent and argument clauses shadowed timer-specific parsing, resolver and executor shapes disagreed, and completion only logged a claim that Python had handled a notification. ## Impact Common named and unnamed second/minute/hour timers resolve without the LLM, schedule the exact converted duration, and invoke the Prolog notification abstraction once on completion. ## Validation - complete Nix gate: pytest plus every `scripts/test-*.sh` - pytest: 11 passed - timer fixtures, malformed inputs, unsupported alarms, exact scheduling, completion, and concurrent timers all passed Closes #7
Sign in to join this conversation.
No description provided.