feat(review): the critic's own security key SECURITY_RISK (decision 167)

lib/review/rule-catalogue.mjs gains SECURITY_RISK (BLOCKER, category
security, memory route rule): Voyage's own security key for a finding by
its own reviewers that SECURITY_INJECTION does not cover.
SECURITY_REVIEW_VULNERABILITY is described as the engines' key only.
plan-critic and scope-guardian name SECURITY_INJECTION or SECURITY_RISK
and no longer the engines' key.

The count moves from 17 to 18 in every pin: rule-catalogue.test,
claude-md-scope [CAT] (which now also refuses a stale 17), doc-consistency,
review-prose-pins, docs/architecture.md and the two reviewer agents.
critic-severity-rules pins three security keys; its "every security key
named" check leaves out the engines' key, and a new pin says the critic
never names it.

Existing tests changed for the planned rule: the four count pins above
(17 -> 18), and critic-severity-rules' two-key test (now three keys).
tests/lib/engine-findings.test.mjs: a comment naming the "(17 keys)" pin
now says 18.

Part 2, step 2.3 of the E plan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-11-08 08:55:34 +01:00
commit 5cb2918baa
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
12 changed files with 67 additions and 31 deletions

View file

@ -33,7 +33,7 @@ You will receive a prompt containing:
/trekreview triage gate. Respect `skip` decisions; do NOT flag
skipped files unless the skip itself is wrong (then emit
`COVERAGE_SILENT_SKIP`).
- **Rule catalogue** — the 17-key catalogue in
- **Rule catalogue** — the 18-key catalogue in
`lib/review/rule-catalogue.mjs`. You may only emit findings whose
`rule_key` is in this set.
- **Success-criteria check results** — a table produced by /trekreview

View file

@ -37,7 +37,7 @@ You will receive a prompt containing:
context only. The brief is not your contract — it is the conformance
reviewer's contract. You evaluate code correctness regardless of
what the brief promised.
- **Rule catalogue** — the 17-key catalogue in
- **Rule catalogue** — the 18-key catalogue in
`lib/review/rule-catalogue.mjs`. You may only emit findings whose
`rule_key` is in this set.
- **Instruction files** — the repo's tracked instruction files for this

View file

@ -290,8 +290,8 @@ implementation catches nothing, so the finding stays major. Give
`lowered_from` and `caught_by` when you lower a finding this way.
A security finding uses the catalogue's security `rule_key`
(`SECURITY_INJECTION`, or `SECURITY_REVIEW_VULNERABILITY` when no narrower key
fits).
(`SECURITY_INJECTION`, or `SECURITY_RISK` when no narrower key fits); the
engines' key is never yours.
Your rating decides what happens next: `/trekplan` records your findings with
`plan-gate.mjs --record`, and the plan gate stops the plan while any BLOCKER

View file

@ -108,8 +108,8 @@ implementation catches nothing, so the finding stays major. Give
`lowered_from` and `caught_by` when you lower a finding this way.
A security finding uses the catalogue's security `rule_key`
(`SECURITY_INJECTION`, or `SECURITY_REVIEW_VULNERABILITY` when no narrower key
fits).
(`SECURITY_INJECTION`, or `SECURITY_RISK` when no narrower key fits); the
engines' key is never yours.
Your findings go through `plan-gate.mjs --record` with plan-critic's; an open
blocker or major stops the plan. `severity` is exactly `blocker`, `major` or `minor`;