Operating governance signals
Governance signals are observations operators see and act on. This guide walks through the runbook.Daily flow
- Triage the open queue at
mnemom.ai/dashboard/teams/{teamId}/governance(or viamnemom governance signals list --team <id> --status open). - Acknowledge signals you’re investigating. Records
acknowledged_actor_role— captures whether you acted asorg_admin,team_admin, etc. - Resolve with a
resolution_status:action_taken— you made changes (rebalanced team, refreshed cards, …).wont_fix— known noise or out of scope.duplicate— same root cause as another signal.false_positive— detector misfire (file a debt item).self_resolved— the underlying condition cleared itself before you acted.
- Dismiss for noise: the signal is acknowledged but no action is needed and no resolution category applies cleanly.
Notification destinations
Configure where signals route off-platform. Each destination is one channel binding for an org.Slack
PagerDuty
dedup_key (governance-signal-{id}) — coalesced detections don’t create duplicate incidents.
Generic webhook
Test before you trust
Every destination supports a synthetic test signal:last_tested_at / last_test_status on the destination row. The dashboard surfaces the result inline.
Filter narrowing
Each destination has an optionalfilter that AND-folds with the matching escalation rule’s predicate. Useful for “only critical to PagerDuty, everything else to Slack”:
sources, severities, scopes, pattern_types. Absent key = match-all on that dimension.
Escalation rules
Rules bind a predicate to a list of destinations. When an inserted signal matches the predicate, the dispatcher routes to the rule’s destinations (intersected with each destination’s filter).source— exact source match.pattern_type— exact pattern_type match.severity_min/severity_max— bound on severity.scope— exact scope match.team_id— narrow to one team.threshold_count+window_minutes— rate-based gating: fire only if ≥ N matching signals occurred in M minutes.
Rate-gating example
“Page on-call only if 3+ critical signals fire in 5 minutes”:Dedup across rules
If two rules both route to the same destination, the dispatcher dedups — one Slack message per signal, not two. Each contributing rule’sfire_count and last_fired_at still get bumped.
Coverage rollup
GET /v1/orgs/:org_id/governance/coverage?days=30 returns a per-(source, severity) aggregate over the window:
open ratios may need ack-process tightening; sources with high volume may want filter narrowing on noisy destinations.
Auditing
Every state transition recordsacknowledged_actor_role (who acted, in what capacity). resolution_status + action_taken provide the prose audit trail. The platform’s governance_audit_log table captures every governance mutation for full SOC2-shaped reconstruction.