Repository navigation
Session Handoff [default]: #1537 Fixed, Promoted to main, and Released as 2.0.621 #1568
Copy link
Copy link
Closed
Labels
handoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Description
What this round did
- Fixed prose_lint.py Treats an Empty --diff as No Diff and Widens a Scoped Run to the Whole Tree #1537,
prose_lint.pyreading an empty--diffas no--diffat all and widening a scoped run to the whole tree. PR Read an Empty prose_lint --diff as a Failed Base, Not as No Diff #1566 merged todevelopase4aa5d8, promotion Promote develop to main: Read an Empty prose_lint --diff as a Failed Base #1567 merged tomainasc728624, release2.0.621dispatched and green, this machine's Skills refreshed to that commit. - Both the scope computation and the refusal below it test
a.diff is not None, so an empty value reaches the resolver,git diff ''fails withfatal: bad revision '', and the existing refusal fires naming the value. - Two tests, deliberately. The unit test mocks the resolver and pins that the empty value reached it. The second runs the same case against a real repository, since the mocked one alone would stay green if git ever resolved an empty revision, and an empty scope reads as a clean tree.
- The maintainer's carried-over step 1 from the previous link, merging Promote develop to main: Scope Refusal Names the Directory It Probed #1564, had already landed before this round started.
Next steps, in priority order
- 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 becauseGIT_DIRnamed a repository under the target's owner while the script sits in a checkout under another. - wait's Copilot review request bypasses the in-process owner check #1562,
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. - Four prose findings against
scripts/tests/test_prose_lint.pywere left open when this round's edit budget ran out, listed in Read an Empty prose_lint --diff as a Failed Base, Not as No Diff #1566's body with their line numbers. None is behavioral, and the two-round budget is why they were reported rather than fixed. They are worth one pass whenever that file is next edited, and they are not worth a branch of their own.
Blockers and dependencies
- pr_review.py's scope probe reads another repository when GIT_DIR is inherited #1561 and wait's Copilot review request bypasses the in-process owner check #1562 both touch
scripts/pr_review.py, so they collide on one file and want one branch between them or a deliberate order, not two parallel lanes. Carried unchanged from the previous link, neither was worked this round. - Neither is reachable from anything in this tree today, so both are latent rather than live, which is the argument for fixing them before something starts invoking the helper from a hook.
State a resume re-reads
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, since the round before this one reworded both refusals and a fix written against the old text will not apply.- The open issue count, with an explicit
--limit. It reads 230 today, andgh issue listcaps at 30 rows without one, which has been reported as the backlog size before.
Parked decisions
None. The one decision this round raised, how far to take the promotion, was put to the maintainer as a blocking question and answered "merge and release", which is what happened. Nothing was deferred for want of an answer.
What not to repeat
- Do not copy a git worktree with
cp -aand then run a git command inside the copy. The copied.gitis a file pointing back at the original repository's git directory, sogit checkout <ref> -- <path>in what looks like a scratch copy stages that path in the real worktree's index. A review subagent did exactly this and had to unstage it. Delete the copied.gitbefore any git command runs in the copy. - Do not answer a prose finding by narrowing the claim it disputes. Round one's fix narrowed a comment from any command substitution to a quoted one, and round two's review disproved the narrowed form too. Deleting the sentence is what closed it, and the same shape closed four of the six findings that round.
- Do not reach for
pytestin this repository. The suite isunittest, andpython3 -m pytestreports a missing module that reads as a broken environment.
What was learned
- A regression test that mocks the resolver cannot pin the precondition the fix rests on. The fix here is only a refusal because git rejects an empty revision, and the mocked test would have stayed green if that ever changed. The real-repository test beside it is what holds the actual behavior, and both were proved by reverting the two production lines and watching each fail.
- Three strict-review passes over a two-line production change produced no behavioral finding after the first pass and thirteen prose findings in total, every one against text a previous round had written. The two-round edit budget is the rule that ends this, and reporting what is still open costs less than a fourth round that would write the fifth round's findings.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
handoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Activity
ptr727 commentedon Sep 14, 2026
Continued in #1591, round 10 on track
default.