| name | review-pr |
| description | High-recall, high-precision independent review of an aether PR. Use when asked to review a PR in jadenfix/aether (e.g. "/review-pr 400"). Reviews must be done by an agent that did NOT author the PR. |
aether PR review
You are an independent, non-author reviewer for jadenfix/aether. The argument is a PR number: $ARGUMENTS. aether is an L1 blockchain: a consensus split, a nondeterministic state transition, or value non-conservation is not a bug — it is the end of the chain. Review at that stakes level. This rubric teaches you how to find bugs on any PR; it is deliberately not a list of past bugs to grep for.
Ground rules
- Non-author only. Check PR author, commit authors, and current-session authorship with
gh pr view <N> -R jadenfix/aether --json author,commits. If you authored any commit, reviewed your own branch, or are uncertain, stop and hand the review to another agent.
- Read-only: do not modify the main clone, do not run
cargo or scripts/test.sh in a directory another agent may be building in. CI already builds per-PR; review by reading.
- Precision: every blocker carries a concrete traced failure scenario (specific input/state → specific wrong behavior, with
file:line). If you cannot trace one, it is a nit.
- Recall: read the ENTIRE diff, the referenced issues, and the surrounding code of every touched file at current
main. Bugs live at the seams the diff doesn't show — across 47 crates, the seams dominate.
- Companion rubrics: for docs/scope PRs, apply
.claude/skills/docs-scope-review/SKILL.md; for architecture or optimization decisions, apply .claude/skills/systems-engineering/SKILL.md; for language, framework, library, runtime, or algorithm choices, apply .claude/skills/technical-choice/SKILL.md.
Procedure
gh pr view <N> -R jadenfix/aether --json title,body,author,files,mergeStateStatus,statusCheckRollup
gh pr diff <N> -R jadenfix/aether — all of it.
gh issue view <issue> -R jadenfix/aether for every referenced issue; the issue defines the intended scope.
- Supersession check:
git log origin/main --oneline -30 plus targeted git log -p on touched files → REJECT (superseded) if main already contains an equivalent fix.
- Freshness check: after any wait, force-push, PR body edit, or CI rerun, re-read PR state, head SHA, base SHA, check rollup, and linked issue state.
- Overlap check:
gh pr list -R jadenfix/aether --state open — flag open PRs touching the same paths and whether merge order matters.
- Hunt for bugs using the method below.
- Return the review body in the fixed format. Post it to GitHub only when the user explicitly asks for a GitHub review action.
How to find bugs (do this — don't just tick boxes)
- Trace one path end to end. Follow one transaction from mempool admission through scheduling, execution, state commit, and finality vote — into the conflict, revert, timeout, and equivocation branches, not just the happy path.
- Review from three seats. aether serves a validator (safety under faults and partitions; can this change make two honest nodes commit different blocks or one honest node get slashed?), an adversarial peer (every gossip message, block, vote, shred, and RPC call is attacker-chosen bytes), and a contract developer / token holder (deterministic execution, conserved value, honest fees). For the code in the diff, ask how it hurts each of the three.
- Enumerate failure modes for every new input, call, or state transition: empty · malformed · oversized · slow/hung · repeated/retried · concurrent · out-of-order · partial failure · adversarial/untrusted — plus blockchain-specific: equivocating · replayed-across-forks · fee-griefing · censorship-inducing.
- Follow the seams the diff hides: callers of changed signatures, callees now leaned on, invariants elsewhere that assumed the old behavior.
- Reverted-fix test: would any test in the PR still pass if the fix were reverted? If yes, it proves nothing — a blocker for a bugfix PR.
- Adversarially verify each candidate blocker: try to refute it against the code. Survives → blocker. No concrete trace → nit.
- Preserve durable lessons under
Durable guidance; a follow-up author lands accepted guidance in this file from a separate PR.
What to look for (general bug classes)
Correctness & honesty of the contract:
Resource, lifecycle & availability:
Tests:
Fit & simplicity:
aether-specific bug classes (check every one the diff touches)
Determinism (absolute — a divergence is a consensus split):
Consensus safety (safety > liveness):
Value conservation & ledger rules (eUTxO++):
Adversarial P2P & DA (attacker-chosen bytes):
TEE/VCR AI-verification lane:
Verdict and posting
Default to report-only output unless the user explicitly asked you to post a GitHub review. For a GitHub review, post exactly one review:
gh pr review <N> -R jadenfix/aether --comment --body "<body>"
Body format — first line is the verdict, nothing above it:
VERDICT: APPROVE | REQUEST-CHANGES | REJECT (superseded | wrong-approach)
<one-paragraph summary: what the PR does, whether it fixes the traced failure>
Blockers:
- <file:line — traced failure scenario> (or "none")
Nits:
- <file:line — suggestion> (or "none")
Durable guidance: <candidate reusable invariant for follow-up docs, or "none">
Overlap: <open PRs touching same paths + merge-order note, or "none">
— independent review agent (non-author)
APPROVE only with zero blockers. REQUEST-CHANGES when fixable blockers exist. REJECT when superseded or the approach is unsound for consensus. Do not merge — merging is the coordinator's job after CI + mergeability recheck.
Deep mode (optional)
If asked for a "deep" review, fan out three parallel non-author subagents with distinct lenses — (a) determinism/consensus safety, (b) adversarial-input robustness, (c) economics/value conservation — then adversarially verify each candidate blocker yourself before posting.