fix(telemetry): two delivery failures, two verdicts #749
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!749
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/two-failures-two-verdicts"
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?
Instance 3 of Quail's list on #675, and it is a defect I introduced:
Correct. #729 made the classification of the join right and left the join itself wrong. Two different member outcomes shared one verdict:
What ships
deliverOrReportsends, and on failure records the notice outcome separately rather than joining it. The turn's verdict is the send.turn.reply.undeliverednow carries its owndiscord_failure,discord_statusanddiscord_code.What I did not break, and nearly did
My first attempt made
reportUndeliveredreturnnilunconditionally. That would have brokenTestAnUndeliverableNoticeIsNotRetried, which asserts:That test encodes a real contract and I had not read it before changing the function under it. Caught by running the suite, not by reading. The landed shape keeps the contract:
reportUndeliveredstill reports its own failure, and the call site decides not to make it the turn's verdict.The test I threw away
My first test asserted properties of
discordFailureAttrsdirectly and the mutation passed — rejoining the two errors broke nothing, because nothing exercised the call site. That is the same defect I criticised on #292: a test asserting the sentence it does not test.Replaced by driving
deliverOrReportwith a turn that refuses every send, and asserting the returned error is not a join. Rejoining now fails it by name. The gate also caught at.SkipI had used as a cop-out in the discarded version.Verification
ward exec gatePASS on all six steps. Mutation: restoringerrors.Join(err, a.reportUndelivered(...))failsTestTheTurnVerdictDescribesTheSend, in a run where the package compiles.closes #747