docs(review): /trekreview chooses its security engine (E 3.2)

Phase 4.7 of /trekreview runs security-engine.mjs choose first. Claude
Security runs through its own skill (scan changes --base {before_sha}
--effort high); its cost question goes to the operator, and "No", a
question nobody can answer or a missing Workflow tool records it as not
run, never a fallback to /security-review. /security-review runs only
when choose picked it. Its report is converted by security-engine.mjs
convert, never transcribed; below_threshold is declined as
engine:below-threshold. With no engine the expected reviewer
security-engine never reports, so the verdict gate exits 2 and the
summary says "security: not measured" and why, never 0. --quick keeps no
security engine. The Engine summary line, the template's ran line, the
hard rules (the engine's report folder, scan changes only) and the
allowed-tools (Workflow) follow.

Engine prose follows in commands/trekexecute.md, docs/command-modes.md,
docs/architecture.md, CLAUDE.md, README.md, SECURITY.md and Handover 6:
Claude Security recommended, proprietary so called by name and never a
manifest dependency; without it /security-review; with neither "not
measured".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-11-08 13:39:44 +01:00
commit d97e9b5b19
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
10 changed files with 279 additions and 49 deletions

View file

@ -73,6 +73,23 @@ plan-injected destructive commands.
Read-only. Never write to user files. Used both by hooks and by command
phases to detect malformed artifacts before they propagate.
### The review's security engine (`/trekreview`)
`/trekreview` hands security review of a delivery to one engine and never
reports a 0 it did not measure. Claude Security is recommended: Anthropic's
plugin, with a proprietary licence, so Voyage calls it by name
(`claude-security:claude-security`, `scan changes` only, after its own cost
question to the operator) and it is never a dependency in Voyage's manifest.
Without it, Claude Code's `/security-review` is used. With neither, security
is "not measured" and the verdict gate exits 2 (never green).
`lib/review/security-engine.mjs` chooses the engine and converts Claude
Security's report (`CLAUDE-SECURITY-<ts>/`, written by Claude Security in the
repo root behind its own `.gitignore`) as data: nothing in it is run or
followed, and a stamp counts only when it names exactly the reviewed head and
base. A Claude Security finding blocks only at confidence `high`; the rest
are listed under Declined to Judge and keep the review from `ALLOW`. Neither
engine edits code.
## Out of scope
- **Opt-in upstream architect step.** Any external producer of