fix(telemetry): a send we abandoned is not a send Discord ignored #649

Merged
coilyco-ops merged 1 commit from coilyco-ops/we-stopped-waiting-is-not-no-answer into main 2026-08-13 17:54:31 +00:00 AGit
Member

closes #648 - no_response held both a gateway that never answered and a budget this service chose ending the send. An operator reading a run of them could not tell an outage from a timeout that is too short.

closes #648 - no_response held both a gateway that never answered and a budget this service chose ending the send. An operator reading a run of them could not tell an outage from a timeout that is too short.
fix(telemetry): a send we abandoned is not a send Discord ignored
All checks were successful
ci / image-build (pull_request) Successful in 22s
ci / test (pull_request) Successful in 34s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
d4d98ed894
discordFailureAttrs separated a rejection Discord answered, as rest_error with
its status and code, from everything else, as no_response. That second bucket
held two conditions an operator would act on differently.

Discord never answering is a gateway or transport fault, and there is little to
do but retry. A context deadline or cancellation is this service's own budget
ending the send, and nothing is wrong with Discord at all.

Kai's trace on sirens-echo#619 is the second kind and reads as the first. The
send was cancelled 10.001s after it opened, by the notice budget, and the record
says no_response. Nothing in that line says the failure was self-inflicted,
which is the most useful fact about it.

The classification is checked ahead of the REST branch, so a run of abandoned
sends can no longer be read as an outage. Everything Discord genuinely failed to
answer keeps no_response, and a REST error keeps its status, so the existing
series lose only the cases that were never Discord's fault.

Two doc corrections beside it. The failure_cause closed set was missing
shutdown, which my own pull request 612 added and did not record. The
discord_failure prose now names abandoned.

This is the fourth acceptance criterion on sirens-echo#619. The second, sending
the composed reply anyway when the stage overruns, is still open, though pull
request 629 now gets the notice in front of the member by another route.

closes #648

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!649
No description provided.