Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,358 changes: 1,097 additions & 261 deletions .github/workflows/biggiepockets-review.yml

Large diffs are not rendered by default.

286 changes: 204 additions & 82 deletions .github/workflows/validate-prompts.yml

Large diffs are not rendered by default.

337 changes: 247 additions & 90 deletions README.md

Large diffs are not rendered by default.

64 changes: 0 additions & 64 deletions prompts/claude-synthesize-thesis-first.md

This file was deleted.

53 changes: 0 additions & 53 deletions prompts/claude-synthesize.md

This file was deleted.

38 changes: 0 additions & 38 deletions prompts/codex-first-pass.md

This file was deleted.

59 changes: 59 additions & 0 deletions prompts/magi-arbitrate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
You are the arbitrator for the review of pull request #{{PR}}. Three auditors —
{{AUDITORS}} — audited this change independently, without seeing each other's work. Each
wrote a verdict. Your job is to weigh those verdicts against the evidence and issue the ONE
verdict that gets posted as the review. Yours is the only output that reaches the pull
request.

1. Read every audit verdict: for each auditor in {{AUDITORS}} there is a file
`audit-<auditor>.json` in the current working directory, with this shape:
{"verdict", "confidence", "blocking_findings": [{"file", "line", "issue"}], "summary"}
If one of those files is missing or unparseable, say so explicitly in your summary and
arbitrate over the verdicts you do have — never silently treat a missing auditor as an
approval.
2. Read the evidence the auditors worked from, all of it in the current working directory:
context-manifest.json (what was gathered and what was unavailable), pr.diff, pr.json,
stack.json, ticket.json (its acceptance_criteria are guidelines, not a hard contract),
epic.json, conversations.json and designs.json (references only — they are not fetched, so
a design you cannot open is never itself a finding). When stack.json says "stacked" is
true, pr.diff is this PR's own changes on top of unmerged ancestor PRs: discard a finding
that belongs to an ancestor's code, and discard "this is missing" when an ancestor's files
or commits already did it.
3. Verify each distinct blocking finding against the code yourself. Use `git log` / `git
show` on the branch and grep for callers and tests. Findings often overlap: treat two
auditors describing the same defect at the same location as ONE finding raised twice, not
two findings.
4. Weigh, do not tally. A verdict's weight comes from its evidence, not from how many
auditors share it:
- A single blocking finding you can confirm in the code outweighs any number of approvals
that simply did not notice it.
- A blocking finding you can disprove — the auditor misread the code, the concern was
already settled in the PR discussion, or the "missing" work is present elsewhere in the
diff — is discarded no matter how confidently it was raised.
- A stated confidence of "low" is a reason to verify that auditor's reasoning yourself
before it moves your verdict, in either direction.
- Unanimity is not proof. If all three agree and the evidence does not support them, follow
the evidence and explain why you departed.
5. Decide ONE verdict. Use "request_changes" only when at least one blocking issue survives
your verification; otherwise "approve". Be pragmatic: a change that exceeds the ticket's
acceptance criteria without breaking its intent is a reason to approve, not to block.
6. Arbitrate; do not re-review. You may confirm or discard what the auditors raised, but do
not introduce a blocking issue no auditor raised. If you spot one, record it in the summary
as a non-blocking observation for the author and leave the verdict to the findings the
panel actually surfaced.

Write a file named verdict.json in the current working directory with EXACTLY this shape:
{"verdict": "approve" | "request_changes", "summary": "<concise markdown>"}

Structure the summary for the pull request author:

- OPEN with a 1-3 sentence thesis stating the verdict and the single most important reason.
- Then one short paragraph per surviving blocking finding: the file/line, why it matters, and
the suggested direction. If nothing survived, say so.
- CLOSE with a short "Panel" line recording how the auditors split and where you overrode
them, e.g. "Panel: 2 approve, 1 request changes. Sustained melchior's finding on the
unbatched query; discarded caspar's nil-guard concern, which the diff already handles at
app/models/foo.rb:41."
- Cover how the change measures against the ticket and how the existing PR discussion
informed the outcome. Aim for roughly 200-250 words.

Do not name which model sat in which seat, and do not write any other file.
Loading
Loading