Repository navigation
Test the Spec run's Ticket loop in-process behind a seam (#380) - #381
Merged
Merged
Conversation
…ide effects (#380) The Ticket loop now reaches the Spec branch push, the Tickets' child Runs and their channel, the graph re-read, the Spec PR, the interrupt and its progress lines only through a private Outside seam, with a production adapter over child Runs, GitHub and the Spec PR and a scripted fake for unit tests driving a real Ticket board. End-to-end tests that only checked a loop rule or a board line through the loop are replaced by unit tests. 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
The Spec run's Ticket loop now reaches the outside world only through a private
Outsideseam. It has two adapters:ChildRunsAndGitHubin production, and a scripted fake in the module's tests. The fake drives a real Ticket board. Behaviour is unchanged.The
#n landed,#n failedand#n interruptedlines stay in the adapter's waiting thread, so their timing on stderr is unchanged.Evidence
ghandclaude.After: 18 unit tests at the seam, one per rule in the acceptance criteria, run in about 0.01s together. The 10 end-to-end tests listed in the issue are deleted. The kept ones pass:
cargo test --test spec_rungives 65 passed.cargo testpasses.cargo clippy --all-targetsis clean.Merge Danger
Door: two-way
It refactors one module and its tests. A revert restores the old code and the deleted tests.
Blast Radius: Spec runs
A mistake in the production adapter would change how a Spec run starts, waits for or reports its Tickets. The kept end-to-end tests cover the real child Runs, concurrency, the Spec PR's writes and interrupts.
Unaddressed findings
Standards
#n landed,#n failedand#n interruptedstill go straight toprogress::stepinfinish_ticket. Skipped: the issue's Decisions keep them in the adapter's waiting thread, so their timing on stderr relative to the relayed lines does not change.reached()andfailed()test helpers duplicate others. Similar helpers exist inticket_board.rsandrun_ending.rs. Skipped: each test module keeps its own small builders, as the repo already does.CONTEXT.mdterm. Skipped: the issue uses "Ticket loop" throughout and states that noCONTEXT.mdchange is needed. The term names a private function's job, not a domain concept.Spec
None. Both findings were addressed: the first-error test now makes a Spec PR opening fail after the first error, and the start-error test checks that the
Tickets not donelines are not printed.Closes #380
🤖 Generated with Claude Code