Repository navigation
End a Claim when its Run ends: in-progress off at ready for review, swapped for agent-failed on failure - #1929
Merged
Merged
Conversation
…wapped for agent-failed on failure Ready for review and a held Self-merge take in-progress off and put nothing back. A failure with work on origin, and a failed Security fix, swap in-progress for agent-failed in one label edit. Pickup no longer reads neither in-progress nor needs-triage as a take-over, and its Sweep takes in-progress off every open issue labelled agent-failed. Closes #1902
…losed, tidy Sweep code A Custom process whose Self-merge merged now ends its Claim as a Ticket run's does, removing in-progress only once the issue is closed. Fold the Sweep's handed-back decision into one place, rename claim_stays, rewrap docs, and align the step wording. Update the Process tests for the new endings.
A dispatched child Run that merged no longer keeps in-progress on the parent issue whose own pull request is only ready for review. Clarify the release doc and rewrap the Pickup module and guide text.
…fakes; keep Run a workflow name only Edit::labels_after now follows the request apply makes, so a Delete leaves an already-present agent-failed in its own case, as GitHub does. The hand-written pages say 'run' where the Claim prose meant a run, not the Run concept the pages test forbids.
… the issue has it Edit::labels_after now follows the Delete request, which leaves the other labels in their order, so the Claim tests expect in-progress where it was read, not moved to the end.
…en failures A failed Run now leaves agent-failed without in-progress, so the Failure limit skip test seeds its failures that way, and the closed-issue Sweep test expects the open failure it seeds to have in-progress taken off.
This was referenced Nov 10, 2026
Closed
Merged
Merged
Merged
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.
Summary
in-progressnow marks only a live Run (ADR 0029). How a Run ends decides what replaces it:Pickup's gates:
A Custom process already removed
in-progressat ready for review, and it now shares the failure swap. Its Delivery now records whether its own pull request merged. A merged Custom process ends its Claim the way a Ticket run does:in-progressstays until the issue is closed. A child Run that the Process dispatched and that merged no longer counts as the parent's merge.The guide and the hand-written pages (
site/index.html,site/how-it-works/,site/architecture/) describe the new endings.site/docs/index.htmlis regenerated from the guide.Evidence
Execution evidence
Before (against a6880d0), for the Spec review's finding:
cargo test --test process a_self_merge_whose_issue_could_not_be_closed_keeps_in_progress_until_it_is_closedAfter:
cargo test --test process→test result: ok. 236 passed; 0 failed; 1 ignoredBefore (against f082b5c), for the Standards review's follow-up finding:
cargo test --test process a_dispatched_child_that_merges_does_not_keep_the_parents_claimAfter:
cargo test --test process -- a_dispatched_child_that_merges_does_not_keep_the_parents_claim a_self_merge_whose_issue_could_not_be_closed self_merge→test result: ok. 14 passed; 0 failedThese fake-
ghintegration tests pass on this branch:pickup_run: 146fresh_run: 26spec_run: 92merge_run: 40continuation: 9security_run: 125architect_run: 94base_fix: 16stop: 10bug_run: 14fix_run: 11triage_run: 28activity_log: 16review_pass: 14failed_run: 15process: 236pickup_runandprocesswere rerun on the review fixes. The rest ran on the first commit; the later commits change only Custom-process code and wording, which those files don't assert. Locally I also rancargo clippy --all-targets(clean),cargo fmt --check, andnpm run docs:check --prefix site(passes).Not run locally: the bin's inline unit tests (
claim::tests,pickup::tests). rustc was OOM-killed (SIGKILL) building the bin's test harness on this 7 GB host. They typecheck (cargo check --tests, clippy), and CI runs them. Two site checks also fail here for host reasons:npm test --prefix sitehas no Playwright Chromium, andsite_deploy::the_systemd_units_verifytrips on the host's ownsnapd.service. Neither touches the changed files.Visual evidence
No headless browser is available on this host (Playwright's Chromium is not installed), so there are no captures. The site changes are text only: two sentences, one list item, and two SVG labels that now read "PR to draft, agent-failed" instead of "PR to draft, Claim kept". The SVG box widths are unchanged.
Unaddressed findings
Standards
clear_and_count_failuresnow also does part of the Sweep. Declined. The function's main job is still counting failures, and its error handling differs fromsweep's: a failed listing fails the run instead of warning. The two docs cross-reference each other (src/pickup.rs, thesweepdoc: "[clear_and_count_failures] sweeps the open issues that carryagent-failed"), and the guide's Sweep section names the open-issue step. Renaming it would be churn with no change in behaviour.Spec
None. The single Spec finding, a Custom process that merged without closing its issue, is fixed and tested.
Security review outcome
No unaddressed introduced findings.
Review coverage
Both reviewers read every file changed in a6880d0 and f082b5c. Both accepted
site/docs/index.htmlas generated output and did not read it: it is generated fromdocs/guide.mdbysite/generate-docs.mjs, andnpm run docs:check --prefix sitepasses. Commit a37987d came after the follow-up review, so the review left these unread:src/processes/ticket.rs: onemerged: falseinitializer.tests/process/published.rs: the Standards reviewer's own test, renumbered to issues the fake has.src/processes.rs,src/claim.rs,src/pickup.rsanddocs/guide.md.Merge Danger
Door: two-way
Only label edits change. Reverting brings back the old labels on new endings. Issues already relabelled stay valid under both rules.
Blast Radius: labels
in-progressoff every open issue that also carriesagent-failed, on every repository it runs on. That is intended (ADR 0029), but it is a visible batch of label edits.in-progressuntil someone removes it by hand. Spec:in-progressmarks only a live Run #1901 leaves that out of scope.Closes #1902
Built with claude 2.1.314 · claude-opus-5-5 · medium