@@ -27,7 +27,7 @@ this exact shape (no markdown, no code fences, no extra text):
2727 "summary" : " <one line, max 200 chars>" ,
2828 "findings" : [
2929 {
30- "severity" : " high" | "medium" | "low",
30+ "severity" : " critical " | " high" | "medium" | "low",
3131 "file" : " <path>" ,
3232 "line" : <int>,
3333 "message" : " <description and mitigation>"
@@ -36,22 +36,43 @@ this exact shape (no markdown, no code fences, no extra text):
3636}
3737```
3838
39+ ### Severity drives the merge gate
40+
41+ The approver blocks the merge based on ** severity** , not on how many findings
42+ there are. Pick the lowest severity that honestly fits — don't inflate a nit.
43+
44+ - ** ` critical ` / ` high ` → BLOCKING.** Something that can break: crashes, nil
45+ dereferences, data loss/corruption, races/deadlocks, broken or unsafe DB
46+ migrations, security holes, breaking API/proto/contract changes. These stop
47+ auto-merge.
48+ - ** ` medium ` / ` low ` → non-blocking WARNING.** Real but contained: missing
49+ user feedback, inconsistent patterns, naming, typos in docs/strings, style.
50+ Reported as warnings; the PR can still merge.
51+
3952### Tier semantics
4053
41- - ** Tier 1 — Approve.** The change is simple, doesn't touch critical logic,
42- no issues detected. The approver aggregates all tiers and, if every
43- prompt returns Tier 1, approves the PR.
44- - ** Tier 2 — Changes requested.** Minor issues the author must fix before
45- merging: typos, small bugs, out-of-context code, noticeable style
46- problems, incomplete mocks or tests.
47- - ** Tier 3 — Engineer review required.** The diff touches critical paths
48- (crypto, auth, DB migrations, installer, gRPC contracts, CI/CD, secret
49- handling) or introduces changes the model can't judge with sufficient
50- confidence. The approver blocks the merge and @mentions the senior
51- engineering team.
52-
53- The approver takes the ** maximum tier** across all prompts: if security
54- returns Tier 1 but architecture returns Tier 3, the final verdict is Tier 3.
54+ ` tier ` is a coarse signal. The gate uses severity for blocking, ** plus** Tier 3:
55+
56+ - ** Tier 1** — fine to merge; no high/critical issues (minor warnings allowed).
57+ - ** Tier 2** — at least one high-severity bug that should be fixed.
58+ - ** Tier 3** — engineer review required / could break. Critical paths (crypto,
59+ auth, DB migrations, installer, gRPC contracts, CI/CD, secret handling) or
60+ changes the model can't judge confidently. Always blocks and @mentions the
61+ team.
62+
63+ ** The merge is blocked if** any finding is ` high ` /` critical ` , ** or** any prompt
64+ returns Tier 3, ** or** no review ran. Otherwise the approver approves the PR
65+ (any medium/low findings ride along as warnings).
66+
67+ ### Routine dependency bumps
68+
69+ A separate required check (` go_deps ` ) already enforces that Go modules are on
70+ their latest version, so mass ` go.mod ` / ` go.sum ` bumps are routine and
71+ expected. The ` architecture ` and ` security ` prompts treat a version bump of
72+ existing modules as ** Tier 1** — not an architectural/agent-breaking change
73+ and not a vulnerability — and only flag genuine anomalies (new deps, major
74+ breaking jumps, downgrades, known-vulnerable pins, suspicious ` replace `
75+ directives). Don't add prompts that re-block on routine bumps.
5576
5677### When there's nothing to report
5778
@@ -60,10 +81,9 @@ Tier 1, a brief `summary` ("No security concerns detected.") and
6081
6182### Unparseable responses
6283
63- If the model returns something that isn't valid JSON matching the schema,
64- the approver treats it as ** Tier 2** with a generic finding asking for
65- manual review. Fail-safe behaviour — we'd rather block and ask for human
66- review than let something pass without understanding it.
84+ If the model returns something that isn't valid JSON matching the schema, the
85+ approver treats it as a blocking ` high ` finding. Fail-safe behaviour — we'd
86+ rather hold for a human than let something pass without understanding it.
6787
6888## Picking a model
6989
0 commit comments