merge: wave 1 order 4 (guards) into main

CLAUDE.md: the review paragraph (order 5) and the guards paragraph
(order 4) are both kept (planned union line).

The launch gate went red on the merged tree: post-approval-log reads
the session's permission_mode, and its regression test feeds that value.
Both were untracked when the branch ran its suite, so the gate never saw
them there. Operator decision 2026-10-06: a counted exemption in a new
class (mode-read: 3 + 1 hits), and the binding-rule sentence in CLAUDE.md
names it. An extra hit in either file turns the gate red again (checked).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-10-06 20:41:21 +02:00
commit 47864f91b4
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
32 changed files with 3284 additions and 110 deletions

View file

@ -21,8 +21,9 @@ Voyage — a contract-driven Claude Code pipeline: brief, research, plan, execut
> `tests/lib/no-claude-code-launch.test.mjs`; its exemption list holds historical
> mentions plus one operator instrument (operator decision, 2026-10-02:
> `docs/proevesett.md` tells a person how to run Anthropic's plugin eval tool on
> the fixed test set; Voyage itself starts nothing), each with a reason and an
> exact count.
> the fixed test set; Voyage itself starts nothing) plus two files that only read
> the session's permission mode from hook input (operator decision, 2026-10-06),
> each with a reason and an exact count.
## Commands
@ -61,6 +62,18 @@ Full flag reference for each command (modes, `--gates`, `--profile`, breaking ch
> repo's `.claude/rules/voyage-review-lessons.md`, each one operator-approved.
> Contract → `docs/HANDOVER-CONTRACTS.md` §Handover 6.
> **Guards (P3/P7/P9/P12).** Command hooks only, wired for every session.
> `pre-bash-executor` answers `ask` (holds in auto mode) before merge into
> main, push, tag/publish and destructive git; `post-approval-log` writes
> approvals to the K2 log. `pre-plan-gate` runs the K3 plan gate on a Voyage
> plan leaving plan mode. `pre-write-executor` + `stop-test-lock` enforce the
> K8 test lock (`lib/util/test-lock.mjs`). `post-edit-check` runs the target
> repo's own format/lint only during a Voyage plan run or after opt-in
> (`.claude/voyage-guards.json`); `lib/verification/step-check.mjs` (K9) fails
> the step on findings. A missing contract CLI reads "not measured"/"not
> logged", never green. Voyage's guards are deterministic only when no
> installed mod handles `tool.check`.
## Agents
| Agent | Model | Role |