Skip to content

v3.23.0

Latest

Choose a tag to compare

@goruck goruck released this 31 Jul 02:24
0df7c0b

Added

  • Sentinel can now alert on motion detected while nobody is home, at any hour — a new deterministic rule template, motion_detected_while_away, proposed by @hruba202 in #518. It is the day-agnostic sibling of motion_detected_at_night_while_away (v3.22.0): same any-of sensor semantics, same departure/arrival grace suppression, same advisory check camera action (a motion finding has no specific door or window to close, so nothing is actuated). It defaults to low severity — daytime motion while away has more benign explanations (cleaners, deliveries, pets) than night motion — and the same pet/outdoor-VMD noise caveat applies: scope it to interior sensors pets can't reach, or snooze per rule.

Fixed

  • Discovery candidates with index-based evidence paths can now normalize — the discovery LLM sometimes cites evidence as entities[31].state instead of naming the entity; the index is only meaningful against the snapshot the candidate was drafted from, so such candidates could never resolve their motion sensor and stayed unsupported even when the summary named the entity outright (the exact shape of #518). Motion-named binary_sensor IDs written in the candidate's prose are now promoted as motion evidence, and the semantic dedup key uses the same prose fallback — without it, an activated rule would never suppress re-proposals of its own candidate. Evidence-path entity IDs still win when they resolve; prose IDs are restricted to binary_sensor.* (other domains would register rules whose state=='on' evaluator can never match — the #514 invariant), so derived.* paths and stray dotted words never become rule targets.
  • Prose-derived entity IDs are resolved against live states at approval — candidate prose is LLM output, so a hallucinated or paraphrased sensor name (e.g. …_motion_sensor vs the real …_motion) would have registered a rule whose evaluator fails closed forever while its dedup key suppressed re-proposals: a silent, permanent monitoring gap the user believes is active. Approval now drops IDs that don't resolve and refuses the proposal (entities_unresolved) when none remain. Found by cross-model adversarial review.
  • A prose battery/lock/staleness/open-entry condition no longer collapses into a plain motion rule — "battery of binary_sensor.kitchen_motion below 20% while away" with index-based evidence would have registered a rule alerting on motion, silently dropping the battery predicate; a "sensor stale for days" candidate would have inverted into alerting on normal motion. Such candidates now stay unsupported with an explicit missing-entity reason. Applies to the night template's branch as well.
  • Motion findings no longer list idle sensors as triggering entities — the away-motion evaluators (night template included) passed every resolved sensor to the finding, so a user's entity exclusion on an idle sensor could silently discard a genuine alert from the sensor that fired, notifications could name the wrong sensor, and cooldowns were recorded against sensors that never triggered. Only sensors actually reporting motion are listed now; the finding evidence still records every configured sensor's state.
  • Approving an away-motion rule already covered by a same-template any-of rule reports covered_by_existing_rule — including when the existing rule's sensor set is a superset (an [kitchen, hall] rule already alerts on kitchen), so duplicate rules producing duplicate findings can no longer be registered. Restricted to the two any-of away-motion templates; all-of templates (motion_while_alarm_disarmed_and_home_present) are never treated as covering a subset. Note: a night-template rule and a day-agnostic rule on the same sensors are different templates and will both alert on night motion — the docs now advise replacing the night rule when adopting the day-agnostic sibling (an evaluator-level dedup was tried and reverted: it ran before snooze/exclusion suppression and could silently lose the day rule's alert while the night rule was snoozed).
  • "Day or night" candidates keep their all-hours coverage — contrastive phrasing ("day or night", "any time, including night", "not only at night") contains the substring "night" and silently narrowed to the night-gated template, discarding the daytime coverage the candidate explicitly proposed. Such candidates now route to motion_detected_while_away.
  • Daytime unknown-person and camera-correlation candidates keep their camera templates — the new day branch would otherwise have captured "unknown person + motion while away" (downgrading a sensitive high-confidence camera rule to a low advisory) and "motion with no camera activity" candidates (widening camera-correlation semantics to every motion event).
  • Semantic dedup keys now match their activated rules in three more shapes — (1) a candidate citing a person tracker in evidence plus an index-based motion path normalizes from prose but keyed subject=unknown, so the activated rule never suppressed its re-proposals; (2) door-named motion sensors (binary_sensor.front_door_motion) keyed subject=entry_door before motion — the #516 motion-vs-entry disambiguation now applies to the key module too; (3) away phrasings the normalizer accepts ("no one at home", "without occupants") keyed home=1 via the bare "home" substring. All three verified by cross-model review with empirical reproductions.
  • Proposals card no longer uses a regex lookbehind — the JS lookbehind literal is an early SyntaxError on WebKit < 16.4 (older iPad wall panels), which would have stopped the entire card script from parsing, not just the new branch. Replaced with an engine-portable capture-group form; the card also mirrors the server's per-class fallback trigger and new guards, so its template preview matches what approval actually registers.