The Merge Gate in pr-review-conduct carries an earlier round's coverage statement forward when the pull request changes the same set of files at both commits. It does not carry an earlier round's file table forward. A table counts only on the round covering the head. Copilot's lite rounds keep producing exactly that case, so a merge that every other gate item clears goes to the maintainer as a coverage question.
Measured
Three feature PRs into develop in one session, 2026-10-01. Each had the same shape:
| PR |
Round 1 |
Re-review on the next head |
File set between the two heads |
Outcome |
| #2265 |
lite, coverage=table, 12 files |
lite, two rounds, no table, no marker |
identical, 12 files |
maintainer accepted round 1's table |
| #2269 |
lite, coverage=table, 1 file |
lite, no table, no marker, "Approval recommended" |
identical, 1 file |
maintainer accepted round 1's table |
| #2271 |
lite, coverage=table, 4 files |
lite, no table, no marker, no findings |
identical, 4 files |
maintainer accepted round 1's table |
On #2265, one explicit requestReviews re-request produced another round with no table, the same result #1692 recorded for the marker. In each case pr_review.py status exited 45 with NO FILE TABLE STANDS IN, while the digest's own change-set comparison could have shown the file set unchanged.
The question
Should a round's file table carry forward under the same bound a statement does, meaning the pull request changes exactly the set of files the table names, at both commits? The alternative is to keep the current rule, where every such PR needs the maintainer's reading.
- Option 1: carry the table on an identical file set. It uses the bound the statement carry already uses.
pr_review.py already computes the change set at both commits for the statement carry (carry_holds). It removes a maintainer prompt that has been answered the same way every time it was asked.
- Option 2: keep the rule. A table says which files a round read. It is weaker than a marker that states a count, and a re-review on new content may have read less than the earlier round did. The maintainer's reading stays the safeguard.
A partial table, or a round that states partial coverage, would still go to the maintainer either way.
🤖 Generated with Claude Code
The Merge Gate in
pr-review-conductcarries an earlier round's coverage statement forward when the pull request changes the same set of files at both commits. It does not carry an earlier round's file table forward. A table counts only on the round covering the head. Copilot's lite rounds keep producing exactly that case, so a merge that every other gate item clears goes to the maintainer as a coverage question.Measured
Three feature PRs into develop in one session, 2026-10-01. Each had the same shape:
coverage=table, 12 filescoverage=table, 1 filecoverage=table, 4 filesOn #2265, one explicit
requestReviewsre-request produced another round with no table, the same result #1692 recorded for the marker. In each casepr_review.py statusexited 45 withNO FILE TABLE STANDS IN, while the digest's own change-set comparison could have shown the file set unchanged.The question
Should a round's file table carry forward under the same bound a statement does, meaning the pull request changes exactly the set of files the table names, at both commits? The alternative is to keep the current rule, where every such PR needs the maintainer's reading.
pr_review.pyalready computes the change set at both commits for the statement carry (carry_holds). It removes a maintainer prompt that has been answered the same way every time it was asked.A partial table, or a round that states partial coverage, would still go to the maintainer either way.
🤖 Generated with Claude Code