Codex R15 flagged two P1 correctness bugs in AutomationEngine: - Conditions were never evaluated — a trigger→condition→action rule ran its actions unconditionally. Now every stored condition must match current entity state (AND) before actions run; a false condition does NOT touch the cooldown clock, so the rule stays armed for its next legitimate trigger. - Cooldown was read-check-then-save, so concurrent queue workers on a burst of state changes could all pass the check and each fire. Now claimed with a single conditional UPDATE — exactly one worker wins the race (H5). +3 tests (condition true/false, cooldown-not-armed-on-failed-condition). AutomationTest 9 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| AutomationEngine.php | ||
| DeviceCommandService.php | ||
| HomeStatus.php | ||
| MqttCredentialProvisioner.php | ||
| SystemHealth.php | ||
| UnifiClient.php | ||