# Critères de revue de code

Source de vérité partagée par `/code-review`, `/code-review-pre-release`, et tout skill qui classe des problèmes de code en niveaux de sévérité. Les libellés (`Critical`, `Major`, `Minor`) et leur format d'affichage sont définis dans [review-issue-format.md](./review-issue-format.md).

## Critical (must fix)

- Security vulnerabilities (injection, XSS, leaked secrets, missing auth/authz)
- Bugs and logic errors
- Breaking changes without migration path — toute rupture de contrat qu'un consommateur externe peut observer : HTTP endpoint (route, payload, status, headers), CLI flag, library export, DB migration qui drop ou renomme une colonne, message broker contract, webhook payload
- Missing error handling on critical paths
- Race conditions in concurrent/async code
- Production performance under realistic load: per-request cost × concurrency (1000 WS, 100 req/s), crash-mid-operation consistency, unbounded queues/caches, query scaling with data growth

## Major (should fix)

- Type safety issues (untyped params, `any`, missing null checks)
- Architecture violations (wrong layer, tight coupling, bypassed abstractions)
- Performance regressions (N+1 queries, missing indexes, blocking async)
- Missing tests for new functionality
- Silent behaviour changes — même signature, sémantique différente (default value modifiée, type d'exception swappé, log level downgradé)
- Dead feature flag ou config key — ajoutée mais jamais lue, ou lue mais jamais définie

## Minor (consider fixing)

- Naming that doesn't match intent
- Functions exceeding 30 lines
- Code duplication that should be extracted

## Verdict

Voir [review-issue-format.md § Règles de présentation](./review-issue-format.md) — verdict unique pour tous les skills :

- **APPROVED** — aucun Critical ni Major
- **MODIFICATIONS REQUIRED** — au moins un Major, aucun Critical
- **BLOCKED** — au moins un Critical
