PR Readiness: Treat the Reviewer as the Customer
Make the pull request cheap to understand, verify, and approve. Ready means the
author believes the current head can merge immediately after approval—not that
the branch merely has a plausible diff or green unit tests.
Observe and preserve
Read the ticket, merge-base diff, commits, current PR body, check rollup, reviews,
and unresolved threads at the current head SHA. Generated summaries may
supplement this evidence, never replace or obscure it.
Keep speculative work on a branch. Open a requested PR as Draft only for concrete
CI, AI review, or a narrow human check. Reply before resolving every thread;
leave disagreements for the reviewer to resolve; re-request review after a
material push. Apply or answer every finding.
Changing Draft/Ready state requires explicit authority in the current user
request for that exact change. Otherwise observe and report state only.
Seven hard Ready-for-Review gates
Evaluate every gate. Missing, stale, unknown, pending, skipped without an
explained consequence, or contradicted evidence is a hard blocker: recommend
Draft and give the recovery action.
- Ticket linkage: the PR links the Linear ticket or the repository's
authoritative tracker item.
- Author comprehension: inspect the complete diff and understand every change;
unexplained generated, copied, or agent-authored output blocks readiness.
- End-user execution: exercise the current head through its end-user path.
Record steps and results; tests alone are insufficient. If no runnable surface
exists, record
not applicable, why, and the nearest real delivery boundary.
Never invent a walkthrough.
- Checks: relevant local checks and CI are terminal and green for the current
head. If the repository has no CI, record that and use current-head
/verify
evidence instead.
- AI review: complete the configured AI review and apply every finding or
answer it with a reason. Configured policy decides acceptable independence;
require unsatisfied blocks. AI review is evidence, never approval.
- Fresh self-review: read the complete current diff top-to-bottom after the
final material change. Confirm scope, behavior, clarity, and accidental files.
- Merge confidence: the author can state that the current PR is immediately
mergeable after approval, with no known follow-up required to make it safe.
When /quality-review or /finish-review returns, resume this same readiness run
and evaluate gate 5. Disclose degraded or absent independence. Do not restart the
review loop unless a later material change makes its evidence stale.
Write for the reviewer
Build the body from the ticket and diff. Keep only applicable sections and write
None for a meaningful empty state.
Why: job to be done in plain English.
What changed: concise approach, non-obvious decisions, scope, exclusions,
and direct dependency when stacked.
Verification: commands, end-user steps, results, and any patch coverage
below the repository's target, with the reason.
Risks and review focus: blast radius, rollback, open questions, and where
human judgment is wanted.
Readiness evidence: use this exact durable handoff shape. Use PASS only
for complete gates, N/A only for gate 3 with its reason and nearest-boundary
proof, and BLOCKED with the recovery action for all others:
Head: <full current head SHA>
1. Ticket linkage — PASS: <evidence>
2. Author comprehension — PASS: <evidence>
3. End-user execution — <PASS: evidence | N/A: reason + nearest-boundary proof>
4. Checks — PASS: <evidence>
5. AI review — PASS: <evidence>
6. Fresh self-review — PASS: <evidence>
7. Merge confidence — PASS: <evidence>
Never carry this evidence forward after the head changes. Where the Safeword
PR review workflow runs, the safeword/pr-readiness commit status reports
this block as current, stale, missing, or blocked for each head; it observes
the block and never judges the gates behind it.
Never manufacture verification or describe cumulative stack changes as this
slice's work. Prefer a concise reviewer narrative over an implementation manifest.
Report the decision
Report the current head and each gate as pass, gate 3 as justified n/a, or
blocked, with concrete evidence. Then provide the reviewer-oriented body or
the minimal edits it needs. End with exactly one outcome:
READY when all gates pass (including a valid gate 3 n/a) and the PR is
already Ready, or the user explicitly authorized Ready promotion.
GATES PASS — awaiting explicit Ready authorization when all seven gates pass,
the pull request is Draft, and the current request did not authorize promotion.
DRAFT — <blockers> when one or more gates are blocked; this recommends state
and does not authorize demotion.
Do not run gh pr ready or gh pr ready --undo unless the current user request
explicitly authorizes that exact state change.
1---2name: pr-readiness-23description: Prepare a pull request for human review and decide whether it may leave Draft. Use when creating or rewriting a PR description, marking a PR ready, responding to review, or checking whether a change is mergeable. Keeps incomplete evidence Draft. Do NOT use as a substitute for human approval or repository merge policy.4---56# PR Readiness: Treat the Reviewer as the Customer78Make the pull request cheap to understand, verify, and approve. Ready means the9author believes the current head can merge immediately after approval—not that10the branch merely has a plausible diff or green unit tests.1112## Observe and preserve1314Read the ticket, merge-base diff, commits, current PR body, check rollup, reviews,15and unresolved threads at the current head SHA. Generated summaries may16supplement this evidence, never replace or obscure it.1718Keep speculative work on a branch. Open a requested PR as Draft only for concrete19CI, AI review, or a narrow human check. Reply before resolving every thread;20leave disagreements for the reviewer to resolve; re-request review after a21material push. Apply or answer every finding.2223Changing Draft/Ready state requires explicit authority in the current user24request for that exact change. Otherwise observe and report state only.2526## Seven hard Ready-for-Review gates2728Evaluate every gate. Missing, stale, unknown, pending, skipped without an29explained consequence, or contradicted evidence is a **hard blocker**: recommend30Draft and give the recovery action.31321. **Ticket linkage:** the PR links the Linear ticket or the repository's33 authoritative tracker item.342. **Author comprehension:** inspect the complete diff and understand every change;35 unexplained generated, copied, or agent-authored output blocks readiness.363. **End-user execution:** exercise the current head through its end-user path.37 Record steps and results; tests alone are insufficient. If no runnable surface38 exists, record `not applicable`, why, and the nearest real delivery boundary.39 Never invent a walkthrough.404. **Checks:** relevant local checks and CI are terminal and green for the current41 head. If the repository has no CI, record that and use current-head `/verify`42 evidence instead.435. **AI review:** complete the configured AI review and apply every finding or44 answer it with a reason. Configured policy decides acceptable independence;45 `require unsatisfied` blocks. AI review is evidence, never approval.466. **Fresh self-review:** read the complete current diff top-to-bottom after the47 final material change. Confirm scope, behavior, clarity, and accidental files.487. **Merge confidence:** the author can state that the current PR is immediately49 mergeable after approval, with no known follow-up required to make it safe.5051When `/quality-review` or `/finish-review` returns, resume this same readiness run52and evaluate gate 5. Disclose degraded or absent independence. Do not restart the53review loop unless a later material change makes its evidence stale.5455## Write for the reviewer5657Build the body from the ticket and diff. Keep only applicable sections and write58`None` for a meaningful empty state.5960- **Why:** job to be done in plain English.61- **What changed:** concise approach, non-obvious decisions, scope, exclusions,62 and direct dependency when stacked.63- **Verification:** commands, end-user steps, results, and any patch coverage64 below the repository's target, with the reason.65- **Risks and review focus:** blast radius, rollback, open questions, and where66 human judgment is wanted.67- **Readiness evidence:** use this exact durable handoff shape. Use `PASS` only68 for complete gates, `N/A` only for gate 3 with its reason and nearest-boundary69 proof, and `BLOCKED` with the recovery action for all others:7071 ```text72 Head: <full current head SHA>73 1. Ticket linkage — PASS: <evidence>74 2. Author comprehension — PASS: <evidence>75 3. End-user execution — <PASS: evidence | N/A: reason + nearest-boundary proof>76 4. Checks — PASS: <evidence>77 5. AI review — PASS: <evidence>78 6. Fresh self-review — PASS: <evidence>79 7. Merge confidence — PASS: <evidence>80 ```8182 Never carry this evidence forward after the head changes. Where the Safeword83 PR review workflow runs, the `safeword/pr-readiness` commit status reports84 this block as current, stale, missing, or blocked for each head; it observes85 the block and never judges the gates behind it.8687Never manufacture verification or describe cumulative stack changes as this88slice's work. Prefer a concise reviewer narrative over an implementation manifest.8990## Report the decision9192Report the current head and each gate as `pass`, gate 3 as justified `n/a`, or93`blocked`, with concrete evidence. Then provide the reviewer-oriented body or94the minimal edits it needs. End with exactly one outcome:9596- `READY` when all gates pass (including a valid gate 3 `n/a`) and the PR is97 already Ready, or the user explicitly authorized Ready promotion.98- `GATES PASS — awaiting explicit Ready authorization` when all seven gates pass,99 the pull request is Draft, and the current request did not authorize promotion.100- `DRAFT — <blockers>` when one or more gates are blocked; this recommends state101 and does not authorize demotion.102103Do not run `gh pr ready` or `gh pr ready --undo` unless the current user request104explicitly authorizes that exact state change.