Skip to content

Take the highest-numbered Ready issue with pickup.order or highest-first - #1185

Merged
JacobStephens2 merged 7 commits into
mainfrom
issue-1109
Oct 23, 2026
Merged

JacobStephens2 merged 7 commits into
mainfrom
issue-1109

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Summary

A Pickup run takes the lowest-numbered Ready issue by default. pickup.order
in the User config and lowest-first / highest-first on the command choose
which end of the issue numbers it takes from, so two schedules can work
through the same queue from opposite ends and collide less often. The origin
reservation still protects either choice.

thirdshift pickup [lowest-first|highest-first]
  args.order ──Some──▶ search order for this pass
        └─None──▶ config.pickup_order (pickup.order, default lowest-first)
  ready::Search — sort ascending, reverse under HighestFirst
  architect / security — pinned to LowestFirst (existence checks only)

secure and thirdshift <Issue URL> reject the order words; an invalid
pickup.order stops the pass before any work, naming the file and key.
Guide, User-config reference, help, GLOSSARY and the hand-written site
pages are updated in the same commit; site/docs/index.html is regenerated
from the guide.

Evidence

  • Before: thirdshift pickup always took the lowest-numbered Ready
    issue; no setting or flag could change that.
  • After:
    • cargo test --bin thirdshift ready::tests — 27 passed, including
      highest_first_takes_the_highest_ready_issue_passing_over_downward
      and highest_first_gives_no_line_to_a_ticket_above_its_ready_spec.
    • cargo test --test pickup_run highest_first|lowest_first|pickup_order
      — end-to-end: the flag takes each end, the config sets the default,
      the flag beats the config, invalid values are rejected before any
      work (gh_calls() empty).
    • cargo test --test pickup_model — claimed-dispatch property holds
      (4 passed, 1 ignored: the known literal-property assertion).
    • scripts/affected-tests main — full selection green on this head
      (exit 0): binary unit tests, all integration targets, site checks.

Merge Danger

Door: two-way. The default preserves existing behaviour exactly; a
revert restores lowest-first-always with no migration.

Blast Radius: pickup selection order. Hosts on the default config see
no change. A host set to highest-first takes the opposite end of the
queue; mixed hosts are the point, and the origin reservation plus
Claim-generation recheck still prevent double dispatch.

Unaddressed findings

None. Standards reported 0 hard violations (2 dismissed judgement calls)
and Spec reported 0 missing, 0 creep, 0 wrong; neither axis made a
behaviour-wrong finding, so no finding was skipped and no needs-triage
issue was filed.

Security review outcome

No unaddressed introduced findings.

Review coverage

No changed file left unread: all 16 changed files were read by at least
one axis except site/docs/index.html, which is generated output
excluded by both reviewers (source docs/guide.md, regenerated in-session
via cd site && npm ci && npm run docs, hunks confirmed one-to-one).
Full reports: .thirdshift-review-fODzJU/standards.md,
.thirdshift-review-fODzJU/spec.md.

Closes #1109

Built with muse · default model · default effort

A Pickup run takes the lowest-numbered Ready issue by default. Set
pickup.order to highest-first in the User config, or pass lowest-first
or highest-first on the command, to choose which end of the issue
numbers it takes from. Two schedules working through the same queue
from opposite ends collide less often; the origin reservation still
protects either choice.

Closes #1109
The CI fmt check flagged unformatted lines in the new pickup order code.
This is a formatting-only change with no behavior change.
@JacobStephens2
JacobStephens2 merged commit 2e527b5 into main Oct 23, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1109 branch October 23, 2026 23:03
@JacobStephens2 JacobStephens2 mentioned this pull request Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

make it settable in user config and or with a command flag whether ready-for-agent issues pick the highest or lowest issue number for pickup runs

1 participant