Repository navigation
thirdshift architect --plan-only: the Architecture review publishes a plan and thirdshift marks it ready - #240
Merged
Merged
Conversation
…es a plan and thirdshift marks it ready An Architect run starts from the Launch directory with no Issue URL. It makes the Run preflight checks that need no issue, the opt-in launch pull, and runs the Architecture review in a worktree detached at the Base branch's head on origin. It reads the fixed-format last line of the review's final message, checks the plan it names, swaps needs-triage for ready-for-agent in one request, and prints the plan's URL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Unready Ticket labels stay in the Spec run, which now answers for any issue's labels. Marking the plan ready is split from reading the report and checking the plan. Sessions::run_to_final_message says it runs a session, and the three gh issue reads share one helper. 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 architect [<focus>] --plan-onlystarts an Architect run from the Launch directory, with no Issue URL.Any failure after the review starts exits
1with the cause, then the session log, and changes no label.Three things to know before merging:
--plan-onlyis required for now. Nothing dispatches a plan until Architect run dispatches its plan as a Spec run or a Run #232, so barethirdshift architectis an argument error (exit2) rather than a run that stops short without saying so./thirdshift:improve-codebase-architecture,to-spec,to-ticketsandcodebase-designarrive with Headless Factory skills for the Architecture review #229. Until then a real Architect run has no skills to load; the end-to-end tests use the fakeclaude.0.Evidence
Before:
thirdshift architect --plan-only→not a GitHub issue URL: architect, exit2.After:
cargo test --test architect_run→ 20 passed. The cases:Full suite:
cargo test→ 490 passed, 0 failed.cargo fmt --checkandcargo clippy --all-targets -- -D warningsare clean.Parser unit tests cover
architectwith and without a focus,--plan-onlyon either side, stray arguments, andarchitectanywhere but first.Unaddressed findings
Standards
src/worktree.rsdocs (CONTEXT.mdavoids "launch repo"): the file already uses that wording throughout; changing only the new lines would make it inconsistent, and rewording the whole file is outside this Ticket.run::pull_base_branch(&launch, Some(&base), &base)passes the same value twice: the two differ for a Run (a Continuation's base, a detached HEAD); one odd call is cheaper than a second function.ReviewWorktree's drop repeatsWorktree's lock-and-remove shape:Worktreealso deletes the Issue branch and can be kept; the shared part is three lines.log.exists().then_some(log)mirrorsfailed_run::fail: one expression; not worth a helper.unitsslice stands for "sent by an Architect run" on the prompts page: one prompt has no unit; a sender type can come when a second does.(logs, log)travel withbase/focus: mirrors the Run's code; bundling them here alone would diverge from it.ArchitectArgs: parallelsRunArgs, and Architect run dispatches its plan as a Spec run or a Run #232 adds its flags.Spec
--plan-onlyis mandatory, not optional: without dispatch (Architect run dispatches its plan as a Spec run or a Run #232) a barearchitectwould have to do the same thing silently; an argument error says so.architect merge --plan-onlytakesmergeas the focus: Architect run dispatches its plan as a Spec run or a Run #232 ownsmerge,no-mergeandparallelonarchitect, including rejecting them with--plan-only.Repo::of_origin,Logsconstructors,main.rshelpers): needed so the Architect run shares the Run's code instead of copying it; the existing suite passes unchanged.needs-triageto be present before the swap: the spec's check is "no unready triage label other thanneeds-triage"; a plan without it still endsready-for-agent.git worktree addthat fails partway can leave<repo>-architectbehind: same as a Run's worktree today; not reproduced.interruptedthough the swap may have landed: one request wide; not reproduced.Merge Danger
Door: two-way
A new command and new code paths; reverting the PR removes them. The fixed-format final line is the one thing #229 and #231 will build on.
Blast Radius: contained
The Run path changes only by refactor: the Origin match goes through
Repo::of_origin, log names throughLogs::of_run, andspec_run::unready_labeltakes labels rather than a Ticket.thirdshift helpgains a wider usage column and anarchitectparagraph.Closes #230
🤖 Generated with Claude Code