voyage/tests/helpers
Kjell Tore Guttormsen cb7c13b408
feat(review): the security engine chosen and Claude Security converted (E 3.1)
lib/review/security-engine.mjs (decisions 175, 196, 219):
- choose: Claude Security when available and base..head has committed
  changes; else /security-review when origin/HEAD resolves and
  origin/HEAD...HEAD is non-empty; else no engine (no-engine, no-origin,
  empty-diff), which is "not measured", never 0. A git failure or bad
  usage is exit 2, never a reason.
- convert: reads the newest CLAUDE-SECURITY-<ts>/ report whose stamp is a
  changes scan of exactly base..head; confidence high becomes engine
  findings through toReviewerPayload, the rest go to below_threshold and
  never into findings. An unverified scan, missing researcher counts,
  fewer researchers returned than dispatched, an empty diff or scope, or
  a malformed record is exit 2.
- NO_ENGINE_REVIEWER: with no engine chosen the expected reviewer
  security-engine never reports, so the verdict gate exits 2.

ENGINES gains claude-security (its own reviewer and brief_ref, the
engines' key) with a per-engine label for the written action; it is a
security engine in isSecurityFinding, RAN_ENGINES, the coordinator
contract (out-of-scope and brief-conflict rules) and the coordinator
prose; engine:below-threshold is an unverified reason fed like
engineOutOfScope. Pins of the changed coordinator prose follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 13:29:59 +01:00
..
artifact-repo.mjs refactor(simplify): one source per rule, shared test helpers, a faster isolation test [skip-docs] 2026-10-12 21:06:47 +02:00
bin-path.mjs fix: round 9 of the release review of 6.3.0, for 6.3.1 2026-10-11 12:49:01 +02:00
changelog-section.mjs test(changelog): find the 6.4.0 section by its title, before and after the release commit 2026-10-17 00:13:32 +02:00
child-env.mjs fix(tests): the suite no longer hands the session id to the lock CLI 2026-10-12 14:09:14 +02:00
claude-security-report.mjs feat(review): the security engine chosen and Claude Security converted (E 3.1) 2026-11-08 13:29:59 +01:00
hook-helper.mjs fix(tests): the post-compact hook test takes its child timeout from the shared timing helper 2026-10-15 15:43:36 +02:00
md-section.mjs refactor(cleanup): simplify pass on the R-a diff 2026-11-07 13:31:30 +01:00
no-session-id.mjs fix(tests): the suite no longer hands the session id to the lock CLI 2026-10-12 14:09:14 +02:00
plan-v18-builder.mjs feat(plan): read Files by the 1.9 grammar, warn on unticked paths below it [skip-docs] 2026-10-12 16:09:25 +02:00
red-judge.mjs test(r8): move the live tests out of the round files 2026-11-07 10:19:49 +01:00
red-mutate.mjs feat(red-proof): one red script that takes base, ids, mutations and files as arguments 2026-10-26 12:38:44 +01:00
red-reporter.mjs test(r8): move the live tests out of the round files 2026-11-07 10:19:49 +01:00
red-round.sh feat(red-proof): one red script that takes base, ids, mutations and files as arguments 2026-10-26 12:38:44 +01:00
timing.mjs fix(tests): the post-compact hook test takes its child timeout from the shared timing helper 2026-10-15 15:43:36 +02:00