fix(progress): a notice that cannot be sent is carried by the line already up #629

Merged
coilyco-ops merged 1 commit from coilyco-ops/a-deleted-line-is-less-than-nothing into main 2026-08-13 17:33:54 +00:00 AGit
Member

closes #624 - the progress line was deleted whether or not anything replaced it, so a failed notice send ended with the member holding less than the acknowledgement they already had.

closes #624 - the progress line was deleted whether or not anything replaced it, so a failed notice send ended with the member holding less than the acknowledgement they already had.
fix(progress): a notice that cannot be sent is carried by the line already up
All checks were successful
ci / image-build (pull_request) Successful in 22s
ci / test (pull_request) Successful in 39s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
656bdf08c8
runSerialized defers progress.Finish unconditionally and Finish deleted whenever
a line had been posted, so any failure to send the notice ended with the
acknowledgement removed and nothing in its place. Kai's trace on sirens-echo#619
is exactly that: the 90 byte notice existed at 17:07:18, the send lost its
budget at 17:07:28, and the progress line was deleted at 17:07:29.

The member ended that turn with less than they had while it was running.

TurnProgressSink already had Edit, so the line already in the channel carries the
notice instead of being removed. An edit is a different call from a send, against
a message that already exists, so it can land where the send did not.

The line is claimed before the edit is attempted rather than after it succeeds.
A line that could not be updated is then left rather than deleted, so the worst
case is a stale stage rather than dead air. That is deliberate and it is what
the three revert-checked tests pin.

Nothing changes for a turn that delivered. A notice that sends normally never
carries, its narration is still removed, and a turn too short to have posted a
line has nothing to carry at all.

This is the third of the four acceptance criteria on sirens-echo#619. The first
is fixed by pull request 623, which removes one reason the send fails rather
than changing what happens when one does. Criteria two and four are open.

closes #624

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