Repository navigation
Description
Parent
What to build
A Pickup run owns its whole lifecycle in its own module, from its gates to the Run or Spec run it dispatches, generic over the Pass seam.
The Pass seam's interface grows the calls a Pickup run makes outside itself beyond GitHub:
- record a skip with its reason;
- record the start of work;
- check the Harness, Model and Effort;
- dispatch an issue as a Spec run or Run.
The production adapter is renamed "Launch and GitHub". It builds the dispatched run's Asks from the command's flags and the User config, with the checked Harness, and calls run_to_end on the dispatch's Base branch. The in-memory adapter records each new call in its one ordered call list. The entry point's Pickup arm shrinks to the command's start, the Pickup run, noting the taken issue and the Harness on the Run notification, and the command's finish.
Behaviour is unchanged. That includes a Pickup run that fails before it takes an issue: it still ends through the command's plain failure, with no Activity log end line and no Run notification.
See the Spec's Implementation Decisions for the dispatch call's shape and what the adapter holds.
Acceptance criteria
- The Pass seam has calls to record a skip, record a start, check the Harness, and dispatch, as the Spec decides. The dispatch is either an Architect plan with a Base branch, or a Ready issue with whether it is a Spec and a Base branch, and it returns the dispatched run's Ending.
- The production adapter is renamed "Launch and GitHub" and implements the new calls through the logs, the Harness choice, the Asks module and
run_to_end. The Architect run's gates and conclusion still use it unchanged. - The in-memory adapter records each new call in order. Its Harness check can be scripted to fail, and its dispatch returns a scripted Ending.
- The Pickup run's public entry keeps only the lock and preflight checks (recording a lock skip there) and building the adapter. Everything after runs in a
<name>_throughfunction generic over the Pass seam. - The Pickup run returns either that it was skipped, or the Ready issue it took with the dispatched run's Ending. The entry point no longer builds Asks or calls
run_to_endfor a Pickup run. - Unit tests through the in-memory adapter cover:
- a skip at the Claim limit or for no Ready issue is recorded with its reason, with no Harness check, start or dispatch;
- the line naming the issue taken comes before the Harness check;
- a failed Harness check fails the Pickup run with no start recorded and no dispatch;
- the start is recorded before the dispatch;
- the dispatch carries the Pickup run's Base branch and whether the issue is a Spec;
- the Pickup run returns the dispatched run's Ending.
- End-to-end Pickup run tests that only checked one of those rules are removed, such as the progress line naming the issue taken and a skipped Pass making no Harness check. Those covering the lock, the preflight checks, the Run notification, flags reaching the dispatched run, and the dispatched run's ending are kept.
-
cargo testpasses andcargo clippyis clean.
Blocked by
- None (can start immediately)
Activity
JacobStephens2 commentedon Oct 5, 2026
Closed by #416, merged into issue-413 by a thirdshift Merge run.