docs(voyage): CLAUDE.md + README + CHANGELOG + annotation-quickstart + late doc-consistency pins — v4.2 Step 13

This commit is contained in:
Kjell Tore Guttormsen 2026-05-09 15:41:45 +02:00
commit de160d7da1
6 changed files with 296 additions and 9 deletions

View file

@ -563,3 +563,65 @@ test('tests/fixtures/annotation/annotation-example.md parses cleanly via parseAn
`parseAnchors failed on annotation-example.md fixture: ${JSON.stringify(result.errors || [])}`,
);
});
// --- v4.2 Step 13 — late doc-consistency pins (post-write of CLAUDE / READMEs / CHANGELOG / quickstart) ---
//
// These were deferred from Step 12 per plan-critic M1 ordering finding —
// Step 13 is where these files are written, so pins go here.
test('plugin README.md mentions /trekrevise in commands section', () => {
// Already covered for CLAUDE.md by the "all seven pipeline commands" test;
// this pin extends coverage to the plugin-level README.
const md = read('README.md');
assert.ok(
md.includes('/trekrevise'),
'plugin README.md must reference /trekrevise (added in v4.2 Step 13)',
);
});
test('marketplace root README.md mentions /trekrevise and v4.2.0', () => {
// ../../README.md is the marketplace landing — must surface v4.2 ship.
// Path traversal is allowed here per feedback_plugin_scope_strict
// (root README updates are explicitly in Step 13's scope).
const md = read('../../README.md');
assert.ok(
md.includes('/trekrevise') || md.includes('trekrevise'),
'marketplace root README.md must reference /trekrevise (v4.2)',
);
assert.ok(
md.includes('v4.2.0'),
'marketplace root README.md must reference voyage v4.2.0',
);
});
test('CHANGELOG.md has v4.2.0 entry', () => {
const cl = read('CHANGELOG.md');
assert.match(
cl,
/## v4\.2\.0\b/,
'CHANGELOG.md must include "## v4.2.0" entry per Keep-a-Changelog 1.1.0',
);
});
test('docs/annotation-quickstart.md exists with ≤7 numbered steps and example-fixture reference', () => {
// SC12 — operator-facing quickstart. The plan caps numbered steps at 7
// to keep cognitive load minimal; reference to the example fixture
// anchors the doc to a concrete artifact operators can replay.
const path = 'docs/annotation-quickstart.md';
assert.ok(existsSync(join(ROOT, path)), `${path} missing`);
const text = read(path);
// Numbered top-level steps: lines starting with "1." through "7." at
// line-start. Forbid 8.+ line-starts.
const numberedSteps = (text.match(/^[1-9]\./gm) || []);
for (const s of numberedSteps) {
const n = parseInt(s, 10);
assert.ok(
n >= 1 && n <= 7,
`${path} contains step ${s} — only 1.-7. permitted (single-screen quickstart)`,
);
}
assert.ok(
text.includes('tests/fixtures/annotation/annotation-example.md'),
`${path} must reference the canonical example fixture for hands-on verification`,
);
});