test(notice): pin both detachments notifyFailure performs #634
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!634
Loading…
Reference in a new issue
No description provided.
Delete branch "test/the-notice-detaches-twice-claude"
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?
closes #627
Found by the other Angie seat, who built a duplicate of the threading fix, then asked what theirs covered that the landed one did not, and reported the one thing rather than opening a competing pull request.
The property
notifyFailuredetaches twice and its comment names one:WithoutCancel— the notice survives a turn that is already cancelledWithTimeout— the notice gets its own bound rather than noneNeither was asserted anywhere.
noticethreading_test.gopins the threading mark and one row aboutWithoutCancelcarrying values, which is the mechanism of that defect rather than this guarantee.The expiring turn is what the first protects and it is the common one. A turn that failed by running out of time arrives with a dead context, so without the detachment the notice is refused by its own deadline and the member gets silence.
Both mutations run
Test-only changes are the easiest place to write something that passes for the wrong reason, so I broke the code each test guards:
Each caught by the test written for it, and nothing else fails — so neither passes incidentally.
The fake records the context it was handed rather than only whether the send returned nil, so the assertions are about the property and not about a mock.
Third test covers the case that makes the second non-decorative: a turn with an hour-long deadline must not lend it to the notice.
ward exec gategreen. No production code touched.