fix(#2639): warn when local is ahead of origin before forking phase branch (#2981)

* test(#2639): add regression for local-ahead-of-origin warning in handle_branching

execute-phase.md's handle_branching forks from origin/$DEFAULT_BRANCH. When
local is ahead (unpushed commits), the phase branch silently misses them.
The test asserts the workflow checks for local-ahead-of-origin and warns.

* fix(#2639): warn when local is ahead of origin before forking phase branch

handle_branching forks the phase branch from origin/$DEFAULT_BRANCH. When
local $DEFAULT_BRANCH is ahead (unpushed commits like plan/research docs),
the fork silently misses those commits. Now a loud WARNING is printed to
stderr naming the commit count and advising the user, matching the existing
uncommitted-changes warning pattern.

* chore(#2639): add changeset fragment

* fix(#2639): condense warning under ADR-857 cap + merge emitted-drift ack

gsd-test gate caught: (1) execute-phase.md exceeded the 93600-byte Phase 6
ceiling — condensed the WARNING from 3 echo lines to 1. (2) emitted-attribution
flagged the growth without an ack — merged into the existing #2930 ack fragment
(execute-phase.md was already acked there; can't have two acks for the same path).

* fix(#2639): condense warning further to clear the 93400 comfortable-margin gate

The ADR-857 Phase 6 test has two assertions: <93600 (hard ceiling) and
<=93400 (comfortable margin). Condensed from 3 lines to 2 to fit under
93400 (now 93369).

* chore(#2639): backfill changeset PR number 2981

---------

Co-authored-by: sim <sim@local>
This commit is contained in:
Tom Boucher
2026-08-01 14:24:05 -04:00
committed by GitHub
parent 34633fa4ec
commit 6c96b13cfe
4 changed files with 46 additions and 2 deletions

View File

@@ -301,7 +301,9 @@ 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 (#2916); --no-track (#2498) so default autoSetupMerge doesn't wire upstream to origin/$DEFAULT_BRANCH.
# Pinned base (#2916); --no-track (#2498). #2639: warn if local ahead of origin.
AHEAD=$(git rev-list --count "origin/$DEFAULT_BRANCH..$DEFAULT_BRANCH" 2>/dev/null || echo 0)
[ "$AHEAD" != "0" ] && [ -n "$AHEAD" ] && echo "WARNING: $DEFAULT_BRANCH is $AHEAD ahead of origin — '$BRANCH_NAME' won't include those commits (#2639)." >&2
git checkout -b "$BRANCH_NAME" "origin/$DEFAULT_BRANCH" --no-track \
|| { echo "ERROR: Could not create '$BRANCH_NAME' from origin/$DEFAULT_BRANCH (#2916)." >&2; exit 1; }
fi