Repository navigation
Going as far as it can: Failed spec runs - #155
Merged
Merged
Conversation
A failed Ticket now stops only the Tickets it blocks and is not started again. When nothing is ready and any Ticket is still open, the Spec run opens no Spec PR, exits 1, and lists each landed Ticket with its PR and each Ticket not done with why: failed (cause and session log), blocked, unready, or in a cycle. Help and the README explain Unready Tickets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Share the session log line's prefix between a Run and the Spec run that reads it back, name a Ticket's outcome for what it is, say in help that Tickets in a cycle don't run, count a Ticket with sub-issues as an Unready Ticket in CONTEXT.md, and check a failed Ticket's cause. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep this branch's Failed spec run, where a failed Ticket stops only the Tickets it blocks and each not-done Ticket is reported, alongside main's interrupt handling: the Ticket's Run is relayed on its own thread, an interrupt is passed on to it, and an interrupted Ticket ends the Spec run. 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
A Spec run now takes every Ticket it can reach. When any Ticket isn't done, it ends as a Failed spec run.
The summary on stderr:
session log:prefix is now one constant (failed_run::SESSION_LOG), shared by the Run and the Spec run.help_does_not_mention_the_flag_aliasesnow matches whole words, because-happears insideready-for-human.Evidence
main, a failed Ticket ended the Spec run at once, and an unready Ticket made it bail withno Ticket is ready. Tickets that didn't depend on them never ran.After: new end-to-end tests in
tests/spec_run.rs, all passing. The fullcargo testsuite is green.a_needs_info_ticket_and_what_it_blocks_are_not_run_while_an_independent_ticket_landseach_unready_label_keeps_a_ticket_from_running: coversready-for-human,wontfixandneeds-triage; aready-for-agentTicket runs.a_failed_ticket_stops_only_its_dependents_and_is_not_started_again: checks that the sessions are exactly["21","23","24"], and checks the cause and the session log path.an_open_outside_blocker_holds_a_ticket_back_and_a_closed_one_does_nottickets_in_a_cycle_are_not_run_and_the_summary_names_the_cyclea_ticket_with_its_own_sub_issues_is_unreadyremoving_a_needs_info_label_while_another_ticket_runs_lets_it_runhelp_explains_unready_tickets_and_that_a_spec_run_takes_every_ticket_it_can_reachMerge Danger
Door: two-way
Blast Radius: Spec runs only
Ordinary Runs are unchanged, apart from the help text and the shared
session log:constant, whose output is byte-identical.Unaddressed findings
Standards
reportprints lines instead of returning them, so it can't be unit-tested. Skipped: the Spec's testing decision is to test only through the end-to-end harness, which already covers every line.run_ticketparses the child's stderr inline. Skipped: the parse is five lines. The sharedSESSION_LOGconstant removes the hidden coupling, which was the real risk.Strings. Skipped: both are read back as text only to be printed again.#nformatting and joins. Skipped: each site joins with a different separator, so a helper would save little.report's cascade repeats some ofnext_ready's checks. Skipped: they answer different questions ("may it start?" and "why is it not done, in priority order"), and sharing one classifier would blur both.Spec
run_ticketaborts the Spec run with no summary. Skipped: it means thethirdshiftbinary itself can't be run, which would stop every Ticket the same way.Closes #144
🤖 Generated with Claude Code