Repository navigation
Session Handoff [auto-2106]: Refuse a Dangling Remote-Tracking Target in local_review per #2106 #2120
Copy link
Copy link
Closed
Labels
blockedBlocked on another issue: one in another repository, or a decision issue here for a parked handoffBlocked on another issue: one in another repository, or a decision issue here for a parked handoffhandoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Description
Activity
- addedhandoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
on Sep 30, 2026 Parked: waiting on decision #2122
Done
- The fix for Refuse a Dangling Remote-Tracking Target in local_review Instead of Falling Through #2106 is written, tested, and pushed as branch
feature/auto-2106(head1b272939) in pull request #2121 intodevelop. Its body carriesCloses on promotion: #2106. ref_name_existsinscripts/local_review.pychecks, in this order:check-ref-format, an exactfor-each-refmatch, the loose ref file read withstat, andsymbolic-ref -q.remote_tracking_refrefuses withCannotRunwhere the exact name exists but does not resolve, and it keeps returningNonefor a ref that is truly absent. Tests inDanglingRemoteTrackingCaserun on both backends, with a reftable subclass. Each check was mutation-tested.local-strict-reviewran over the full diff for each push. The rounds found a broken loose ref file, an uncaughtOSError, and asymbolic-refstep with no test, and each was fixed. The final pass at1b272939found nothing and is recorded againstdevelop.- CodeRabbit (prompted, since the repository is under ten stars) found that
Path.is_filereturns False for a name too long on Python 3.14. That is fixed in1b272939, and the thread is replied to and resolved. Its re-review of the new head was refused as rate limited. - Copilot has reviewed twice, with Findings: None both times. Checks are 10/10, merge state is CLEAN, there are 0 unresolved threads, and suppressed is
on_head=0.
Why it stopped
pr_review.py waitends inCOVERAGE_IS_UNSTATED. The Copilot round on the head carries no file table. The round on164aa0d0does, and it names exactly the same two changed files, but under Merge Gate item 2 a table does not carry forward. So the merge is the maintainer's call, asked in #2122.What remains
- If Merge #2121 When Copilot's Head Round States No Coverage? #2122 authorizes the merge, capture
headRefOid, rungh pr merge 2121 --squash --repo ptr727/ProjectTemplate(without--delete-branch), then clean up perdrive-prstep 4. That means removing the worktree at../worktrees/ProjectTemplate-auto-2106, deleting the local branch, verifying the remote tip withgit ls-remote, and deleting the remote branch. Then close out this lane. - If Merge #2121 When Copilot's Head Round States No Coverage? #2122 asks for a new Copilot round instead, re-request it on the head, run
pr_review.py wait, and merge once a round covers the head. - Re-run
pr_review.py status 2121first either way, since the head or the reviews may have moved.
Worktree
The worktree was left standing at
../worktrees/ProjectTemplate-auto-2106onfeature/auto-2106. It is clean, and everything in it is pushed.Filed along the way
Only the decision issue #2122. No lesson issue was filed.
- The fix for Refuse a Dangling Remote-Tracking Target in local_review Instead of Falling Through #2106 is written, tested, and pushed as branch
- addedblockedBlocked on another issue: one in another repository, or a decision issue here for a parked handoffBlocked on another issue: one in another repository, or a decision issue here for a parked handoff
on Sep 30, 2026 - removedblockedBlocked on another issue: one in another repository, or a decision issue here for a parked handoffBlocked on another issue: one in another repository, or a decision issue here for a parked handoff
on Sep 30, 2026 Parked on decision #2197.
- Done: fix for Refuse a Dangling Remote-Tracking Target in local_review Instead of Falling Through #2106 is on branch
feature/auto-2106, PR #2121 into develop, head 1b27293, all checks green,merge=CLEAN, no unresolved threads, no findings from Copilot or CodeRabbit. - Worktree left standing at
~/repos/worktrees/ProjectTemplate-auto-2106. - Remaining: Merge Gate item 2 is unsatisfied, since the Copilot round on this head states no coverage and carries no file table (
waitexit 45,COVERAGE_IS_UNSTATED). A merge needs the maintainer's call on Merge PR 2121 Without Stated Copilot Coverage on Its Head #2197, then merge and close this lane. The PR body carriesCloses on promotion: #2106, to be re-read before merge. - Waits on decision issue: Merge PR 2121 Without Stated Copilot Coverage on Its Head #2197.
- Done: fix for Refuse a Dangling Remote-Tracking Target in local_review Instead of Falling Through #2106 is on branch
- addedblockedBlocked on another issue: one in another repository, or a decision issue here for a parked handoffBlocked on another issue: one in another repository, or a decision issue here for a parked handoff
on Oct 1, 2026
Metadata
Metadata
Assignees
Labels
blockedBlocked on another issue: one in another repository, or a decision issue here for a parked handoffBlocked on another issue: one in another repository, or a decision issue here for a parked handoffhandoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Next steps, in priority order
scripts/local_review.py.remote_tracking_refdecides whether a remote-tracking target exists withgit show-ref --verify --quiet, which fails for a ref that exists but whose object is missing, or for a symbolic ref whose target is gone, sotarget_reffalls through to the as-written step and a local branch sharing the short name defines the review scope. Establish that the exact ref name exists without requiring its object to resolve, then refuse where it does not peel to a commit. The check holds on the files and reftable backends alike. Done looks like: both constructed shapes in the issue (a dangling symbolic ref, and a loose ref naming an absent object, each beside a local branch of the same short name) refuse with a clear message rather than resolving, a test pins each shape, and the existing local_review.py: target_ref returns a bare name a same-named local branch can shadow #1235 non-commit refusal and ordinary remote-tracking resolution still pass.Closes on promotion: #2106in its body, scope develop.External blockers
None known.
Internal dependencies
None. #2109 (qualified
--targetspellings) touches the same function but waits on a maintainer decision about whether qualified refs are in contract, so it is out of scope here. Keep this fix narrow so it does not pre-empt that decision.State
No branch or worktree yet. Base the work on
develop, perrepo-worktree. The fix for #1235 (PR #2108) is merged and promoted, and #2106 was filed as its follow-up. Re-derive open pull requests touchingscripts/local_review.pybefore starting.The parked decision queue
None for this lane.
What the last round did
Nothing yet. The unattended picker created this lane from the open backlog.
What not to repeat
Nothing recorded yet.
New learnings
None yet.