New, separate model_id-based filter distinct from the existing ignore_models_id deny-list (SIENTIAPDE-2012): a group configuring model_ids only receives notifications from those models. Both axes apply together (AND) when a group sets both. Design decisions made while implementing (matching the levels/ ignore_models_id split from SIENTIAPDE-2011/2012, not yet confirmed with the team beyond what's in the ticket): - Query-time filter: union of every active group's model_ids, applied only when ALL active groups set one -- mirrors levels' exact union-or-nothing logic in _compute_query_time_filter. Combines cleanly with ignore_models_id's intersection $nin on the same model_id field. - Per-group filter: extended _check_levels_and_ignore_models_id (now _check_levels_and_model_filters) in slot_manager.py, and the inline condition in formatters.py's filter_notification_reports. - Empty/missing model_ids means no restriction, same convention as levels and ignore_models_id. Covered by new unit tests (slot_manager, formatters, _compute_query_time_filter) and two new e2e tests against real Mongo/Redis/Temporal: per-group allow-list interacting with another unrestricted group, and the query-time union excluding a model outside every active group's allow-list. Not yet verified on the real cluster -- blocked on the dev cluster's package index not auto-syncing new sientia_do releases (separate issue, being investigated for SIENTIAPDE-2013). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
13 KiB
13 KiB