Skip to content

Session Handoff [default]: #1557 Fixed and Promoted to a Green develop -> main PR #1565

Description

@ptr727

What this round did

Next steps, in priority order

  1. Merge Promote develop to main: Scope Refusal Names the Directory It Probed #1564 and decide whether to dispatch the release. Both need the maintainer's explicit and current go-ahead, and neither was given this round.
  2. pr_review.py's scope probe reads another repository when GIT_DIR is inherited #1561, the scope probe inherits GIT_DIR, so an inherited one redirects it to a different repository. The unsafe direction is a write admitted because GIT_DIR named a repository under the target's owner while the script sits in a checkout under another.
  3. wait's Copilot review request bypasses the in-process owner check #1562, wait's Copilot review request is a mutation that never passes through in_scope, so the in-process owner check does not cover the one write path that is not comment or reply.

Blockers and dependencies

State a resume re-reads

Parked decisions

One, and it is the first next step above rather than a queue: whether to merge #1564 and whether to release after it. The maintainer answered the how-far question this round with develop plus a mergeable promotion PR, which stops deliberately short of both.

What not to repeat

  • Do not restate a refusal message as a claim about which repository encloses a directory. Three wordings were rejected across five review rounds for exactly that class: one asserted the probe had executed when a missing git means it never did, one named a remedy that read as an instruction to change directory and so reproduced the refusal it was explaining, and one claimed a repository encloses the probed directory, which an inherited GIT_DIR falsifies. The wording that survived describes the invocation and its result and claims nothing about which repository answered.
  • Do not assert a scope-probe message is correct without walking every state that reaches its branch. There are six: a missing git, a timeout, no remote named origin, a directory under no repository, an origin URL the owner regex cannot parse, and an inherited GIT_DIR.

What was learned

  • A message that names a cause is a message that can name the wrong one. The refusal's branch collapses six states into one None, so every wording that offered a diagnosis was false in at least one of them. Stating the outcome, that the script got no owner, and scoping the remedy to the cause it actually fixes, is what held.
  • A test asserting a path appears in an argv list passes on coincidence whenever the working directory equals the anchor. The mutation check is what exposed it: against a copy whose probe reads Path.cwd(), the case had to fail, and it did only after the assertion was pinned positionally to the argument after -C.

Activity

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

    handoffA 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