Repository navigation
Weeding: Architect runs that follow each other as soon as the last plan is merged - #332
Merged
Merged
Conversation
Move the Pickup run's search for the lowest-numbered Ready issue into its own module, ready::first, so that an Architect run can later ask the same question. The Sweep and the Claim limit stay in the Pickup run. No behaviour changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Either skip, already running or an open Architect plan, now sends none when asked, so a crontab line can start an Architect run every few minutes for Weeding. The notification's checks still come first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…any run (#324) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…326) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… skip, README wording (#325) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Share the Ready issue search between the Pickup run and the Architect run
An Architect idea pauses Architect runs until it is triaged
Brings in the Architect idea skip (#326). README conflicts resolved to keep #325's rule, that a skipped Architect run sends no Run notification, for the new skip reason too: the skipped-email subject and body lines from origin/issue-311 are dropped, and the schedule paragraph lists the waiting Architect idea among the skip reasons. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A skipped Architect run sends no Run notification
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… too (#327) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Ready issue goes ahead of an Architect run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…th merge.always, a plan whose run failed (#328) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README Weeding section and sample crontab line (#328)
…ther a notification goes (#311) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
JacobStephens2
marked this pull request as ready for review
October 3, 2026 08:38
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.
Weeding: a crontab line runs
thirdshift architect base <branch>every few minutes withmerge.always. This Spec makes that line safe and quiet. It adds no new command, daemon or flag, so ADR 0009 stands.Closes #311
Summary
The Architect run's skip checks, in order. The first one that applies is reported:
src/ +├── ready.rs # the Ready issue search, moved out of pickup.rs, shared by both runs ├── pickup.rs # calls ready::first; behaviour unchanged ├── architect.rs # new label ARCHITECT_IDEA, skips IdeasWaiting and ReadyIssue, label_idea ├── notification.rs # takes the Reviewed outcome only; the Skipped body is gone └── main.rs # help text; a skipped run sends no notification README.md # Weeding section, the two new skips, notification and crontab updates docs/adr/0009-* # Consequences: a skipped Architect run sends no notificationThe Architect run looks for a Ready issue through
ready::first, the same search the Pickup run uses, with no Sweep and no Claim limit. So the two runs can't disagree about whether work is waiting. Any triage decision releases an Architect idea: takingneeds-triageoff (label checks ignore case) or closing the issue.Evidence
Before: a
*/5Architect line sent a "skipped" email on every pass. A review with no Strong candidate filed a new, weakerneeds-triageidea on each pass. A Ready issue could lose the repository to an Architect run.After:
cargo testpasses in full, andcargo clippy --all-targetsis clean. New end-to-end tests intests/architect_run.rscheck the real binary against the fakegh, the fakeclaudeand the Resend stand-in:These three tests flip, as the Spec asked: the skipped-run notification test, the open-plans notification test, and the idea half of the open-idea test.
Merge Danger
Door: two-way
Reverting the PR restores the old behaviour. The only thing left on GitHub would be the
architect-idealabel on ideas filed in the meantime, and that label does nothing once the change is reverted.Blast Radius: scheduled-Architect-runs
ready-for-agentissue that is a Ready issue, on a repository with no Pickup line, now keeps Architect runs from starting. The README warns about this.ready.rswithout any change in behaviour.Unaddressed findings
Standards
mark_plan_readyandlabel_idea: skipped. The two share only the final swap. The plan side runs its own checks and dropsneeds-triagefirst, so a shared helper would have to take parameters for those differences.run,urls()andDisplay: skipped. The enum has four variants and each match is short. A trait or a table would hide more than it saves.Spec
--plan-onlyWeeding line: skipped. This was settled in the README Weeding section and sample crontab line #328 review: a repository runs one Architect line or the other, and the README says how to swap the nightly line back in.label_ideachecks for an interrupt first: skipped. It follows howmark_plan_readyhandles an interrupt, and an interrupt is something a person does on purpose.Tickets
🤖 Generated with Claude Code