Repository navigation
One Launch directory module opens the Launch directory for every command - #361
Merged
Merged
Conversation
…and (#359) A Run now opens its Launch directory through the Launch directory module, which makes the Origin match, the open-issue check and the identity check, reads the checked-out branch, settles and checks the Base branch, and does the launch.pull fast-forward. The pre-flight checks module is absorbed and deleted; Issue branch selection only says what names the Base branch. 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
Every command now opens its Launch directory through
src/launch.rs. The pre-flight checks module is gone.src/ -├── preflight.rs # Origin match, open issue, identity, Base branch on origin ├── launch.rs # LaunchDirectory: opening for a Run or a pass, Base branch, launch.pull, lock ├── branch.rs # Issue branch selection: only the open PR's base names the Base branch └── run.rs # no longer reads the checked-out branch or exports the pullThere is one detached-HEAD rule. It keeps two wordings, and the module picks one by which opening was used. Only the pass's wording adds
, or name it with base <branch>.Evidence
After:
cargo test --bin thirdshift launch::passes 11 new tests. They run against a temporary repository whoseoriginis a bare repository beside it, namedhttps://github.com/acme/widgets.gitthroughurl.<bare>.insteadOf:cargo testpasses, and no file undertests/changed (preflight,launch_pull,continuation,numbered_branches,architect_run,pickup_run,command_logsand the rest).cargo clippy --all-targetsis clean.Merge Danger
Door: two-way
This is a behaviour-preserving refactor with no data or config changes. A revert undoes it.
Blast Radius: startup
If a check was reordered or a message changed, every Run, Architect run and Pickup run would see it before any work starts. The unchanged end-to-end tests pin those messages and their order.
Unaddressed findings
Standards
git(),origin()andchecked_out()expose every field. Skipped. The spec makes these facts read-only to callers. Worktree creation and the Ready-issue search still need the git handle.Openingenum stored only to pick a message is speculative. Skipped. The spec decides the wording is chosen inside the module by which opening was used, not by callers.BaseBranchtype sopullcan only followbase_branch. Skipped. It is a new type the spec didn't ask for. The ordering is documented, and both callers follow it.launch.rswas fixed.launch::repo()opens as a pass and reads the checked-out branch for nothing. Skipped. It costs one cheap localgitcall and keeps one opening path.branch.rs,run.rsandlaunch.rs. Skipped. The spec settles a Run's Base branch in exactly these two steps: Issue branch selection says what names it, then the Launch directory module settles it.pr_basewrites a progress line from a query. Skipped. This predates the change, and the spec keeps the progress line with Issue branch selection.open_for_run's checks. Skipped. Both need eitherghor the global git config, and both are covered end to end intests/preflight.rs.Spec
progress::warnwrites to the process's stderr, which a unit test doesn't capture.tests/launch_pull.rsasserts the warning end to end.open(dir, …)rather thanopen_for_run. Skipped. The spec says the open-issue check needsghand stays covered end to end.Closes #359
🤖 Generated with Claude Code