You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Both refusals now describe the probe and name the directory it ran against, HERE is the single module constant serving the probe and the messages, and reply's exit-64 gloss, origin_owner's docstring and the scripts/README.md sentence were each corrected to agree with them.
Neither is reachable from anything in this tree today. Nothing here invokes pr_review.py from a context exporting GIT_DIR, and wait's request is only cross-owner when a caller names a cross-owner --repo. Both are latent rather than live, and that is the argument for fixing them before something starts invoking the helper from a hook.
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.
What this round did
pr_review.py's out-of-scope refusal naming "this checkout" when the owner is probed from the script's own directory. PR Name the Directory the Scope Refusal Probed, Not the Checkout #1563 merged todevelopas1c7e1f19. Promotion PR Promote develop to main: Scope Refusal Names the Directory It Probed #1564 is open, green, and meets every Merge Gate item except the maintainer's permission to merge.HEREis the single module constant serving the probe and the messages, andreply's exit-64 gloss,origin_owner's docstring and thescripts/README.mdsentence were each corrected to agree with them.Next steps, in priority order
GIT_DIR, so an inherited one redirects it to a different repository. The unsafe direction is a write admitted becauseGIT_DIRnamed a repository under the target's owner while the script sits in a checkout under another.wait's Copilot review request is a mutation that never passes throughin_scope, so the in-process owner check does not cover the one write path that is notcommentorreply.Blockers and dependencies
scripts/pr_review.py, so they collide on one file and want one branch between them or a deliberate order, not two parallel lanes.pr_review.pyfrom a context exportingGIT_DIR, andwait's request is only cross-owner when a caller names a cross-owner--repo. Both are latent rather than live, and that is the argument for fixing them before something starts invoking the helper from a hook.State a resume re-reads
developmerges rather than staying green.scripts/pr_review.py'sorigin_ownerandin_scope, before acting on pr_review.py's scope probe reads another repository when GIT_DIR is inherited #1561 or wait's Copilot review request bypasses the in-process owner check #1562, because this round reworded both refusals and a fix written against the old text will not apply.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
gitmeans 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 inheritedGIT_DIRfalsifies. The wording that survived describes the invocation and its result and claims nothing about which repository answered.git, a timeout, no remote namedorigin, a directory under no repository, anoriginURL the owner regex cannot parse, and an inheritedGIT_DIR.What was learned
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.Path.cwd(), the case had to fail, and it did only after the assertion was pinned positionally to the argument after-C.