Fix and feature notification delivery without polling storms #15
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/bug-24-notices"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of BUG-EP1, implements breadboard issue BUG-24 (notification delivery). Stacked on the BUG-23 branch.
Marking a cluster fixed or confirming a beta or stable release queues one notice per follow with stage specific wording naming the app and version. Repeats never duplicate (durable per text dedup), new versions notify again, the fetch endpoint drains on read, unfollow clears pending notices, merges move the outbox.
Verified: cargo test (all suites green, 3 new tests), cargo clippy with -D warnings clean, cargo fmt clean.
Closes BUG-24
Queue one notice per follow when a cluster is marked fixed or a beta or stable release is confirmed, with wording that names the app, the version and the stage reached. Repeating a transition never duplicates (first text wins, durably); a new version notifies again. GET /v1/follows/{token}/notifications drains on read, unfollowing clears pending notices, and merges move the outbox with the follows.Address review on the notification delivery slice: - the notifications read is now a non-destructive peek that returns stable notice ids, instead of marking delivered before the response reaches the client, so a lost response never drops a notice - add POST /v1/follows/{token}/notifications/ack to mark specific ids delivered (the durable acknowledgement), and GET .../notifications/wait, a long-poll that holds until a notice is queued, as the no-client-poll delivery channel - the state transition and the outbox insert now commit together (mark_fixed_and_notify, confirm_and_notify), so a crash cannot leave a changed cluster with no notice queued; queued notices wake the waiters - notice wording names the app and stage even when no version is known - tests: peek, idempotent until ack, stable ids, ack, repeat transitions, wait without consuming, unfollowb450bbe1f316f7917998