gt done silently falls back to merge-queue path when convoy merge_strategy cannot be read (Dolt down), ignoring --merge=local
Summary
gt done resolves the merge strategy via getConvoyInfoFromIssue / getConvoyInfoForIssue (internal/cmd/done.go). Both return nil when bd cannot reach Dolt. A nil convoy info is treated as "default MR workflow", so a bead that was slung with --merge=local gets submitted to the merge queue and the polecat is told Fix: git fetch origin && git rebase <main>.
Observed
2026-09-05 00:40 EDT: Dolt died; the polecat's gt done ran at 00:41. Result: a merge-queue entry (si-wisp-suk, pre_verified=true) for a --merge=local bead, the refinery then tried a direct push to a GitLab-protected main and escalated, and the polecat rebased its local branch onto origin/main because gt told it to. The remote branch was untouched, so nothing was lost, but the operator's explicit "keep it on the branch" instruction was not honored.
Suggested fix
- Distinguish "no convoy info" from "could not read convoy info". On read failure, abort
gt donewith a clear error (or retry) instead of defaulting to the MR path. - Log which strategy was applied and where it came from.
Environment
gt 1.1.0 (Homebrew); also present on main@649b832 (same nil handling). bd 1.2.2. macOS.
Source: gastownhall/gastown