You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(bulk): address second round of selector review feedback
Codex's re-review of the structural-selector feature (PR #2246) surfaced
four remaining gaps:
- bulk_selector: a cross-domain aggregate (e.g. group.living_room_lights)
assigned to a selected area was excluded from root candidates before
membership expansion, so its ungrouped target-domain members were never
discovered.
- bulk_selector: a device-registry entry missing `id` was silently
skipped by the strict visibility resolver, letting a device-inherited
exclusion drop out of the hidden set instead of failing closed (mirrors
the per-entry validation in visibility/enforcement.py).
- policy/middleware: concurrent identical selector calls shared one
pending approval via find_or_create, so a single approval click could
release both waiters and dispatch the selector twice.
- policy/evaluator: the selector fail-safe gated every ha_bulk_control
selector call whenever any rule named the tool, even when that rule's
predicates were fully selector-inspectable and simply didn't match —
defeating a deliberately conditional rule.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
0 commit comments