Repository navigation
Tracer bullet: a linear Spec run to a ready Spec PR - #152
Merged
Merged
Conversation
…c PR An issue with sub-issues is now a Spec: thirdshift picks and pushes its Spec branch, runs each ready Ticket in dependency order as a child thirdshift, a Merge run into the Spec branch told so by a hidden --spec-branch argument, relays its stderr with a #<n>: prefix, and opens the Spec PR into the Base branch once every Ticket has landed. The fake gh serves the Tickets query and the fake claude picks scripts by the issue a session is for. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
thirdshift <Issue URL>on a Spec now works through its Tickets one at a time, in dependency order, and ends with a ready Spec PR. An issue with no sub-issues is still an ordinary Run.--spec-branchis a hidden argument. It is not in help.Reachednow carries the goal it reached and an optional session log, so the Spec run can report "ready for review" whatevermergeasked. The Spec PR's Self-merge comes in a later Ticket.ghserves the Tickets query fromsub_issues,labelsandblocked_bystate.Scenario::spec_has_ticketssets these up.claudepicks a script by the issue in the prompt and that issue's session count, set withagent_does_forandagent_does_for_in_session.Evidence
tests/spec_run.rsdid not exist, and a Spec's URL ran as a single Run on the Spec itself.cargo testpasses in full, including all 11 tests intests/spec_run.rs:issue-20and merged; closed Headless sessions leave smoke-test files in /tmp #23 not run; Spec PR Walking skeleton: a fresh run on the happy path #3 intomain, ready,Closes #20; its URL on stdout and exit 0origin/issue-20, and its prompt says "The base branch is issue-20."#21: implement: session started,starting #21and#21 landedappear on stderremail.always, Resend gets exactly 1 request; withlaunch.pull, the Launch directory is updated oncehelpdoes not mentionspec-branchtests/continuation.rsnow also expects theapi graphqlcall among a Run'sghcalls.Merge Danger
Door: two-way
Revert the PR and single-issue Runs are back to exactly what they were.
Blast Radius: moderate
Every Run now makes one extra
gh api graphqlcall after preflight. If GitHub rejects thesubIssues/blockedByfields, or the call fails, every Run fails before it creates anything, including Runs on issues that are not Specs.Unaddressed findings
Standards
spec_branch: Optionis matched in several places (main.rs, run.rs twice), and(goal, email, launch_pull)are overridden together. A "Ticket's Run" type could hold all of this. Skipped for now: the override in main is 6 lines, and the right shape will be clearer once later Tickets add more Ticket-Run behaviour.run::runnow also hands off to a Spec run, andSelectionis matched twice. Skipped: the Spec run needs the same preflight, Issue branch selection, Base branch checks and worktree as a Run. Handing off after those steps keeps a single copy of them.Reachedis shared by a Run and a Spec run, andlogbecame anOption. Skipped: the notification already handles a missing log for failed Runs, so anOptionfits both.#<n> landedline word for word.--spec-brancharm has its own repeated-argument check instead ofask_once. Skipped:ask_oncecompares enum variants, and this flag takes a value.Spec
launch.pullare skipped in Ticket Runs, as asked.needs-infoTicket from being implemented, and it uses fields the query already reads.gh pr create.Closes #141
🤖 Generated with Claude Code