Repository navigation
Description
Implementation slice (b) of the #1254 design (note: doc/2026-11-01T03-54-00Z_design_pwa_push_notifications.md, PR #3314; epic #1184). Depends on slice (a) installability.
Build the push plumbing: VAPID keypair wiring (private key fetched by secret name at runtime, never in repo/Nix store), subscription store push-subscriptions.json in the runtime state dir (shape per design §4, 404/410 pruning), subscription API (create/update/delete with per-class map + quiet-hours prefs), and the real service worker (push + notificationclick handlers routing to the payload URL).
Includes the §6 kill-switch migration: ship the /api/sw-probe reporting first; replace /sw.js with the real worker only when 14 consecutive days of probe data show no foreign registration, otherwise the new worker unregisters foreign registrations on activate for one release. Invariant: no release serves a /sw.js that neither evicts the stranded opencode worker nor is the real worker.
Acceptance:
- A test subscription receives a push end-to-end on the tailnet origin (branch A); payload click lands on the payload URL
- Subscription store prunes on 410; per-class map + quiet prefs round-trip via the API
- The kill-switch migration invariant above holds at every step (probe data or eviction-on-activate present in the replacing release)
- No secret material in repo, store, or logs
Activity
developing-today commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
31 remaining items
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
agent-note:v1
event: picked_up
task: 8787 (repo-health-code-pilot; worker repo-worker-code; lane 9aca43b4-5439-4939-9f71-323f5d32521b)
state: Claimed to verify the remaining live Web Push acceptance.
next: Revalidate #3316 and PR #3680, confirm documented Tailscale target and intentional installed/subscribed browser access, and send only the labeled test push if those checks pass.
dezren39 commentedon Nov 4, 2026
agent-note:v1
event: blocked
task: 8787 (repo-health-code-pilot; worker repo-worker-code; lane 9aca43b4-5439-4939-9f71-323f5d32521b)
state: Blocked on required live-browser access.
verified: #3316 remains OPEN; PR #3680 is MERGED. The documented Tailscale origin is reachable (/alerts returned 200), but /api/sw-probe reports zero browser reports. This host exposes headless Chromium only; no interactive browser-control integration or intentionally subscribed browser was available.
blocker: Live acceptance requires an intentional installed browser subscribed to https://amd-6.raptor-pumpkinseed.ts.net, with notification receipt and click-through to /alerts observable.
work: No subscription was created and no user-visible push was sent; no code changes.
resume: Provide an intentional subscribed browser and interactive access, then send only the labeled /alerts test push and verify receipt/click-through.
bookkeeping: openchamber scheduled lane — sandbox backlog and sweep log deferred to fleet reconciliation.