-
Notifications
You must be signed in to change notification settings - Fork 0
feat: NotificationSink protocol for out-of-band operator alerts #849
Copy link
Copy link
Open
Labels
prio:mediumShould do, but not blockingShould do, but not blockingscope:medium1-3 days of work1-3 days of workspec:architectureDESIGN_SPEC Section 15 - Technical ArchitectureDESIGN_SPEC Section 15 - Technical Architecturespec:task-workflowDESIGN_SPEC Section 6 - Task & Workflow EngineDESIGN_SPEC Section 6 - Task & Workflow Enginetype:featureNew feature implementationNew feature implementationv0.7Minor version v0.7Minor version v0.7v0.7.4Patch release v0.7.4Patch release v0.7.4
Description
Summary
Implement a pluggable NotificationSink protocol with adapters for ntfy/Slack/email to deliver out-of-band operator alerts when the web dashboard is not being watched.
Research Source
- ntfy.sh v2.18.0 (self-hostable HTTP push notifications, Apache-2.0, 29.2k stars)
Motivation
Currently there is no way to alert operators outside the web dashboard. A TODO exists at security/timeout/scheduler.py:190:
# TODO: Wire escalation to a notification sink so theDesign
Protocol
class NotificationSink(Protocol):
async def send(self, notification: Notification) -> None: ...Adapters
- ntfy: Single async HTTP POST to self-hosted or ntfy.sh instance
- Slack: Webhook adapter
- Email: SMTP adapter
- Console: Fallback logging adapter (default)
Integration Points
- Approval gate -- notify when contexts are parked waiting for human approval
- Budget enforcer -- notify on threshold breach alerts (warning/critical)
- Security escalation -- notify when deny-and-continue threshold is reached
- Stagnation detection -- notify on TERMINATE verdict
Configuration
notifications:
enabled: true
sink: "ntfy"
ntfy:
server: "https://ntfy.sh"
topic: "synthorg-alerts"
priority: "high"
filters:
min_severity: "warning" # info, warning, criticalKey Files
src/synthorg/engine/approval_gate.py-- parked context notificationssrc/synthorg/budget/enforcer.py-- budget threshold alertssrc/synthorg/security/timeout/scheduler.py-- existing TODO at line 190
Related Issues
- research: strategic agent trendslop mitigation (adversarial prompting + multi-perspective) #693 (strategic agent trendslop mitigation)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
prio:mediumShould do, but not blockingShould do, but not blockingscope:medium1-3 days of work1-3 days of workspec:architectureDESIGN_SPEC Section 15 - Technical ArchitectureDESIGN_SPEC Section 15 - Technical Architecturespec:task-workflowDESIGN_SPEC Section 6 - Task & Workflow EngineDESIGN_SPEC Section 6 - Task & Workflow Enginetype:featureNew feature implementationNew feature implementationv0.7Minor version v0.7Minor version v0.7v0.7.4Patch release v0.7.4Patch release v0.7.4