Repository navigation
Test the Base fix's rules in-process behind a seam for its outside effects - #379
Merged
Merged
Conversation
…fects (#378) The Base fix's rules now reach the look lock, the open Base fix issues, the mark files, the child Run, the poll interval and its progress lines only through a private Outside seam, with a production adapter over the Launch directory and GitHub and a scripted fake for unit tests. Finding the covering issue is a pure function over the listed issues, and the poll module gains a one-interval pause for the core's own wait loop. End-to-end tests that only checked a rule or a line's wording are replaced by the unit tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One arm for a found Base fix that is not Left, the covering issue's finder keeps its old name, and the fake scripts marks as Mark and gives its running mark its own type. 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 Base fix's rules now reach the outside world only through a private
Outsideseam. There are two adapters: the production one over the Launch directory and GitHub, and a scripted fake used in the module's own tests. The public interface is unchanged.poll::pause()is new: a public sleep of one poll interval, whichpoll::untilnow uses as well.waiting on Base fix #nis now printed just before the child Run starts. So if the start fails, the line comes before the error instead of not at all.Evidence
ghandclaude, in 20 tests intests/base_fix.rs.After: 19 unit tests in
src/base_fix.rscheck the order ofDidevents and the exact error text. For example:cargo testpasses in full andcargo clippy --all-targets -- -D warningsis clean.Merge Danger
Door: two-way
This only changes tests and the internal structure, so a revert undoes it cleanly.
Blast Radius: Base fix
If the production adapter differed from the old code, the Runs that take a Base fix would be affected. The kept end-to-end tests run the happy path, a Left mark restarted across processes, and the Spec run's shared Base fix through the real adapter.
Unaddressed findings
Standards
Outside::steptoprogress, as in the Repair loop: skipped, because the issue's seam shape names itstep.issue, pr_url, base, base_commit, failed: skipped. It was there before this change, and bundling it would changefix's public signature, which the issue keeps.Outsidehas 11 methods, andcreate_issue'slabelsparameter always gets the same value: skipped, because both match the issue's seam shape and its decision to keep labels in the core so the tests can check them.Spec
open_fixesandmarksare fixedVecs, not per-callVecDeques: skipped. A Run lists open fixes and reads each mark once, so per-call scripting would add nothing. The answers that do vary per call (ended,open,children) areVecDeques.Closes #378
🤖 Generated with Claude Code