chore(release): 6.5.0 — Three skills for brief, criteria and review, English labels, and three trial-5 fixes
Wave 3 (voyage:reviewing-adversarially, voyage:writing-criteria, voyage:interviewing), decision 56 (English labels) and decision 59 (trial-5 findings 1, 4 and 7), each with its line under ### Doors. Known issues: the eleven other trial-5 findings grouped by consequence, and the release review's 13 MAJOR and 1 MINOR (WARN, no BLOCKER; decision 52). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
849b2427c3
commit
1b613421eb
5 changed files with 204 additions and 5 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "voyage",
|
"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 (Fix/Change/Question), write comment, copy structured prompt, paste back, Claude revises the .md.",
|
"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 (Fix/Change/Question), write comment, copy structured prompt, paste back, Claude revises the .md.",
|
||||||
"version": "6.4.0",
|
"version": "6.5.0",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Kjell Tore Guttormsen"
|
"name": "Kjell Tore Guttormsen"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
199
CHANGELOG.md
199
CHANGELOG.md
|
|
@ -4,6 +4,205 @@ 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/).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||||
|
|
||||||
|
## v6.5.0 — 2026-10-18 — Three skills for brief, criteria and review, English labels, and three trial-5 fixes
|
||||||
|
|
||||||
|
Wave 3 adds three skills, each one source for a discipline that was copied
|
||||||
|
or missing before: `voyage:interviewing` for the brief's question round,
|
||||||
|
`voyage:writing-criteria` for criteria that can run and go red, and
|
||||||
|
`voyage:reviewing-adversarially` for every reviewer's stance. The test repo's
|
||||||
|
trial 5 ran all three end to end. The product now shows English where it
|
||||||
|
showed Norwegian (decision 56), and three findings from trial 5 are fixed
|
||||||
|
(decision 59), each with a test that failed on the code before it. Suite
|
||||||
|
2659 (2657 pass, 0 fail, 2 skipped), measured by `npm test` on `main` at
|
||||||
|
`849b242`, the tree this release review covered.
|
||||||
|
|
||||||
|
Nothing here asks anything of users. No brief, plan or review format changes.
|
||||||
|
|
||||||
|
### Doors
|
||||||
|
|
||||||
|
- two-way: skill reviewing-adversarially and its skills: lines (order 7d) — revert f906ec9; the review contract (JSON, verdict) is unchanged.
|
||||||
|
- two-way: skill writing-criteria and its pointers (order 7c) — revert 837e925; the criteria runner and the validators are unchanged.
|
||||||
|
- two-way: skill interviewing and the /trekbrief Phase 3 pointer (order 7e) — revert f6e18a1 restores the inline Phase 3 text; no brief format change (Handover 1 untouched).
|
||||||
|
- two-way: English UI labels (decision 56) — the stored annotation keys are unchanged, so a revert brings back the Norwegian labels and every saved annotation loads either way.
|
||||||
|
- two-way: the brief validator warns on a criterion whose first backticked span is not a command while a later one is (trial-5 finding 1) — a warning, never an error; a revert stops the warning.
|
||||||
|
- two-way: a re-planned step's earlier new files are parked before the fresh build (trial-5 finding 4) — a revert leaves them in the work tree again; files already parked stay in the git directory, never deleted.
|
||||||
|
- two-way: one reviewer's two findings on one file+line+rule keep a row each (trial-5 finding 7) — a revert merges them again; earlier review.md files are not re-read.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **Skill `voyage:reviewing-adversarially`** (order 7d). One stance for
|
||||||
|
every reviewer: no praise, a source for every finding (`file:line` or a
|
||||||
|
quote), no downgrade without a reason, a Declined to Judge list, claims
|
||||||
|
checked against the diff and not the report. Preloaded by the three
|
||||||
|
`/trekreview` agents and scope-guardian, and named by `/trekreview` at
|
||||||
|
spawn; it replaces the copied "Interaction Awareness" block. Each
|
||||||
|
reviewer's Declined to Judge lines now reach `review.md`.
|
||||||
|
- **Skill `voyage:writing-criteria`** (order 7c). One source for how a
|
||||||
|
success criterion or a `Verify:`, `Regression:` or `End-to-end:` line is
|
||||||
|
written so the criteria runner can run it and it can go red; anything more
|
||||||
|
is `bash tests/<name>.sh`. Preloaded by brief-reviewer and plan-critic,
|
||||||
|
named by `/trekplan`. Baseline: 24 of 27 lines refused by the runner
|
||||||
|
without the skill, 0 of 27 with it.
|
||||||
|
- **Skill `voyage:interviewing`** (order 7e). `/trekbrief` Phase 3 asks for
|
||||||
|
the interview form by name instead of carrying it: at most four questions
|
||||||
|
per call, one decision each, the recommended answer first, facts looked up
|
||||||
|
and never asked, the rest written down, and a hollow answer or unasked
|
||||||
|
scope never written in as the person's decision. Measured with helpers:
|
||||||
|
round-1 size 10–11 → 4, questions without a recommendation 15/31 → 0/12,
|
||||||
|
a hollow answer kept as a decision 2/3 → 0/3.
|
||||||
|
- **Eval cases for the three skills** (`evals/skill-interviewing-*`,
|
||||||
|
`evals/skill-writing-criteria-*`, `evals/skill-reviewing-adversarially-*`:
|
||||||
|
three that should fire, two that should stay quiet, one effect case each).
|
||||||
|
Written, not run.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **English where the product showed Norwegian** (decision 56). The
|
||||||
|
annotation page's intent buttons, sidebar badges and copied prompt read
|
||||||
|
Fix / Change / Question; the stored keys stay `fiks` / `endre` /
|
||||||
|
`spørsmål`, so annotations saved earlier still load. `/trekreview`'s
|
||||||
|
project-memory approval offers "Add the line" / "Not now". README,
|
||||||
|
CLAUDE.md, `docs/architecture.md`, `package.json` and `plugin.json`
|
||||||
|
describe what the product shows. The Norwegian hollow-answer list in
|
||||||
|
`approval-log.mjs` and `/trekbrief` stays: it matches what a user types.
|
||||||
|
- **The brief validator sees a criterion the runner cannot run** (trial-5
|
||||||
|
finding 1). When a success criterion's first backticked span is not a
|
||||||
|
command but a later span is, the validator now warns
|
||||||
|
`BRIEF_SC_NOT_RUNNABLE`, as the criteria runner already reported it
|
||||||
|
unrunnable. A criterion that only names a flag or a path stays prose and
|
||||||
|
unflagged (Handover 1 says so).
|
||||||
|
- **A re-planned step no longer builds on its earlier attempt's files**
|
||||||
|
(trial-5 finding 4). `On failure: revert` leaves a step's new files on
|
||||||
|
disk; `--resume` after a new plan now runs
|
||||||
|
`lib/util/park-attempt-files.mjs` before the fresh build helper. It moves
|
||||||
|
every still-untracked file the attempt created into the git directory
|
||||||
|
(`voyage/parked/step-N-attempt-k`), never deletes one, never overwrites a
|
||||||
|
parked file, and exits 1 while a file the attempt made is still in the
|
||||||
|
tree.
|
||||||
|
- **One reviewer's two findings on one triplet keep a row each** (trial-5
|
||||||
|
finding 7). Pass 1 merged two different `/code-review` findings on the same
|
||||||
|
file, line and rule key, and the second lost its row and its action. A
|
||||||
|
reviewer is never merged with itself: its second finding under another
|
||||||
|
title stays its own row, with the id over `rule_key#2`, counted over the
|
||||||
|
final list — also in `--workflow`, engine-findings and fidelity-diff. The
|
||||||
|
decision-23 put-back stays one copy per triplet.
|
||||||
|
|
||||||
|
### Known issues
|
||||||
|
|
||||||
|
The findings from the test repo's trial 5 that are not fixed in 6.5.0
|
||||||
|
(decision 59), grouped by consequence.
|
||||||
|
|
||||||
|
**Too lax — can let through what should be stopped**
|
||||||
|
|
||||||
|
- **Core code outside the deep-review patterns is never deep-reviewed**
|
||||||
|
(trial-5 finding 9). `/trekreview` triage makes every file outside the
|
||||||
|
deep-review patterns (for example `bin/` and `tests/`) summary-only, so
|
||||||
|
code-correctness-reviewer gives no verdict on a CLI's core code;
|
||||||
|
brief-conformance-reviewer still reads the whole diff. Planned for the
|
||||||
|
fix round before v7 (decisions 57 and 58).
|
||||||
|
|
||||||
|
**Too strict — can stop what should go on**
|
||||||
|
|
||||||
|
- **A controller finding on a locked test line the plan gave has no way
|
||||||
|
forward in the fix ladder** (finding 2). Fix rounds may not change a locked
|
||||||
|
test (the one exception is a test not red at base), so rounds 1–3 repeat
|
||||||
|
the same diff before the step goes up to the plan.
|
||||||
|
- **The stop guard holds the session while it waits for the fix helper**
|
||||||
|
(finding 3). Sub-step F sets the test lock to `pending` before a fix round;
|
||||||
|
the `green` exception (operator decision 2026-10-08) covers only the wait
|
||||||
|
for the controller.
|
||||||
|
- **Phase 7.5 counts a re-approval of the plan as a stray commit**
|
||||||
|
(finding 5). After the upward path the plan is approved again, but 7.5
|
||||||
|
lists only approvals from the review loop as process commits; read
|
||||||
|
strictly, the run becomes partial and the merge into main stays closed.
|
||||||
|
- **Plan dedup misses one finding reported by both plan reviewers when they
|
||||||
|
cite it differently** (finding 6): an absolute and a relative path, another
|
||||||
|
rule key, or overlapping line ranges, so one major is counted twice.
|
||||||
|
- **`done-line.mjs --check --commit` with a short sha answers "no DONE line"**
|
||||||
|
(finding 10), exit 1, though the line holds the full sha; Sub-step G only
|
||||||
|
says `--commit {hash}`.
|
||||||
|
|
||||||
|
**Inaccurate — wrong or unclear, nothing stopped or let through**
|
||||||
|
|
||||||
|
- **Line numbers in review findings can be off** (finding 8). An engine
|
||||||
|
finding cited the line after the code; `FINDING_LINE_OUT_OF_RANGE` catches
|
||||||
|
only a line past the end of the file, and a patch line number written in a
|
||||||
|
reviewer's prose, or `:135` with no file name, is not caught.
|
||||||
|
- **With `--plugin-dir`, statistics go to the installed plugin's data
|
||||||
|
directory** (finding 11): `stats-append` and `event-emit` write to
|
||||||
|
`~/.claude/plugins/data/voyage-…`, so a development copy's statistics mix
|
||||||
|
with the installed version's.
|
||||||
|
- **`/trekplan` Phase 9 points the plan reviewers at their schema in
|
||||||
|
`agents/plan-critic.md` and `agents/scope-guardian.md`** (finding 12), a
|
||||||
|
path in Voyage outside the repo, in the same prompt that tells them to read
|
||||||
|
only inside it.
|
||||||
|
- **`/trekbrief`'s bounded budget is unclear** (finding 13): "8, the three
|
||||||
|
fixed ones included" does not say whether the Phase 3.5 tier question
|
||||||
|
counts, and Phase 3.5 puts the heuristic's proposal first as "(default)"
|
||||||
|
even when the operator's own rule is to go up in doubt.
|
||||||
|
- **`/security-review` diffs against the remote's default branch, not the
|
||||||
|
review's range** (finding 14), so it can review more files than the review.
|
||||||
|
In this release's review the opposite happened: the remote's `main` was
|
||||||
|
ahead of `v6.4.0`, so the built-in diff missed the decision-56 commits, and
|
||||||
|
its standard prompt was run over the whole range instead.
|
||||||
|
|
||||||
|
The release review of 6.5.0 (`/trekreview` over `v6.4.0..main`, WARN: 0
|
||||||
|
BLOCKER, 13 MAJOR, 1 MINOR) found the following. None is a BLOCKER, so none
|
||||||
|
opens a fix round before this release (decision 52). "Confirmed" means the
|
||||||
|
release session reproduced it; "read" means it was traced in the code and not
|
||||||
|
run.
|
||||||
|
|
||||||
|
**Too lax — can let through what should be stopped**
|
||||||
|
|
||||||
|
- **The park step can leave the earlier attempt's files in the tree and
|
||||||
|
still exit 0** (the trial-5 finding-4 fix, `lib/util/park-attempt-files.mjs`).
|
||||||
|
Confirmed: a file still registered with `git add --intent-to-add` (the
|
||||||
|
revert was refused by the guard or declined) is read as "tracked since the
|
||||||
|
attempt" and left in place; and an upward diff written under
|
||||||
|
`color.ui=always` has no header the tool can read, so nothing is parked.
|
||||||
|
Read: from a subdirectory the diff's paths are resolved against the wrong
|
||||||
|
directory, and the tool's two `git` calls never check their exit status.
|
||||||
|
- **On the opt-in `--workflow` path, the severity floor and the put-back read
|
||||||
|
one row per file, line and rule key** (`scripts/trekreview-armB.workflow.mjs`),
|
||||||
|
while the trial-5 finding-7 fix can now give two. Read: a finding can then be
|
||||||
|
floored against the wrong row, or take an engine row's one legal lowering,
|
||||||
|
and an engine row the coordinator did not return is not put back when its
|
||||||
|
sibling was; a WARN can become ALLOW. The default path is not affected.
|
||||||
|
- **Which row a finding joins can depend on the order the reviewers'
|
||||||
|
payloads are read** (`lib/review/coordinator-contract.mjs`). Read: the same
|
||||||
|
findings in another order can give other rows, severities and verdict.
|
||||||
|
- **The coordinator dropped four engine findings as refuted because their
|
||||||
|
line numbers lay past the end of the file.** The engine had cited positions
|
||||||
|
in the diff; only the citation was checked, never the claim, and two of the
|
||||||
|
four were confirmed true (the intent-to-add hole above and the brief
|
||||||
|
warning below). Same class as trial-5 finding 8.
|
||||||
|
- **No test holds a reviewer's Declined to Judge lines reaching
|
||||||
|
`review.md`.** The copy-through in `/trekreview` and the coordinator is
|
||||||
|
prose only; deleting it leaves the suite green.
|
||||||
|
|
||||||
|
**Too strict — can stop what should go on**
|
||||||
|
|
||||||
|
- **The brief validator's new `BRIEF_SC_NOT_RUNNABLE` warning fires on
|
||||||
|
prose** (the trial-5 finding-1 fix). Confirmed: any bare word in a later
|
||||||
|
backticked span counts as a command, so "`--verbose` prints the `login`
|
||||||
|
field" is told to put `login` first. A warning, never an error.
|
||||||
|
|
||||||
|
**Inaccurate — wrong or unclear, nothing stopped or let through**
|
||||||
|
|
||||||
|
- **A finding's `#k` id depends on arrival order** (`lib/parsers/finding-id.mjs`),
|
||||||
|
so the same finding can get another id in a second review; and a kept row
|
||||||
|
can take the plain id that a set-aside row on the same triplet already
|
||||||
|
carries. Read, not run.
|
||||||
|
- **`/trekplan` tells the session to load `voyage:writing-criteria` by name
|
||||||
|
but does not list the `Skill` tool in `allowed-tools`**, as `/trekbrief`
|
||||||
|
now does. Whether Claude Code treats that list as a limit is not verified.
|
||||||
|
- **The bake-off's arm A still merges each triplet to one row**
|
||||||
|
(`scripts/bakeoff-armA-merge.mjs`, not changed in this release), so a
|
||||||
|
fidelity measurement now shows an artificial gap; the grouping rule lives in
|
||||||
|
three copies.
|
||||||
|
- **A new eval scaffold has a non-ASCII character**
|
||||||
|
(`evals/skill-writing-criteria-effect/scaffold.sh:42`, an em dash).
|
||||||
|
|
||||||
## v6.4.0 — 2026-10-17 — plan_version 1.9, the trial-4 findings, session-clean tests, the converging critic loop
|
## v6.4.0 — 2026-10-17 — plan_version 1.9, the trial-4 findings, session-clean tests, the converging critic loop
|
||||||
|
|
||||||
A new plan version, 1.9, in which every path in a step's `Files:` and on its
|
A new plan version, 1.9, in which every path in a step's `Files:` and on its
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Contract-driven Claude Code pipeline: brief, research, plan, execute, review. Agent swarms, research triangulation, adversarial review, multi-session resumption.
|
Contract-driven Claude Code pipeline: brief, research, plan, execute, review. Agent swarms, research triangulation, adversarial review, multi-session resumption.
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
|
|
|
||||||
4
package-lock.json
generated
4
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "voyage",
|
"name": "voyage",
|
||||||
"version": "6.4.0",
|
"version": "6.5.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "voyage",
|
"name": "voyage",
|
||||||
"version": "6.4.0",
|
"version": "6.5.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "voyage",
|
"name": "voyage",
|
||||||
"version": "6.4.0",
|
"version": "6.5.0",
|
||||||
"private": true,
|
"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 (Fix/Change/Question), write comment, copy structured prompt, paste back, Claude revises the .md.",
|
"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 (Fix/Change/Question), write comment, copy structured prompt, paste back, Claude revises the .md.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue