Repository navigation
Pass Base fix through an Architect run to its dispatched run - #251
Merged
Merged
Conversation
A failed check that also failed, under the same name, on the Base branch commit the head last merged in is an Inherited failure (ADR 0008). The CI watcher now splits the failed checks into the branch's own and Inherited ones. A CI-fix Repair is given only the branch's own, with the Inherited ones listed as not to fix. When only Inherited failures are left, the Run merges the Base branch again if it moved, and otherwise fails naming the checks, the Base branch and its commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tively, test a still-red moved Base branch A check is an Inherited failure only if every check of its name on the Base branch commit failed. Commit statuses and a Base branch that moved but is still red are now covered through the binary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Inherited failures fail the Run without a Repair
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ks, name the child Run's kind Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Base fix, when the base-fix flag is given
base.fix in the User config lets every Run start a Base fix with no flag; no-base-fix forbids it for one Run, and contradicts base-fix. Setup asks about Base fixes only with every Run a Merge run, and always writes the setting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… writes base.fix at its default with merging off, share the Spec run test setup Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base fix in the User config and Setup
…ch directory at a time Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… left open, share the Launch directory lock Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README.md: keep issue-221's wording that base-fix, no-base-fix or the User config's base.fix holds for each Ticket's Run, with issue-224's shared Base fix and its "One Base fix per Base branch" section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Runs share one Base fix
…list and Run notification, share the check list and the Inherited failure cause Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Inherited failures: fail fast on a red Base branch, or fix it with a Base fix
…itect run passes on An Architect run's dispatched run starts no Base fix yet. The fake gh's issue create is main's, which refuses a label the repository lacks, now also recording when the issue was created; the Architect run tests give their repository the labels the fake agent publishes with. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
architect takes base-fix and no-base-fix, with their -- forms, rejects the two together, and rejects either with --plan-only, which dispatches nothing. Without either, the User config's base.fix decides. The run the plan is dispatched as may then start a Base fix, and the Architect run's last lines and its one Run notification say what became of it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to its end, the User config default tested on a Spec run run::Ended pairs a Run's or Spec run's outcome with what became of its Base fix, and run::run_to_end is the one place that makes it, for a Run and for the run an Architect run dispatches. The Spec run pass-through test reuses spec_plan and also covers base.fix from the User config. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 1, 2026
Merged
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 architectnow takesbase-fix/no-base-fix(and their--forms) and hands them, or the User config'sbase.fix, to the Spec run or Run its plan is dispatched as. The Architecture review watches no CI, so a Base fix can only start there.thirdshift architect [<focus>] [flags] Architecture review -> plan marked ready-for-agent dispatch the plan, as thirdshift <plan URL> would goal = merge | no-merge else merge.always parallel = parallel <n> else spec.parallel + base fix = base-fix | no-base-fix else base.fix + last lines and the one Run notification carry "Base fix: <issue URL> merged" thirdshift architect --plan-only - rejects merge, no-merge, parallel + rejects merge, no-merge, parallel, base-fix, no-base-fix (nothing is dispatched)A Run and an Architect run's dispatched run now end through one place, so "as
thirdshift <plan URL>would" isn't kept true by hand twice:This PR also merges
maininto the Spec branch's line. The ticket is blocked by #221 (the Base fix), which merged tomainbut was not onissue-27. The first commit,85c7939, mergesorigin/mainin; that is most of the diff (the 17 commits of #226). The ticket's own work is the two commits after it:Merge resolutions worth a look:
tests/fakes/gh.rs: both sides addedgh issue create. Keptmain's, which refuses a label the repository lacks, asghdoes, and added this branch'screatedAt. The Architect run tests now give their repositoryneeds-triage,ready-for-agentandarchitecturethrough ascenario()helper.src/notification.rs: this branch'sEndinggainedmain'sbase_fix, so an Architect run's notification has theBase fix:line a Run's has.src/args.rs: kept this branch'sask_parallelhelper for both parsers, withmain'sbase-fixarms and child Run kinds.Seams tested: the argument parser (unit tests in
src/args.rs), and thethirdshiftbinary throughtests/support::Scenariowith the fakeclaudeandgh(tests/architect_run.rs,tests/command_surface.rs).Evidence
architect base-fix, with the plan's Run meeting an Inherited failure (base_fix_lets_the_dispatched_run_start_a_base_fix, written first):main, merges the fixedmainin and ends ready for review.architect --plan-only base-fixtookbase-fixas the focus.After: exit
2:merge, no-merge, parallel, base-fix and no-base-fix can't be used with --plan-only: it dispatches no run for them to apply to.architect base-fix --no-base-fix:base-fix and no-base-fix can't be used together.cargo test, 572 passed, 0 failed, across 28 test binaries.cargo clippy --all-targetsandcargo fmt --checkare clean.Acceptance criteria:
base-fixandno-base-fixare accepted byarchitectand rejected together.base.fix, reaches the dispatched Spec run or Run.base-fixorno-base-fixwith--plan-onlyis rejected.thirdshift help.Unaddressed findings
Reviewed with
/thirdshift:code-reviewagainstissue-27. Addressed: the dispatch sequence duplicated betweenmainandarchitect, the outcome-and-Base-fix pair travelling as a tuple, the Spec-publishing script re-inlined in a test, two unwrapped doc comments, and the User config default not being tested on a dispatched Spec run.Standards
base-fix/no-base-fixarms are repeated inparseandparse_architect. Skipped: the file already does this formergeandemail, withask_onceas the shared part; the two arms differ only in where they store the ask, and a helper for them alone would break that pattern.RED,GREEN,checks_on_head,checks_on_originandinherited_failurecopy helpers intests/spec_run.rs. Skipped: each test file keeping its own small script helpers is the repository's habit (checks_on_headwas already in three files), and moving them totests/supportis a change across test files this ticket doesn't own.without_base_fix_the_dispatched_run_fails_on_an_inherited_failurerepeats the assertions of theno-base-fixloop. Skipped: they pin different behaviors, the default with nothing set and the flag overridingbase.fix = true; either could break without the other.Spec
architect. Skipped: it takes the sameBaseFixAskthrough the samerun::run_to_endas the Ticket case that is tested, and the Spec PR's Base fix itself is covered intests/spec_run.rs.Base fix:line in the Architect run's last lines and notification goes beyond the ticket's literal criteria. Kept, and the reviewer didn't call it scope creep: Architect run: thirdshift finds and implements a Strong deepening opportunity unattended #27 has base-fix applied "as if given tothirdshift <plan URL>" and the dispatched run's notification suppressed, so without it the report would be lost.Merge Danger
Door: two-way
Reverting the last two commits removes the flags. The merge of
mainis the part that is awkward to undo, butissue-27has to takemainin before #241 can merge anyway.Blast Radius: Architect-runs
architectwith neither flag and nobase.fixbehaves as before. Withbase.fix = truein the User config, an Architect run's dispatched run may now start a Base fix where it couldn't before, which is what the setting says. A wordbase-fixgiven toarchitectis no longer read as the focus.Closes #234
🤖 Generated with Claude Code