You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
More than one Pickup run per repository at a time on bigger machines #279
Follow-up to #212, which fixes a Pickup run at one unattended run per repository at a time on a machine, with no setting.
On a machine with more capacity, several Ready issues could be worked at once. To decide:
A User config setting, such as pickup.parallel, default 1, that lets that many passes through the per-repository lock.
How it combines with spec.parallel, since one Spec run already runs several Tickets at once.
How much it costs in merge conflicts between pull requests on the same Base branch, which is better judged after watching one at a time run for a while.
Related: #201, on a Spec run's default parallelism oversubscribing small machines.
The repository still has one exclusive Pass lock per machine; there is no pickup.parallel setting. Increasing this cannot safely be treated as only widening a lock: it also affects Claim selection races, nested spec.parallel work and contention on the Base branch.
Next decision: define the shared capacity budget for concurrent Pickup runs and their Ticket children, and how it relates to #201. Resolve Claim coordination with #712 before enabling more writers. This remains distinct from the Claim limit, which also counts issues waiting for the Day shift.
This was generated by AI while investigating with Jacob why few issues were in progress.
Observed 2026-10-20: the Claim limit read as a parallelism target
Both machines (thirdshift, pickup.limit = 3; stephens.page, pickup.limit = 4) ran thirdshift pickup base main on this repository every minute. Six issues were ready-for-agent, yet only two were in-progress: #878 on thirdshift and #776 on stephens.page. Both Activity logs showed Pickup run skipped: another Pass is already running on JacobStephens2/thirdshift every minute while each Run lasted, one to over 24 hours.
The cause is the per-machine Pass lock this issue is about, not the Claim limit. The expectation was that pickup.limit 3 + 4 allowed up to 7 Runs. In practice it is only a ceiling, counted across both machines, because the in-progress labels are repository-wide, so the lowest machine's limit binds first. Real concurrency per repository is one Run per machine running the Pickup line. Architect and Security passes on that machine wait behind the same lock.
The capacity budget still matters. thirdshift has 4 cores and 8 GB and manages about two building Runs, and a Spec run already runs spec.parallel (3) Tickets inside its one Pass.
Whatever is chosen, the guide and the [pickup] comment Setup writes should say plainly that pickup.limit caps Claims and that the lock caps concurrency, so that one is not tuned expecting the other.
Activity
JacobStephens2 commentedon Oct 17, 2026
Triage Notes
The repository still has one exclusive Pass lock per machine; there is no
pickup.parallelsetting. Increasing this cannot safely be treated as only widening a lock: it also affects Claim selection races, nestedspec.parallelwork and contention on the Base branch.Next decision: define the shared capacity budget for concurrent Pickup runs and their Ticket children, and how it relates to #201. Resolve Claim coordination with #712 before enabling more writers. This remains distinct from the Claim limit, which also counts issues waiting for the Day shift.
JacobStephens2 commentedon Oct 21, 2026
Observed 2026-10-20: the Claim limit read as a parallelism target
Both machines (
thirdshift,pickup.limit = 3; stephens.page,pickup.limit = 4) ranthirdshift pickup base mainon this repository every minute. Six issues wereready-for-agent, yet only two werein-progress: #878 onthirdshiftand #776 on stephens.page. Both Activity logs showedPickup run skipped: another Pass is already running on JacobStephens2/thirdshiftevery minute while each Run lasted, one to over 24 hours.The cause is the per-machine Pass lock this issue is about, not the Claim limit. The expectation was that
pickup.limit3 + 4 allowed up to 7 Runs. In practice it is only a ceiling, counted across both machines, because thein-progresslabels are repository-wide, so the lowest machine's limit binds first. Real concurrency per repository is one Run per machine running the Pickup line. Architect and Security passes on that machine wait behind the same lock.Notes for the decision:
refs/heads/thirdshift/pickup/<n>) now keep two Pickup runs from taking the same issue, so apickup.parallelon one machine could build on them. Model-check Pickup reservation and Claim across competing hosts #881 (model-checking reservation and Claim across hosts) is still open.thirdshifthas 4 cores and 8 GB and manages about two building Runs, and a Spec run already runsspec.parallel(3) Tickets inside its one Pass.[pickup]comment Setup writes should say plainly thatpickup.limitcaps Claims and that the lock caps concurrency, so that one is not tuned expecting the other.