Changed
- Discovery now understands home/away/night context structurally, not by English keywords (#524). Away/home/night context for Sentinel discovery candidates resolves primarily from the structured evidence paths the model cites (
derived.anyone_home,not derived.anyone_home,derived.is_night) through a new shared resolver used identically by rule normalization, dedup keys, and the proposals card — the English keyword matching remains only as a legacy fallback. A candidate whose title/summary carries no English direction words (the exact situation a future translated-discovery feature creates, and one the model can produce today) previously inverted silently: a "window open while someone is home" idea became a while-away rule, its dedup key never matched the activated rule so the same idea was re-proposed every cycle, and the card's away badge and severity never fired. All spelling variants the model emits now canonicalize to the same signal —NOT/!prefixes,== false/off/nocomparisons (including theisidiom), quote-wrapped paths, stacked negations, bareanyone_home/is_nightwithout thederived.prefix, and an explicitderived.is_night == falsenow correctly blocks the night fallback instead of triggering it. The discovery prompt tells the model to cite these paths whenever a candidate depends on occupancy or nighttime — and to omit them when it doesn't, so an over-cited path can't silently narrow an occupancy-agnostic rule. - A threshold or entry rule citing
derived.anyone_homewith no other occupancy signal now scopes to occupied hours instead of defaulting to while-away semantics — the structured path is trusted as the model's stated intent (proposals still require your approval before any rule activates). English away wording still overrides a bare positive path, so existing English candidates keep their meaning. - An always-on unavailable-sensors rule now covers its while-home variant in dedup — without this, the structured keying would re-propose the occupancy-scoped version of a rule you already approved, and approving the duplicate would double-alert on every occupied-hours outage. Coverage is deliberately limited to the unavailable family: templates whose firing condition lives outside the dedup key (motion-without-camera, alarm-disarmed entry) are never treated as supersets, so genuinely distinct night/away ideas still surface. Some previously seen candidates may be re-proposed once after upgrading while their stored dedup keys migrate to the structured form; they dedup normally afterwards.
Fixed
- Proposals card severity now recognizes structured away candidates — the severity heuristic only matched English prose, so a candidate citing
not derived.anyone_homewith no English wording under-reported as medium while the server registered the higher-value away rule. The card's context detection, rule-id preview, and GitHub issue prefill now share the same canonicalized evidence handling as the server (including identical whitespace and quoting behavior; canonicalization test vectors pin the server resolver's behavior the JS mirror is written against).