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 the scope computation and the refusal below it test a.diff is not None, so an empty value reaches the resolver, git diff '' fails with fatal: 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.
Four prose findings against scripts/tests/test_prose_lint.py were 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.
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.
The open issue count, with an explicit --limit. It reads 230 today, and gh issue list caps 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 -a and then run a git command inside the copy. The copied .git is a file pointing back at the original repository's git directory, so git 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 .git before 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 pytest in this repository. The suite is unittest, and python3 -m pytest reports 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.
What this round did
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.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.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.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
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.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.--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
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.pytestin this repository. The suite isunittest, andpython3 -m pytestreports a missing module that reads as a broken environment.What was learned