@@ -225,6 +225,50 @@ Anchors are tagged with professional roles to help filter relevant content:
225225. Team Lead / Engineering Manager
226226. Educator / Trainer
227227
228+ == PR Review Policy
229+
230+ === Review Requirements
231+
232+ All pull requests to `main` require at least one approving review before merging.
233+
234+ === Sampling Review (~20%)
235+
236+ For active periods with many contributions, maintainers apply a *20% sampling review*:
237+
238+ * At least 1 in 5 PRs receives a thorough, line-by-line review
239+ * All other PRs receive a high-level review (structure, quality criteria, CI status)
240+ * AI-generated PRs (GitHub Copilot) always receive human review
241+
242+ === Automated Checks (Required to Pass)
243+
244+ Every PR must pass all of the following before merge:
245+
246+ * *E2E Tests* — all 28+ Playwright tests green
247+ * *Lint & Format Check* — ESLint + Prettier (no errors)
248+ * *Dependency Audit* — `npm audit --audit-level=high` clean
249+ * *CodeQL* — no high/critical security findings
250+ * *AsciiDoc Linter* — anchor files conform to format (pre-commit hook)
251+
252+ === What Reviewers Check
253+
254+ For *new semantic anchors*:
255+
256+ . Quality criteria met (Precise, Rich, Consistent, Attributable)
257+ . All required metadata attributes present (`:categories:`, `:roles:`, `:proponents:`)
258+ . AsciiDoc format correct (`[%collapsible]` block, proper attribute syntax)
259+ . Anchor tested with LLM prompt (see <<testing-anchor,Testing Your Semantic Anchor>>)
260+
261+ For *code changes*:
262+
263+ . No regressions in existing tests
264+ . No new high/critical security vulnerabilities
265+ . Follows ESLint/Prettier code style
266+
267+ === AI-Assisted Reviews
268+
269+ This project uses *CodeRabbit* for automated AI code review on all PRs.
270+ CodeRabbit reviews are advisory — human maintainer approval is still required.
271+
228272== Code of Conduct
229273
230274* Be respectful and constructive in discussions
0 commit comments