Summary
canon_home_control_action normalizes a model/router action verb with raw.trim().to_lowercase().replace([' ', '-'], "_"). That maps each separator 1:1, so a run of separators becomes a run of underscores — "turn off" → "turn__off" — which matches no real HOME_CONTROL_ACTIONS verb. The dispatch is rejected and the device is never actuated (the light stays on). This is the same failure mode #400 fixed for single spaces, still open for separator runs.
Steps to reproduce
Dispatch home_control with an action verb carrying a doubled/spaced separator (small models and STT-derived text routinely produce these):
home_control{entity:"kitchen light", action:"turn off"} (double space)
action:"turn - off" (spaced hyphen)
action:"turn off" (tab)
Expected
turn off → canonical turn_off → light.kitchen_lights goes on → off (same as turn off).
Actual
canon_home_control_action("turn off") returns None → the runtime rejects the action → no actuation. "turn off" (single space) works; the double-space twin silently does nothing.
Notes
Whole class: any run of whitespace / - / _ between the verb tokens. Fix is to fold separator runs to a single _ instead of replacing 1:1. crates/genie-core/src/tools/home_action.rs.
Hardware
Non-Jetson (x86_64 dev / cross-build host)
GenieClaw version / commit
2ad90f4 (main)
Summary
canon_home_control_actionnormalizes a model/router action verb withraw.trim().to_lowercase().replace([' ', '-'], "_"). That maps each separator 1:1, so a run of separators becomes a run of underscores —"turn off"→"turn__off"— which matches no realHOME_CONTROL_ACTIONSverb. The dispatch is rejected and the device is never actuated (the light stays on). This is the same failure mode #400 fixed for single spaces, still open for separator runs.Steps to reproduce
Dispatch
home_controlwith an action verb carrying a doubled/spaced separator (small models and STT-derived text routinely produce these):home_control{entity:"kitchen light", action:"turn off"}(double space)action:"turn - off"(spaced hyphen)action:"turn off"(tab)Expected
turn off→ canonicalturn_off→light.kitchen_lightsgoes on → off (same asturn off).Actual
canon_home_control_action("turn off")returnsNone→ the runtime rejects the action → no actuation."turn off"(single space) works; the double-space twin silently does nothing.Notes
Whole class: any run of whitespace /
-/_between the verb tokens. Fix is to fold separator runs to a single_instead of replacing 1:1.crates/genie-core/src/tools/home_action.rs.Hardware
Non-Jetson (x86_64 dev / cross-build host)
GenieClaw version / commit
2ad90f4 (main)