feat(voyage): S13 — RELEASE v5.5.0 (framing 2.2 badge + NW1–NW3 + W2/W3 roll-up)

The coordinated release held since S6. Bumps 5.1.1 → 5.5.0 across plugin.json,
package.json, package-lock.json, README badge, and CHANGELOG (operator-confirmed
version; matches the codebase-wide v5.4/v5.5 milestone labels). Additive — no
breaking change for existing consumers; new brief requirements gate only on
briefs that declare brief_version 2.2.

Lands:
- brief_version 2.2 framing enforcement (framing enum + memory-alignment dim +
  obligatory TL;DR), held since S6 — badge now bumped
- Handover 1 PUBLIC CONTRACT formalization (the unreleased "v5.4")
- W2: Opus 4.8 baseline + native effort: on 8 agents + resolver model-gate fix
- W3: exec-form hooks (CC-14) + disallowed-tools on trekexecute (CC-11)
- NW1 reviewer-output schema contract; NW2 --workflow opt-in (bake-off POSITIVE);
  NW3 synthesis-agent dormant (declined per measurement)

CC 2.1.130→181 dispositions (docs/cc-upgrade-2.1.181-decision-matrix.md §S13):
- CC-08: GH#36071 (hooks in headless) CLOSED AS NOT PLANNED, not fixed →
  in-prompt safety preamble retained
- CC-29/31: verified clean / aligned, no code change
- CC-07/12/13: DEFER confirmed (recorded, no code)
- CLAUDE.md root warning: ACCEPTED BY DESIGN (universal across marketplace,
  advisory only; repo/maintainer context, not shipped consumer context)

TDD: version-consistency + v5.5.0-entry tests added first (RED→GREEN).
Tests 695 → 697 (695 pass / 2 skip / 0 fail). `claude plugin validate` passes
(one accepted advisory warning).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqBYc8Ltrk7LipyJmGxXiB
This commit is contained in:
Kjell Tore Guttormsen 2026-06-18 18:12:51 +02:00
commit 056720e7f3
7 changed files with 120 additions and 7 deletions

View file

@ -537,6 +537,24 @@ test('CHANGELOG.md retains v4.2.0 entry (history is not rewritten)', () => {
assert.match(cl, /## v4\.2\.0\b/, 'CHANGELOG.md must keep the historical "## v4.2.0" entry');
});
test('CHANGELOG.md has v5.5.0 entry (S13 coordinated release)', () => {
const cl = read('CHANGELOG.md');
assert.match(cl, /## v5\.5\.0\b/, 'CHANGELOG.md must include "## v5.5.0" entry — the coordinated release that lands brief_version 2.2 + NW1NW3');
});
test('version is consistent across plugin.json, package.json, README badge, and CHANGELOG top entry', () => {
// versjonssync invariant (CLAUDE.md rule): every file that names the plugin
// version must agree. Bumping one without the others is a release defect.
const pluginVersion = JSON.parse(read('.claude-plugin/plugin.json')).version;
const pkgVersion = JSON.parse(read('package.json')).version;
const badgeVersion = (read('README.md').match(/badge\/version-([\d.]+)-/) || [])[1];
const changelogTop = (read('CHANGELOG.md').match(/## v(\d+\.\d+\.\d+)\b/) || [])[1];
assert.ok(pluginVersion, 'plugin.json missing version');
assert.equal(pkgVersion, pluginVersion, `package.json version ${pkgVersion} != plugin.json ${pluginVersion}`);
assert.equal(badgeVersion, pluginVersion, `README badge ${badgeVersion} != plugin.json ${pluginVersion}`);
assert.equal(changelogTop, pluginVersion, `CHANGELOG top entry v${changelogTop} != plugin.json ${pluginVersion}`);
});
test('operational files no longer reference trekrevise (v5.0.0 removal)', () => {
// Templates, the touched command/orchestrator files, settings.json, and the
// handover-contracts doc must be fully scrubbed. CLAUDE.md / README.md are