@@ -82,21 +82,38 @@ what the other reads as settled prior feedback, not to be re-raised. It also pro
8282this reviewer already competes for: comment threads may take half of it, and a Pullfrog review
8383body is a PR summary plus its findings.
8484
85- The login lives in one constant, ` OTHER_REVIEW_BOT ` , and reaches three programs as a jq ` --arg ` .
86- The third is the review-cycle drift predicate, which asks whether a bot review exists that the
87- ` claude[bot] ` filter did not count — true on the first review of every PR in a trial repo, so
88- without the exclusion it would report a reviewer-identity change that has not happened, on every
89- pull request, which is how the warning goes unread on the one where it is real.
85+ The login lives in one constant, ` OTHER_REVIEW_BOT ` , and reaches five programs as a jq ` --arg ` .
86+ One of them reads nothing out of the prompt at all: the review-cycle drift predicate asks whether
87+ a bot review exists that the ` claude[bot] ` filter did not count, which is true on the first review
88+ of every PR in a trial repo — so without the exclusion it would report a reviewer-identity change
89+ that has not happened, on every pull request, which is how the warning goes unread on the one
90+ where it is real. The predicate still has to fire when a drifted login sits * beside* the excluded
91+ one, and after the trial that is the only shape a real drift takes, so it is the case the fixtures
92+ pin.
93+
94+ The CI block is the third channel and the one with teeth, so ` CHECKS_JQ ` and ` FAILING_JOBS_JQ `
95+ drop the same reviewer's checks by name — matched against the app slug, since a GitHub App's login
96+ is its slug plus ` [bot] ` , so ` $skip ` stays the single constant. Pullfrog's verdict is a check,
97+ ` pullfrog-approval ` , failing when it requested changes, and this prompt tells the reviewer that a
98+ failing check is a blocking issue to name and cite. Unfiltered, the rollup does not merely leak
99+ the other arm's conclusion; it converts it into a request-changes this reviewer cannot
100+ substantiate from the diff. Its run-status check is worse per byte: the check links to Pullfrog's
101+ own Actions job, and ` FAILING_JOBS_JQ ` would fetch that job's log into a ` ### Failing job ` excerpt
102+ — the other reviewer's transcript, verbatim, at up to an eighth of the context. That the check
103+ gates no merge is true of merge and silent about the prompt.
90104
91105Where the exclusion empties a block it says so and how much it withheld, because
92106"No prior review comments." on a PR that has some is the same false claim as an empty CI block
93- reading as a green one. Where other comments remain it stays silent: the block claims nothing
94- about being every comment on the PR.
95-
96- Pullfrog's own review verdict is a check, ` pullfrog-approval ` , reporting whether it * would*
97- approve. It is not required in the org ruleset and Pullfrog cannot submit an approving review, so
98- this reviewer remains the only automated approval in the org for the duration of the trial. The
99- constant, and this section, come out when the trial ends.
107+ reading as a green one. Where other entries remain it stays silent: neither block claims to be
108+ every comment or every check on the PR. One rendering changes with it. A human reply to an
109+ excluded comment is kept — real feedback, and dropping it would hide more than the exclusion
110+ protects — but its parent is gone, and an id pointing at nothing in the block turns "fixed in the
111+ next push" into a settled finding whose subject the reviewer never sees. So an orphaned reply is
112+ relabelled rather than renumbered or dropped.
113+
114+ Pullfrog cannot submit an approving review and ` pullfrog-approval ` is not required in the org
115+ ruleset, so this reviewer remains the only automated approval in the org for the duration of the
116+ trial. The constant, the four exclusions, and this section come out when the trial ends.
100117
101118### Tool usage artifact
102119
0 commit comments