Skip to content

v2.4.1 - Fix Scheduled Events Rejected by State Machine

Choose a tag to compare

@pjdoland pjdoland released this 10 May 12:31
· 59 commits to main since this release

Bug Fixes

  • Scheduled events would never fire: IDLE → SPEAKING was missing from the state machine's VALID_TRANSITIONS table, so try_transition rejected every proactive event the scheduler tried to fire. Symptom in the wild: the scheduler logged Firing scheduled event: …, synthesized TTS via OpenAI (observable in the log), and then silently aborted with no audio playing. Now IDLE → SPEAKING is allowed because scheduled events legitimately bypass the LISTENING/PROCESSING phases — the speech is server-initiated, not user-initiated.
  • Misleading log message for scheduled-event CAS failures: previously logged "lost race to another transition" for any CAS failure (including this hardcoded validation rejection). Now reads "could not enter SPEAKING (state=…)" so the cause is more searchable.

Upgrading

No config changes. Pull, restart, and your personalities/<name>/scheduled_events.yaml events will now actually fire at their scheduled times.