Fix and feature notification delivery without polling storms #15

Merged
Breadway merged 3 commits from feature/bug-24-notices into main 2026-10-12 09:53:18 +08:00
Owner

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

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
feat: fix and release notifications for followers
All checks were successful
check / check (push) Successful in 1m18s
ae2db99c8c
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.
fix: durable acked notices with a no-poll wait channel
All checks were successful
check / check (push) Successful in 1m5s
a7fc624db2
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, unfollow
Merge remote-tracking branch 'origin/feature/bug-23-releases' into feature/bug-24-notices
All checks were successful
check / check (push) Successful in 1m5s
ece57b14ae
# Conflicts:
#	src/db.rs
#	src/lifecycle.rs
docs: describe the peek, ack and wait notification contract
All checks were successful
check / check (push) Successful in 1m10s
d8b1f248ed
The README still described drain-on-read and told clients to poll status;
document the non-destructive peek, the ack endpoint and the wait channel.
Merge remote-tracking branch 'origin/feature/bug-23-releases' into feature/bug-24-notices
All checks were successful
check / check (push) Successful in 1m16s
b450bbe1f3
# Conflicts:
#	src/lifecycle.rs
Breadway force-pushed feature/bug-24-notices from b450bbe1f3
All checks were successful
check / check (push) Successful in 1m16s
to 16f7917998
All checks were successful
check / check (push) Successful in 1m5s
2026-10-12 09:21:57 +08:00
Compare
Breadway changed target branch from feature/bug-23-releases to main 2026-10-12 09:53:17 +08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Breadway/breadbug-server!15
No description provided.