rule_id: material_decision_maker_alert_delivery
name: Material Decision-Maker Alert Delivery
type: delivery
domain: all
applies_to:
agent: delivery
triggers:
- output severity is "material" or "high_impact"
- audience tier is "decision_maker"
- output type is "alert" or "recommendation"
conditions:
- audience identifier is verified and active
- cadence policy not exceeded
- HITL authorization recorded (per Standard 9 for decision-maker material outputs)
action:
primary_channel: audit-log
secondary_channel: audit-log
fallback_channel: audit-log
cadence_limits:
max_per_day: 1
max_per_week: 5
acknowledgment_required: true
acknowledgment_window_sec: 86400
escalation_on_no_ack: operations-reviewer
hitl_authorization_required_for:
- severity == "material"
- severity == "high_impact"
disclosure_policy:
audience_clearance_check: required
attachment_policy: no_raw_data_summary_only
confidence_framework:
base_confidence: inherited from upstream visualization confidence
adjustments:
- if primary channel registered -> no adjustment
- if falling back to secondary channel -> subtract 0.05
- if falling back to fallback channel -> subtract 0.10
rationale: |
Decision-maker audiences receive limited high-value outputs; volume must be controlled
to preserve signal. Acknowledgment tracking ensures the framework knows whether
material outputs were seen.
The channel-adapter pattern keeps this rule universal across channel types: the
framework supports any channel an organization registers (email, secure messaging,
dashboard notification, document repository, mobile push, etc.). Specific channel
selections live in the organization's encoded channel registry, not in the rule.
All channel slots default to "audit-log" — the framework's built-in no-side-effect
channel — because the open-source build ships no real channels. Deployers register
their channels in src/decision/channel-registry.ts (via registerChannel(...)) and
override the slots above in a domain or organization-specific rule variant.
SMEs encode variants for other audience tiers (manager, analyst, external) with
appropriate channel and cadence rules.
declared_by: framework_foundation
declared_date: 2026-05-26
last_reviewed: 2026-05-26
status: active
notes: |
The acknowledgment_window_sec is 86400 (24 hours). escalation_on_no_ack names a
ReviewerRole the framework knows about (operations-reviewer); the runtime maps the
rule's string back to the typed ReviewerRole.