Identity Watchlist
Implementation Status
- Status:
shipped - Owner shell:
Setup > Trust & Signing - Canonical routes:
/setup/trust-signing/watchlist/entries/setup/trust-signing/watchlist/alerts/setup/trust-signing/watchlist/tuning
- Secondary entry points:
Mission Control > Alertsdeep-links intoAlertsOps > Notificationsdeep-links intoTuningandAlerts
Recommendation
Restore Watchlist as a narrow operational shell owned by Setup > Trust & Signing, not as a standalone top-level product.
- Canonical mount:
/setup/trust-signing/watchlist - Suggested user-facing title:
Identity Watchlist - Suggested nav label:
Watchlist
This capability is primarily about trust policy administration around signer identities, with alert outcomes surfaced into Mission Control and Ops > Notifications.
Why This Is The Right Shape
- The current implementation already supports CRUD, pattern testing, scope, severity, deduplication, and alert history.
- Those are configuration and trust-governance behaviors, not a broad cross-product workspace.
- The supporting runbook and Attestor guide describe watchlist as an operator control around identities and alerting hygiene.
- The best product shape is one owned shell with secondary visibility in alert-centric surfaces.
Operator Modes
1. Tenant Trust Mode
- Used by tenant operators tuning their own issuer, SAN, or key-id watch rules.
- Focus: entries, scopes, severity, enable/disable, and match testing.
2. Platform Trust Admin Mode
- Used by system admins managing global and system-scoped entries.
- Focus: global coverage, noisy patterns, dedup performance, and notification routing.
3. Incident Triage Mode
- Entered from
Mission Control > AlertsorOps > Notifications. - Focus: alert detail, matched identity context, and jumping back into the owning watchlist rule.
Recommended IA
Primary tabs
Entries- list, filter, create, edit, enable/disable, delete, and test matching rules
Alerts- recent watchlist alerts, alert severity, tenant/source context, and jump-to-entry actions
Tuning- dedup windows, notification channels, alert volume controls, and performance guidance
Header context
- scope switcher:
Tenant,Global,System - summary chips:
- enabled entries
- alerts last 24h
- suppression ratio
- scan latency p99
Page Anatomy
Entries tab
- left: searchable/filterable table with scope, match mode, severity, enabled state, and recent-match count
- right: split detail panel or drawer for create/edit
- row actions:
- enable/disable
- edit
- duplicate
- delete
- test pattern
Alerts tab
- top filters:
- severity
- time window
- scope
- tenant
- suppression state
- main list:
- alert time
- matched entry
- signer identity
- source channel
- dedup status
- detail drawer:
- raw match context
- related entry
- recent similar alerts
- jump to Mission Control or Notifications if needed
Tuning tab
- cards for:
- dedup effectiveness
- scan latency
- top noisy rules
- notification channel health
- forms for:
- default dedup window
- per-severity channel overrides
- alert storm guidance
Route Contract
Keep one canonical route family under trust/signing setup.
Canonical routes
/setup/trust-signing/watchlist/setup/trust-signing/watchlist/entries/setup/trust-signing/watchlist/alerts/setup/trust-signing/watchlist/tuning
Query-param state
tab=entries|alerts|tuningscope=tenant|global|systementryId=<id>for opening the edit draweralertId=<id>for opening the alert detail drawerreturnTo=<encoded route>when entered from Mission Control or Notifications
Alias and entry rules
Mission Control > Alertsshould deep-link into?tab=alerts&alertId=...Ops > Notificationsshould deep-link into?tab=tuning- no separate sidebar product or parallel route family should exist
What To Merge
Merge into Entries
WatchlistPageComponentlist mode- existing create/edit form
- existing pattern test behavior
Merge into Alerts
WatchlistPageComponentalert table and alert drill-down behavior
Merge into Tuning
- duplicate-suppression controls
- notification behavior controls
- runbook-driven KPIs and tuning guidance
Single Actions And Supporting Surfaces
Create or edit rule
- use a drawer or split detail panel inside
Entries - add a standalone route only if audit/history requires a permalink
Test pattern
- keep inside the edit experience
- never give it a dedicated page
Alert detail
- open as a drawer from
Alerts - preserve deep links via
alertId
Dedup diagnostics
- keep in
Tuning - optionally expose summary KPIs in
Ops > Notifications
Cross-Product Entry Points
Mission Control > Alerts- watchlist source chip opens the
Alertstab
- watchlist source chip opens the
Ops > Notifications- channel health card links to
Tuning
- channel health card links to
SecurityorEvidencesurfaces- only deep-link to alert detail when a signer-identity event matters to an investigation
UI Standards For Implementation
- Use one shell component with tabbed child routes or stable tab state.
- Preserve scope awareness in header and filters.
- Support list/detail without forcing route churn for every edit.
- Keep alert outcomes visible in mission/notification surfaces without duplicating the configuration shell.
- Preserve deterministic sort order for entries and alerts.
Non-Goals
- Do not make Watchlist a top-level sidebar product.
- Do not split configuration and alert history across different owner areas.
- Do not move trust ownership into Mission Control.
Source Inputs
docs/modules/attestor/guides/identity-watchlist.mddocs/operations/watchlist-monitoring-runbook.mddocs/features/checked/web/identity-watchlist-management-ui.mdsrc/Web/StellaOps.Web/src/app/features/watchlist/watchlist-page.component.tssrc/Web/StellaOps.Web/src/app/routes/mission-control.routes.tssrc/Web/StellaOps.Web/src/app/routes/operations.routes.ts