Fix #77: redrain fan-out after restart #86

Merged
crueber merged 1 commit from fix/issue-77 into main 2026-09-05 01:31:56 +00:00
Owner

Undrained notify-fanout is restart-safe: overflow/shortfall emissions mark the payload pending, drains write per-seq collab-fanout/ records, and a sweep (startup + minutely, reusing the webhooks enumeration — no new global LIST) re-enqueues pending undrained seqs. Regression tests drive the sweep explicitly (no sleeps); internal/notify coverage 97.1%, -race clean. Docs: 06 §8.1 + Decisions, 14 Seam 5 amendment. Fixes #77.

Undrained notify-fanout is restart-safe: overflow/shortfall emissions mark the payload pending, drains write per-seq collab-fanout/ records, and a sweep (startup + minutely, reusing the webhooks enumeration — no new global LIST) re-enqueues pending undrained seqs. Regression tests drive the sweep explicitly (no sleeps); internal/notify coverage 97.1%, -race clean. Docs: 06 §8.1 + Decisions, 14 Seam 5 amendment. Fixes #77.
Overflow/shortfall emissions mark the activity payload fanout_pending;
the drain writes a per-seq collab-fanout/ completion record; Run sweeps
once at startup and every minute reusing the webhooks repo enumeration
(no new global LIST, 32 seqs/repo/pass, 1 GET for quiet repos).
Retention deletes completion records with their events.

Docs: docs/features/06 §8.1 + Decisions entry; docs/go/14 Seam 5
amendment (new Create-only family, no new task kind). Regression tests
in internal/notify/redrain_test.go (explicit sweep drive, no sleeps).
Sign in to join this conversation.
No description provided.