Escaped from #2262: the merged D6 verify-commit-pushed gate (0.51.12, merge 9daeecb) writes
git fetch origin <branch> && git merge-base --is-ancestor <fix-sha> origin/<branch> into
reference/review-discipline.md (line ~233) and skills/pull-request/SKILL.md (line ~181).
Codex raised this as P1-2 on #2262 (thread: #2262 (comment)) and the PR merged before the fix landed; the fix commit 5a94f502 exists on the recreated fix/2244-d6-presence-read branch but is not on main.
Why it is a defect
The hardcoded origin is new in 0.51.12 — base 78dbb10e greps clean for git fetch origin in both files. The same skill pushes through push-branch.sh / resolve-remote.sh --push, which support branch.<name>.pushRemote, remote.pushDefault, non-origin tracking, and triangular fork flows. On such a checkout:
- a successful push to a
vendor/fork remote is followed by a fetch of the wrong remote → false D6 failure, blocking D7 and thread resolution;
- an
origin base repo carrying a same-named branch verifies the wrong ref entirely.
Same defect family the 0.51.12 change itself targeted: a check that answers confidently about the wrong thing.
Fix
Route the gate through the existing resolve-remote.sh --push (reuse, not reimplement) and compare against FETCH_HEAD — exactly what the resolved remote just served:
REMOTE=$(bash "${CLAUDE_PLUGIN_ROOT}/skills/pull-request/scripts/resolve-remote.sh" --push <branch>) \
&& git fetch "$REMOTE" <branch> && git merge-base --is-ancestor <fix-sha> FETCH_HEAD
Fold in two non-blocking wording corrections the #2262 verifier flagged in the shipped 0.51.12 CHANGELOG entry: "matching the reachability primitive … verify_fix_commit" overstates (that helper uses the fork-aware compare API, not git merge-base — same guarantee, different mechanism), and babysit_gh.py's per_page=100 lives at fetch_paginated_api's call sites, not adjacent to the --paginate flag.
Escaped from #2262: the merged D6 verify-commit-pushed gate (0.51.12, merge 9daeecb) writes
git fetch origin <branch> && git merge-base --is-ancestor <fix-sha> origin/<branch>intoreference/review-discipline.md(line ~233) andskills/pull-request/SKILL.md(line ~181).Codex raised this as P1-2 on #2262 (thread: #2262 (comment)) and the PR merged before the fix landed; the fix commit
5a94f502exists on the recreatedfix/2244-d6-presence-readbranch but is not on main.Why it is a defect
The hardcoded
originis new in 0.51.12 — base78dbb10egreps clean forgit fetch originin both files. The same skill pushes throughpush-branch.sh/resolve-remote.sh --push, which supportbranch.<name>.pushRemote,remote.pushDefault, non-origintracking, and triangular fork flows. On such a checkout:vendor/fork remote is followed by a fetch of the wrong remote → false D6 failure, blocking D7 and thread resolution;originbase repo carrying a same-named branch verifies the wrong ref entirely.Same defect family the 0.51.12 change itself targeted: a check that answers confidently about the wrong thing.
Fix
Route the gate through the existing
resolve-remote.sh --push(reuse, not reimplement) and compare againstFETCH_HEAD— exactly what the resolved remote just served:Fold in two non-blocking wording corrections the #2262 verifier flagged in the shipped 0.51.12 CHANGELOG entry: "matching the reachability primitive …
verify_fix_commit" overstates (that helper uses the fork-aware compare API, notgit merge-base— same guarantee, different mechanism), andbabysit_gh.py'sper_page=100lives atfetch_paginated_api's call sites, not adjacent to the--paginateflag.