fix(reactions): a turn shed for load leaves a mark on the message #493

Merged
coilyco-ops merged 1 commit from coilyco-ops/a-queue-timeout-leaves-a-mark into main 2026-08-13 14:30:04 +00:00 AGit
Member

closes #476 - the queue-timeout path notified and never marked, and the notice is throttled, so a throttled member got nothing at all.

closes #476 - the queue-timeout path notified and never marked, and the notice is throttled, so a throttled member got nothing at all.
fix(reactions): a turn shed for load leaves a mark on the message
All checks were successful
ci / image-build (pull_request) Successful in 21s
ci / test (pull_request) Successful in 33s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
c517a5008f
onDenied marks a refusal whether or not it also carries a notice, and says why
in a comment: a silent boundary still has to be visible to the member. The
queue-timeout path was written without that pattern. It sent the busy notice
and applied no reaction at all.

Two consequences, and the second is the one worth fixing promptly.

The member's message sits in the channel with no mark, so it reads as never
processed while the notice says otherwise.

And the notice is one per window, shared with the pending-cap denial's bucket.
A second member inside that window correctly gets no words, and with no mark
either the turn leaves no trace at all. That is the state that reads as the
service having ignored them.

A queue timeout never reaches the accepted mark either, because that lands as
the turn starts and this turn never started. So there was nothing at all to
see, not merely a missing final mark.

Marked with the failure glyph rather than the boundary one. A denial is a
service that would not answer and a queue timeout is a service that could not,
and the two are worth telling apart in a channel. Pinned by a case, so the two
outcomes cannot quietly collapse onto one glyph later.

The mark is applied before the throttle is consulted, which is what makes the
throttled case work, and that ordering is pinned by its own test.

closes #476

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
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
coilyco-gaming/sirens-echo!493
No description provided.