voyage/lib
Kjell Tore Guttormsen bec4500b8f
feat(review): one reader of the brief's threat model (decision 164, 218)
New lib/review/threat-model.mjs, the one reader both gates use:
readThreatModel(briefText) -> {present, inside, outside, problems} through
brief-validator's parseThreatModel; usable(briefPath, repo) = present, well
formed, and the intent approval current by the two checks /trekplan Phase 1
runs (checkIntentApprovalContent, then verifyLog kind intent with the
hash's sha256: stripped and the subject normalized), else not usable with
the reason in `why`; backedLine(finding, tm) = the Outside: text the
finding's threat_model_ref equals exactly, else null. Only a security
finding not from an engine can be outside (218): a finding with an
`engine`, or carrying the engines' key SECURITY_REVIEW_VULNERABILITY, is
never backed.

Part 2, step 2.2 of the E plan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 08:51:04 +01:00
..
parsers fix(cleanup): R-b review round — retired flags in the prose parsers 2026-11-07 21:36:13 +01:00
review feat(review): one reader of the brief's threat model (decision 164, 218) 2026-11-08 08:51:04 +01:00
skills refactor(cleanup): simplify pass on the R-a diff 2026-11-07 13:31:30 +01:00
util chore(cleanup): R-b R2 — STORM loop, cap hook and the --engine research choice removed 2026-11-07 20:32:38 +01:00
validators feat(brief): optional threat model in the brief (decision 164, 218) 2026-11-08 08:47:51 +01:00
verification chore(cleanup): remove the June trials, orchestrator docs, dormant agent, caller-less code and the fix-round chain 2026-11-07 12:51:54 +01:00