Repository navigation
Interrupting a Spec run - #154
Merged
Merged
Conversation
… as interrupted A signal the Spec run alone receives is forwarded to the Ticket's child thirdshift, which goes down its Failed run path and pushes its work. The Spec run waits for it, starts no further Ticket, opens no Spec PR, and fails as interrupted. 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
Interrupting a Spec run is now safe. A signal the Spec run alone receives is passed on to the running Ticket's Run. That Run ends through its own Failed run path and pushes its work. The Spec run waits for it, then starts no further Ticket and opens no Spec PR. It ends as an interrupted Failed spec run with exit 1.
failed_runnow has oneinterrupted_orremap. Both the Failed run path andFrom<anyhow::Error>use it, so an interrupt that surfaces as some other error, such as a killedgh, readsinterruptedin the Spec run too.Evidence
tests/spec_run.rstests failed. The Spec run's SIGTERM never reached Numbered Issue branches after a merged or closed PR #21's Run, so the agent slept for the full 30s ("the Ticket's session was not stopped").spec_runtests pass, and so does the full suite (cargo test).cargo clippy --all-targetsshows no warnings.Merge Danger
Door: two-way
Blast Radius: small
Only a Spec run's interrupt handling changes. The one shared change is
From<anyhow::Error> for FailedRun. Once a Run has been interrupted, an early failure in it now readsinterruptedinstead of whatever error the interrupt caused.Unaddressed findings
Standards
"interrupted"literal appears in several places. It was already spread across run.rs, poll.rs, session.rs and failed_run.rs, and pulling it into one constant is a refactor beyond this Ticket.Spec
interruptedline. The per-Ticket summary is Going as far as it can: Failed spec runs #144's job.ghcalls can still be missed. Spec review before the Spec PR is ready #142 and The Spec PR's Repair loop and Self-merge #146 rewrite this phase, so it is left for them.failed_run.rsandmerge_run.rsalready test. A second signal only sets the flag again.Closes #145
🤖 Generated with Claude Code