fix(#2916): drop unreachable post-creation merge-base guard

CodeRabbit pointed out the post-creation guard is structurally
unreachable: immediately after `git checkout -b X origin/$DEFAULT_BRANCH`,
HEAD == origin/$DEFAULT_BRANCH, so both the merge-base form (`MB == DT`)
and the alternative "ahead-of" count form (`AHEAD == 0`) are sentinels
that always pass on a successful fresh checkout. With the explicit base
arg + fail-fast on the checkout, the guard cannot catch anything new.

Removing it (rather than swapping in another no-op that satisfies the
linter but adds no actual coverage) is the honest fix. Comment retained
to explain why no post-creation guard is needed: the explicit base
argument to `git checkout -b` is the single source of correctness for
#2916.

Same simplification mirrored in get-shit-done/workflows/quick.md.

Full suite: 6102/6102.
This commit is contained in:
Tom Boucher
2026-04-30 22:18:34 -04:00
parent c3aef27aa6
commit 3ed8980519
2 changed files with 7 additions and 12 deletions

View File

@@ -238,13 +238,11 @@ else
else
git switch --quiet "$DEFAULT_BRANCH" 2>/dev/null && git merge --ff-only --quiet "origin/$DEFAULT_BRANCH" 2>/dev/null || true
fi
# Pinned base + fail-fast: on success HEAD is exactly at origin/$DEFAULT_BRANCH,
# so a post-creation merge-base or "ahead-of" guard would be unreachable. The
# explicit base argument here is the single source of correctness for #2916.
git checkout -b "$BRANCH_NAME" "origin/$DEFAULT_BRANCH" \
|| { echo "ERROR: Could not create '$BRANCH_NAME' from origin/$DEFAULT_BRANCH (#2916)." >&2; exit 1; }
# Warn only on fresh creation when HEAD did NOT fork from origin/$DEFAULT_BRANCH — #2916.
# Skipped on resume because origin may have advanced legitimately since first creation.
if MB=$(git merge-base HEAD "origin/${DEFAULT_BRANCH}" 2>/dev/null) && DT=$(git rev-parse --verify --quiet "refs/remotes/origin/${DEFAULT_BRANCH}" 2>/dev/null) && [ "$MB" != "$DT" ]; then
echo "WARNING: Phase branch '$BRANCH_NAME' does not fork from origin/${DEFAULT_BRANCH}; verify the base is intentional."
fi
fi
```

View File

@@ -218,16 +218,13 @@ else
|| true
fi
# Always pin the new branch to origin/$DEFAULT_BRANCH so the start point is
# Pin the new branch to origin/$DEFAULT_BRANCH so the start point is
# deterministic regardless of which branch we are currently on (#2916).
# On success HEAD is exactly at origin/$DEFAULT_BRANCH, so a post-creation
# merge-base / "ahead-of" guard would be unreachable — the explicit base
# argument here is the single source of correctness for #2916.
git checkout -b "$branch_name" "origin/$DEFAULT_BRANCH" \
|| { echo "ERROR: Could not create '$branch_name' from origin/$DEFAULT_BRANCH (#2916)." >&2; exit 1; }
# Warn only on fresh creation when HEAD did NOT fork from origin/$DEFAULT_BRANCH — #2916.
# Skipped on resume because origin may have advanced legitimately since first creation.
if MB=$(git merge-base HEAD "origin/${DEFAULT_BRANCH}" 2>/dev/null) && DT=$(git rev-parse --verify --quiet "refs/remotes/origin/${DEFAULT_BRANCH}" 2>/dev/null) && [ "$MB" != "$DT" ]; then
echo "WARNING: Quick-task branch '$branch_name' does not fork from origin/${DEFAULT_BRANCH}; verify the base is intentional before continuing."
fi
fi
```