Run:
stack statusLook for:
- untracked parents
- duplicate PR linkage
- cycles in the graph
Repair the graph before trying restack, move, submit, compose, or
queue.
Parents must be:
- the configured trunk branch, or
- another tracked branch
If the local branch exists but is not tracked yet, adopt it first:
stack track feature/base --parent mainOr, if the real unit is an open PR:
stack adopt pr 353 --parent mainThe CLI found an interrupted rebase or a recorded operation journal.
Use:
stack continueafter resolving conflicts in the same worktree, or:
stack abortto clear the operation and return to the original branch.
That is intentional. The CLI only auto-applies clean merged-parent repairs.
Manual review is expected when:
- merged PR metadata drifted
- a parent was squash-merged or otherwise rewritten ambiguously
- the remote branch disappeared unexpectedly
- the tracked PR head or base disagrees with local intent
Start with:
stack status
stack syncThen choose a repair path deliberately.
Check:
gh auth status- the branch was pushed to the expected remote
- the repo has GitHub permissions to create or edit PRs
- the landing branch does not already match multiple open PRs
If multiple gh accounts exist on the machine, pin GH_TOKEN to the intended
account before live checks instead of trusting active-account state alone.
That is correct.
Once a landing batch exists, the original source PRs are traceability-only. They are no longer the real merge targets.
Queue the landing branch instead:
stack queue stack/discovery-coreIf stack queue stops, read the message literally. The most common causes are:
- you tried to queue a source PR after a landing PR already exists
- the landing PR head is stale
- the latest verification failed
- the latest verification does not match the current landing head
That is a deliberate stop.
stack no longer guesses tickets from branch names during closeout. Record
explicit tickets when you compose the landing branch:
stack compose discovery-core --from pr/353 --to pr/364 --ticket LNHACK-66 --ticket LNHACK-74If the landing branch already exists, repair the local landing metadata before using closeout for ticket closure.
Check:
- the landing PR is merged
stack supersedewas run with--close-after-merge- the superseded PRs are still open
closeout --apply only closes original PRs when that post-merge closure was
made explicit earlier.
If you see account-specific GraphQL failures, especially on live sandbox runs, assume auth drift first.
Recommended check:
gh auth switch -u roodboi
TOKEN="$(gh auth token)"
GH_TOKEN="$TOKEN" scripts/sandbox/seed-fixtures.shPinned GH_TOKEN is more reliable than relying on active-account state during
long-running scripts.
When queue handoff reports stale state, resubmit first:
stack submit <branch>
stack queue <branch>If the CLI reports multiple open PRs for one head branch, it is refusing to
guess which live PR owns that branch. Close or retarget the duplicate until one
open PR remains for that head name, then rerun stack submit.
The release workflow needs:
RELEASE_PLEASE_TOKENif you want release PRs to trigger normal follow-on checksHOMEBREW_TAP_GITHUB_TOKENwith write access tohack-dance/homebrew-tap
If the GitHub release succeeds but the tap update does not, inspect the
release workflow log and verify the token can push to the tap repo.