chore(release): 6.2.0 — intent, plan gate, step helpers, guards and a review that is a gate

Wave 1 (five orders, merged 2026-10-06), the fixes from the two end-to-end
trials in the test repo, and the defects an independent reader found in
them. Plan 1.7, brief 2.0-2.2 and review 1.0 files stay valid; the new
fields are optional.

Suite 1972 (1970 pass, 0 fail, 2 skipped).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-10-08 20:34:02 +02:00
commit 4ee711a6ac
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
5 changed files with 112 additions and 5 deletions

View file

@ -1,7 +1,7 @@
{
"name": "voyage",
"description": "Voyage — brief, research, plan, execute, review, continue. Contract-driven Claude Code pipeline. /trekbrief, /trekplan, and /trekreview each end by building a self-contained operator-annotation HTML (scripts/annotate.mjs, pencil-toggle annotation pattern): select text or click any element, pick intent (Fiks/Endre/Spørsmål), write comment, copy structured prompt, paste back, Claude revises the .md.",
"version": "6.1.1",
"version": "6.2.0",
"author": {
"name": "Kjell Tore Guttormsen"
},

View file

@ -4,6 +4,113 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## v6.2.0 — 2026-10-08 — Intent, plan gate, step helpers, guards and a review that is a gate
Wave 1 of the practice build (five parallel orders, merged 2026-10-06), the
fixes from two end-to-end trials in a separate test repo, and the defects an
independent reader found in those fixes. Every fix began with a test that
failed on the old code. Suite 1972 (1970 pass, 0 fail, 2 skipped).
Nothing that was valid becomes invalid: plan 1.7, brief 2.0–2.2 and review 1.0
files still validate. The new fields are optional, and the new rules apply only
from plan 1.8 and review 1.1.
### Added
- **Intent (`/trekbrief`).** A size class
(`ceremony: small|bounded|architectural`; absent = `architectural`) sets the
question budget, and the brief asks one round of questions with the
recommendation first. "høres bra ut", "gjør som du vil" and an empty answer
are not approval. `lib/util/approval-log.mjs` keeps an append-only,
hash-chained approval log in the target repo, bound to the approved
content's sha256. `lib/util/artifact-commit.mjs` commits it.
`/trekplan` Phase 1 halts on a broken, missing or mismatched entry.
- **Plan 1.8 and the plan gate (`/trekplan`).**
- Plan 1.8 requires `Test first:` on every step and one `End-to-end:` step.
New optional fields: `Interface in:`, `Interface out:`, `Review focus:`.
- An architectural plan gets a `## Design` part.
- The critic loop has at most 3 rounds, and the plan records them.
`lib/validators/plan-gate.mjs` decides: 0 go, 1 stop, 2 could not run.
An open MAJOR stops the plan, and after the last round the operator
decides.
- `plan-critic` now checks 12 dimensions.
- New `lib/verification/arch-rules.mjs` runs the target repo's own
dependency-cruiser or import-linter.
- New `lib/verification/plan-scope-sweep.mjs` lists changed files that no
step names.
- **Step helpers and proof by command (`/trekexecute`).**
- One fresh `step-implementer` helper per plan step (new agent: opus, effort
high, no Agent tool).
- One controller reads the diff and gives two verdicts: does the step meet
the plan, and does it hold the quality.
- Fix rounds go up, at most 5: helper, then plan, then operator.
- New `lib/verification/red-proof.mjs`: the step's test must fail at the
start point and pass at the result.
- New `lib/verification/test-integrity.mjs` (the floor guard) catches
removed asserts, skipped tests, stubs and loosened thresholds.
- New `lib/verification/done-line.mjs` writes the done line only when the
test command exits 0.
- A closed stop list and a decision log appear in the final report.
- **Guards** (command hooks only, none runs a model).
- `pre-bash-executor` answers "ask" before a merge into main, a push, a
tag or publish, and destructive git. `post-approval-log` records the
answer.
- `pre-plan-gate` runs the plan gate when a Voyage plan leaves plan mode.
- The test lock (`lib/util/test-lock.mjs`, `pre-write-executor`,
`stop-test-lock`) refuses edits to a locked test file, and refuses "done"
until the step's own test command is seen green.
- `post-edit-check` runs the target repo's own formatter or linter. It runs
only during a Voyage plan run or after opt-in.
- New `lib/verification/step-check.mjs` checks each step when it ends.
- **The review is a gate (`/trekreview`, review 1.1).**
- `verdict: ALLOW | WARN | BLOCK` is required.
`lib/review/verdict-gate.mjs` reads it: 0 ALLOW/WARN, 1 BLOCK, 2 could not
decide (never green). A control that did not run gives exit 2.
- Claude Code's `/code-review` and `/security-review` run as the engine.
Their findings enter through `lib/review/engine-findings.mjs` under three
rule keys. `CODE_REVIEW_IMPROVEMENT` (MINOR) covers simplification,
efficiency, reuse, style and readability. The rule catalogue now has 15
keys.
- No finding is struck for length. Only MINOR and SUGGESTION text is
trimmed, and the trims are counted.
- The coordinator lists what it declined to judge.
- Every BLOCKER becomes a numbered remediation step.
- A finding class seen in two reviews is proposed as a project-memory line
(`lib/review/recurrence.mjs`). The operator approves each line.
- **Checks when a brief or plan is written.** A success criterion or Verify
line that the criteria runner could never run is caught when the brief or
plan is written, not when the review runs. The brief validator warns
(`BRIEF_SC_NOT_RUNNABLE`, `BRIEF_SC_SUBPOINTS`, `BRIEF_SC_BASH_NOT_PINNED`).
For a 1.8 plan, the plan validator reports `PLAN_VERIFICATION_NOT_RUNNABLE`,
`PLAN_STEP_VERIFY_NOT_RUNNABLE`, `PLAN_END_TO_END_NOT_RUNNABLE` and
`PLAN_END_TO_END_NOT_VERIFIED`: as errors under `--strict`, otherwise as
warnings.
### Fixed
- The write guard covers `Edit` and `NotebookEdit`, not only `Write`, and
fails closed.
- The review keeps findings that are right:
- an engine finding is never set aside for Actionability;
- `recommended_action` is the engine's own fix, or otherwise a test-first
step, never the failure scenario;
- a cited line past the end of a file is caught;
- finding ids are computed, not typed by a model.
- A MINOR `/code-review` finding outside the reviewed range no longer holds
ALLOW back. A MAJOR one still does.
- The plan template's checkpoint stages the step's files
(`git add … && git commit`). The pre-compact hook reads that form.
- The brief template's examples are commands the runner accepts.
`/trekcontinue` and `/trekexecute` call `lib/` through the plugin root.
- Manifest `must_contain` uses `grep -E -e … --`, so a pattern such as
`--sep` is not read as an option.
- `/trekreview`, `/trekresearch` and `/trekcontinue` write stats through
`stats-append` and report a failed write.
- `annotate` prints an absolute path.
- A test lock marked green may stop while it waits for its controller.
- `/trekplan` runs every exploration agent, and reviews the brief again only
when it has changed since `/trekbrief` reviewed it.
## v6.1.1 — 2026-10-05 — /trekexecute writes what it promises
A patch release. `/trekexecute` no longer loses its telemetry when the harness

View file

@ -2,7 +2,7 @@
Contract-driven Claude Code pipeline: brief, research, plan, execute, review. Agent swarms, research triangulation, adversarial review, multi-session resumption.
![Version](https://img.shields.io/badge/version-6.1.1-blue)
![Version](https://img.shields.io/badge/version-6.2.0-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Platform](https://img.shields.io/badge/platform-Claude%20Code-purple)

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "voyage",
"version": "6.1.1",
"version": "6.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "voyage",
"version": "6.1.1",
"version": "6.2.0",
"license": "MIT",
"engines": {
"node": ">=18"

View file

@ -1,6 +1,6 @@
{
"name": "voyage",
"version": "6.1.1",
"version": "6.2.0",
"private": true,
"description": "Voyage — brief, research, plan, execute, review, continue. Contract-driven Claude Code pipeline. /trekbrief, /trekplan, and /trekreview each end by building a self-contained operator-annotation HTML (scripts/annotate.mjs, pencil-toggle annotation pattern): select text or click any heading/paragraph/list-item, pick intent (Fiks/Endre/Spørsmål), write comment, copy structured prompt, paste back, Claude revises the .md.",
"type": "module",