-
v6.5.0 Stable
released this
2026-10-18 18:46:04 +00:00 | 66 commits to main since this releaseWave 3 adds three skills, each one source for a discipline that was copied
or missing before:voyage:interviewingfor the brief's question round,
voyage:writing-criteriafor criteria that can run and go red, and
voyage:reviewing-adversariallyfor 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 bynpm testonmainat
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
f6e18a1restores 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:lineor 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
/trekreviewagents and scope-guardian, and named by/trekreviewat
spawn; it replaces the copied "Interaction Awareness" block. Each
reviewer's Declined to Judge lines now reachreview.md. - Skill
voyage:writing-criteria(order 7c). One source for how a
success criterion or aVerify:,Regression:orEnd-to-end:line is
written so the criteria runner can run it and it can go red; anything more
isbash 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)./trekbriefPhase 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 stayfiks/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.jsonandplugin.json
describe what the product shows. The Norwegian hollow-answer list in
approval-log.mjsand/trekbriefstays: 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: revertleaves a step's new files on
disk;--resumeafter a new plan now runs
lib/util/park-attempt-files.mjsbefore 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-reviewfindings 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 overrule_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)./trekreviewtriage makes every file outside the
deep-review patterns (for examplebin/andtests/) 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 topendingbefore a fix round;
thegreenexception (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 --commitwith 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_RANGEcatches
only a line past the end of the file, and a patch line number written in a
reviewer's prose, or:135with no file name, is not caught. - With
--plugin-dir, statistics go to the installed plugin's data
directory (finding 11):stats-appendandevent-emitwrite to
~/.claude/plugins/data/voyage-…, so a development copy's statistics mix
with the installed version's. /trekplanPhase 9 points the plan reviewers at their schema in
agents/plan-critic.mdandagents/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-reviewdiffs 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'smainwas
ahead ofv6.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 (
/trekreviewoverv6.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 withgit 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=alwayshas 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 twogitcalls never check their exit status. - On the opt-in
--workflowpath, 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/trekreviewand 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_RUNNABLEwarning fires on
prose (the trial-5 finding-1 fix). Confirmed: any bare word in a later
backticked span counts as a command, so "--verboseprints thelogin
field" is told to putloginfirst. A warning, never an error.
Inaccurate — wrong or unclear, nothing stopped or let through
- A finding's
#kid 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. /trekplantells the session to loadvoyage:writing-criteriaby name
but does not list theSkilltool inallowed-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).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
1 download
- two-way: skill reviewing-adversarially and its skills: lines (order 7d) — revert