Skip to content

Session Handoff [auto-1235]: Qualify local_review's Remote-Tracking Target per #1235 #2090

Closed

Description

@ptr727

Next steps, in priority order

Re-read #1235 and scripts/local_review.py on develop rather than trusting this summary.

  1. local_review.py: target_ref returns a bare name a same-named local branch can shadow #1235: stop a same-named local branch shadowing a remote-tracking target. target_ref() returns the bare short name when refs/remotes/<target> resolves, and merge_base() hands that bare name to git merge-base. Git's short-name disambiguation tries refs/heads/<name> before refs/remotes/<name>, so a local branch literally named like the remote-tracking ref (for example upstream/main) silently defines the review scope instead. Once target_ref() has chosen a remote-tracking ref, return it fully qualified (refs/remotes/<target>), and qualify the origin/<target> branch the same way (refs/remotes/origin/<target>), since it carries the same exposure against a local branch named origin/<target>. Leave the last, resolves-as-written fallback returning the name as written, since that path exists for a value that is not a remote-tracking ref. merge_base() is the only consumer of the return value on develop, and scripts/canonical_review.py reaches it only through local_review.merge_base, so confirm no message or stamp prints the returned string before changing its form. Update the docstring to say why the value is qualified. Add a test in tests/test_local_review.py with a throwaway repository holding a remote-tracking ref and a same-named local branch on different commits, asserting the merge base comes from the remote-tracking one, and prove it by reverting the fix and seeing it fail. Done looks like a develop pull request whose body carries Closes on promotion: #1235, merged.

External blockers

None known at creation.

Internal dependencies

None. scripts/local_review.py was last changed by #1328, and no open pull request or open handoff touches it.

State

  • No branch, worktree, or pull request exists for this lane yet. Create feature/auto-1235 from develop in a worktree of its own.
  • Unattended run, scope develop.

The parked decision queue

Zero decisions parked by this lane.

What the last round did

Nothing yet. The picker created this link from the open backlog.

What not to repeat

Nothing recorded yet.

New learnings

None yet.

Activity

  1. added
    handoffA link in the session handoff chain, one open issue per track
    on Sep 29, 2026
  2. ptr727 commented on Sep 29, 2026

    @ptr727
    OwnerAuthor

    Parked on decision #2092.

    • Done: local_review.py: target_ref returns a bare name a same-named local branch can shadow #1235 fix (target_ref returns refs/remotes/... qualified) and tests; whole suite passes; new shadow test proven to fail against origin/develop's local_review.py. A strict review pass found the test did not distinguish the refs plus two wording issues, all fixed and staged.
    • Branch feature/auto-1235, worktree left standing at /home/pieter/repos/worktrees/auto-1235. Commit 28fd524f is local, not pushed, no pull request.
    • Staged, not committed: the test fixture fix and docstring fix.
    • Blocker: a stray untracked .github/actions/build-nuget-default/ (from a mistaken git stash pop of another task's stash, which is still intact) trips the prose gate on commit. Deleting it was refused by the executor.
    • Remaining: clear the directory, commit the staged edits, run the strict pass and record it (digest read after the commit), push, open the develop PR with Closes on promotion: #1235, drive it, close the lane.
    • Lesson for later runs: never git stash pop in a shared repo, stashes are repo-wide; use a scratch copy to prove a revert.
  3. added
    blockedBlocked on another issue: one in another repository, or a decision issue here for a parked handoff
    on Sep 29, 2026
  4. ptr727 commented on Sep 29, 2026

    @ptr727
    OwnerAuthor

    Lane closed out by an attended session. Decision #2092 was answered (option 1) and closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedBlocked 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 track

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions