Skip to main content

Module review

Module review 

Source
Expand description

Alternating custody until a PR converges.

Roles are not fixed. Whoever holds the PR may implement, review, fix, or file follow-ups, and then hands custody to the other. An agent never reviews its own most recent edit.

Three failure modes are handled explicitly here, because each one breaks a naive loop:

  • The nitpick spiral. Round 6 findings are worse than round 1 findings and a loop that counts objections cannot tell. Only blocking gates.
  • Re-litigation. A refuted point re-raised forever never terminates. Refutations are hashed into a ledger carried across rounds.
  • Approval drift. Optimising for “get approved” pressures the author into accepting wrong review comments, so refutation is blessed and the merge gate is blocking-findings-empty, not reviewer-satisfied.

Enums§

Ending
How the run ended, which is the only thing about the run a reader needs.

Functions§

disposition_comment
One response to a review. Refutations carry their reasoning because that is the whole argument; fixes are a list of titles because the diff says the rest.
filed_issue_number
#123 from a filed issue URL, falling back to the URL when it does not look like one. Shorter, and GitHub renders it as a link either way. The issue number a filed follow-up URL points at, when it is one. Local notes and anything unparseable yield nothing.
issue_report
A finding written as a bug report, when it carries the parts of one.
outcome_comment
post_outcome
Post the one comment a run leaves behind, if it has anything to say.
pr_body
The pull request body.
resume_pr
Pick up an existing PR and continue the loop.
review_comment
One review, as a reviewer would write it if they were in a hurry: a count line, a sentence, and one bullet per finding. Only blocking findings carry their detail, because only those are something the author has to act on now.
run_issue
skip_comment
What is posted on an issue both agents declined. What is posted on an issue both reviewers declined.