Skip to content

More than one Pickup run per repository at a time on bigger machines #279

Open

Description

@JacobStephens2

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.

Activity

  1. JacobStephens2 commented on Oct 17, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    Triage Notes

    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.

  2. JacobStephens2 commented on Oct 21, 2026

    @JacobStephens2
    OwnerAuthor

    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.

    Notes for the decision:

    • Two machines' Pickup runs can take the same Ready issue at once #712, which the triage note says should be resolved first, closed on 2026-10-19. Cross-host reservation refs (refs/heads/thirdshift/pickup/<n>) now keep two Pickup runs from taking the same issue, so a pickup.parallel on 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.
    • 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.
  3. added and removed
    needs-triageMaintainer needs to evaluate this issue
    on Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions