Skip to content

feat(review): exclude the parallel reviewer from the prompt - #38

Merged
zfarrell merged 3 commits into
mainfrom
feat/pullfrog-parallel-review-trial
Aug 28, 2026
Merged

feat(review): exclude the parallel reviewer from the prompt#38
zfarrell merged 3 commits into
mainfrom
feat/pullfrog-parallel-review-trial

Conversation

@zfarrell

Copy link
Copy Markdown
Contributor

Keeps Pullfrog's review output out of Claude's prompt for the comparison trial (#37 adds the Pullfrog workflow): its inline comments and review body reach <prior_review_comments> and the PR conversation through two author-unfiltered reads, which costs the comparison its independence and costs the diff blocks the bytes.

Also excludes it from the review-cycle drift predicate, which would otherwise report a reviewer-identity change on the first review of every PR in a trial repo. Must merge before #37.

@zfarrell
zfarrell requested a review from a team as a code owner August 28, 2026 16:32
@zfarrell
zfarrell requested review from anoop-narang and removed request for a team August 28, 2026 16:32
Comment thread README.md Outdated
Comment thread tests/review-cycle-test.sh
Comment thread scripts/gather-review-context.sh Outdated
claude[bot]
claude Bot previously approved these changes Aug 28, 2026
Comment thread scripts/gather-review-context.sh Outdated
Comment thread README.md Outdated
claude[bot]
claude Bot previously approved these changes Aug 28, 2026
Comment on lines +562 to +571
# Matched by name against the app slug rather than by a second constant: a GitHub App's bot
# login is its slug plus "[bot]", and its checks are the slug and slug-prefixed names, so
# $skip still carries the one value all five programs agree on. Both rollup shapes are
# matched -- a CheckRun by .name, a StatusContext by .context -- because which of the two an
# app posts is the app's choice, not ours.
#
# Silent while other checks remain, and stated when the exclusion empties the block: a list
# claims nothing about being every check, but "No checks reported." on a PR that has some is
# a false claim, and this is the block whose emptiness the README warns gets read as green.
# One definition of "belongs to the other reviewer", composed into both programs below rather

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

super nit: (not blocking) This paragraph now describes the rule the next one replaces, and the two run together.

Lines 562-566 still say the match is "by name … a CheckRun by .name, a StatusContext by .context", which is exactly the name-only, case-sensitive rule cycle 2 established is not enough — a maintainer stopping here reads the current theirs as narrower than it is, and reads it as complete. Lines 577-585 say the true rule; the earlier paragraph is the superseded draft of it. Worth folding the two into one, or at least amending 565-566 to "both names on the entry, downcased".

Also missing the # separator between "…gets read as green." (570) and "One definition of…" (571), so the silent/stated asymmetry and the shared-owner-test rationale render as one paragraph. Every other break in this block has one.

Same class: the block says "all five programs agree on" $skip while CHECKS_JQ and FAILING_JOBS_JQ now reach it through CHECK_OWNER_JQ, and :302 still says "three programs below" (as does extract_const's comment in tests/lib.sh:45). The README's removal list is the one that has to be right and it is; these are just counts that stopped counting.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cycle 2's two gaps are closed and pinned. CHECK_OWNER_JQ is one rule composed into both check programs, matching .name/.context and .workflowName downcased, with the . != "" guard keeping an empty slug from matching everything; the {name: "review", workflowName: "Pullfrog"} and Pullfrog-Approval fixture entries cover both shapes that leaked before, and the failing-job assertion covers the log-fetch arm separately. reviews-drift-with-other-bot.json pins the case the exclusion makes ordinary — a drifted login beside the excluded one still fires. The orphaned-reply relabel and its fixture reply (2105 → 2103) do what the thread asked. Verified the composed programs against the fixtures by reading them; CI was still queued at review time, so I am not claiming the suite result.

One super nit inline, comments only.

@zfarrell
zfarrell merged commit 714d0bc into main Aug 28, 2026
3 checks passed
@zfarrell
zfarrell deleted the feat/pullfrog-parallel-review-trial branch August 28, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant