Repository navigation
fix(ci): outbox supersede requeue, lost+cancel recovery, policy hook home store (D-1120, D-1121, D-1124) - #472
Merged
Merged
Conversation
added 3 commits
October 25, 2026 10:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rows
D-1120 superseding an expired delivery now re-posts the newest status.
OutboxClaimmarked a seq whose posting claim had expired as superseded withoutrequeueNewest; a poster that died after its HTTP post landed left the host on the stale (possibly green) status. It now requeues the newest posted/posting status, asOutboxPostedandOutboxReleasealready do. Test:TestOutboxSupersedingAnExpiredClaimRequeuesTheNewest(fails without the fix: nothing queued).D-1121 a lost attempt that gets a cancel intent is now settled. Recovery's lost loop got E605 ("cancel intent won") from
lost -> retryable, fell into the error branch, and left the attempt (and run) unsettled on every pass. It now ends the attemptcancelled(also on theneeds-operatorpath for non-idempotent jobs), thenCloseDeadRunscloses the run. Test:TestRecoveryCancelsALostAttemptWithACancelIntent, both job kinds (fails without the fix withE605: cancel intent won).Not changed: the row's impact text also names
staleCheckertreating an unknown coordinator as stale (recovery.go) while docker discovery is daemon-wide, so another home's live container could berm -f'd. That needs a design decision (container labels carry no home; the process sweep relies on unknown = stale), so it is left for a follow-up.D-1124 the policy hook now reads the coordinator's store.
PolicyRequestgainedStore(the coordinator'sstate.db, set fromCoordinator.storePath());PolicyHookopens it instead ofOpenStore(""). Test:TestPolicyHookReadsTheRequestStore(fails without the fix: pin in the home store not read).Checks (free/ci,
-mod=vendor)go build ./...,go vet ./...: cleango test ./...: all packages pass except two timing flakes under a loaded machine, each passing when run alone with-count=1and unrelated to the touched files:cmd/agent TestNextStartKillsTheJobOfAKilledAgent,cmd TestRunsWait/the_invoke_deadline_caps_the_wait