v2.4.1 - Fix Scheduled Events Rejected by State Machine
Bug Fixes
- Scheduled events would never fire:
IDLE → SPEAKINGwas missing from the state machine'sVALID_TRANSITIONStable, sotry_transitionrejected every proactive event the scheduler tried to fire. Symptom in the wild: the scheduler loggedFiring scheduled event: …, synthesized TTS via OpenAI (observable in the log), and then silently aborted with no audio playing. NowIDLE → SPEAKINGis 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.