Skip to content

docs(adr): push notifications — event-driven read-model over polling - #12

Draft
brettchien wants to merge 3 commits into
mainfrom
docs/adr-push-notifications
Draft

docs(adr): push notifications — event-driven read-model over polling#12
brettchien wants to merge 3 commits into
mainfrom
docs/adr-push-notifications

Conversation

@brettchien

Copy link
Copy Markdown
Contributor

Defines the "later" in ADR-3's "polling first, streaming later" for live updates.

Decision: push at two boundaries, two phases.

  • skin ↔ core — MCP resource subscription: roster is an MCP resource, skin resources/subscribe, core sends notifications/resources/updated on change. The 5 s poll leaves the skin. (Phase 1 — no AWS infra; core may still poll AWS internally.)
  • core ↔ AWSEventBridge (ECS Task State Change / Service Action) → core updates its cached read-model and emits resources/updated. Steady-state ECS polling → zero. (Phase 2.)
  • Polling stays only as a reconciliation fallback (resync on subscribe/reconnect + low-frequency) — the correctness backstop for best-effort delivery.
  • OS/mobile notifications (alert when a deployment goes Unhealthy) are a downstream consumer of the same stream, not a separate pipeline.

Notes the desktop already half-receives notifications (the sidecar MCP reader gets id-less lines today; Phase 1 makes it act on them), and that remote/iOS skins need a streaming transport (ADR-3 deferred) before they can subscribe.

Draft — for review/wording before Accepted. Companion to desktop-core-sidecar.md (#9).

🤖 Generated with Claude Code

skin↔core via MCP resource subscriptions, core↔AWS via EventBridge, polling
demoted to a reconciliation fallback. Two-phase: (1) skin stops polling, core
pushes resources/updated (no AWS infra); (2) EventBridge → zero steady-state
ECS polling. OS/mobile notifications are a downstream consumer of the stream.
Supersedes ADR-3's "polling first" for live updates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@brettchien
brettchien marked this pull request as draft August 10, 2026 04:20
Orca and others added 2 commits August 10, 2026 12:24
…k8s watch+events)

Add §3.3: each provider's native stream maps to one resources/updated contract;
k8s watch (informer list→watch→resync; 410 Gone → re-list) is the reference
reconciliation shape the ECS adapter emulates. Tighten the multi-vendor open Q.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 'Realizes' ADR-3's deferred streaming, not 'Supersedes' (ADR-3 not yet accepted)
- subscriber semantics: read current state then resources/updated deltas
  (matches MCP; no auto-snapshot on subscribe)
- reference the sidecar reader as PR #9 rather than a not-yet-on-main file link

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant