feat(voyage)!: rename stats filenames, settings keys, hook prefixes [skip-docs]

- lib/stats/event-emit.mjs: STATS_FILENAME -> trekexecute-stats.jsonl + comment
- hooks/scripts/post-bash-stats.mjs: stats target + comment -> trekexecute-stats.jsonl
- lib/stats/cache-analyzer.mjs: help-text + comment -> trekexecute-stats.jsonl
- tests/lib/stats-event-emit.test.mjs (lines 104, 117): fixture assertions
- settings.json: ultraplan/ultraresearch -> trekplan/trekresearch keys + statsFile values
- tests/lib/doc-consistency.test.mjs: allowlist (line 83) + accessor cfg.ultraplan?.* -> cfg.trekplan?.* (lines 91, 93) — atomic-pair, prevents vacuous undefined assertions
- scripts/q3-cache-prefix-experiment.mjs: STATS_JSONL hardcoded path -> voyage data dir + trekexecute filename
- hooks/scripts/pre-bash-executor.mjs (2 lines), pre-compact-flush.mjs (2 lines), pre-write-executor.mjs (1 line): [ultraplan]/[ultraplan-local] stderr prefix -> [voyage]
- commands + agents/review-orchestrator.md + CLAUDE.md: prose stats filename literals -> trek* equivalents

Atomic per session-spec: settings.json scope keys + doc-consistency.test.mjs
allowlist + property accessors committed together to prevent silent vacuous
undefined-equals-undefined assertions.

Part of voyage-rebrand session 2 (W3.7 / Step 9).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-05 14:49:03 +02:00
commit c407d3451d
18 changed files with 34 additions and 34 deletions

View file

@ -2,7 +2,7 @@
// post-bash-stats.mjs — PostToolUse hook (CC v2.1.97+)
//
// Captures duration_ms from PostToolUse payload for Bash tool calls and
// appends a structured stats line to ${CLAUDE_PLUGIN_DATA}/ultraexecute-stats.jsonl
// appends a structured stats line to ${CLAUDE_PLUGIN_DATA}/trekexecute-stats.jsonl
// when the running session is an ultraexecute session.
//
// Detection: only fires when the tool input matches the verify/checkpoint
@ -47,7 +47,7 @@ async function readStdin() {
success: payload.tool_response?.success !== false,
});
const target = join(dataDir, 'ultraexecute-stats.jsonl');
const target = join(dataDir, 'trekexecute-stats.jsonl');
try {
mkdirSync(dirname(target), { recursive: true });
} catch {}

View file

@ -220,7 +220,7 @@ const normalized = normalizeCommand(deobfuscated);
for (const rule of BLOCK_RULES) {
if (rule.pattern.test(normalized)) {
process.stderr.write(
`[ultraplan] BLOCKED: ${rule.name}\n` +
`[voyage] BLOCKED: ${rule.name}\n` +
` Command: ${normalized.slice(0, 200)}${normalized.length > 200 ? '...' : ''}\n` +
` ${rule.description}\n`
);
@ -238,7 +238,7 @@ for (const rule of WARN_RULES) {
if (warnings.length > 0) {
process.stderr.write(
`[ultraplan] SECURITY ADVISORY: Potentially risky command.\n` +
`[voyage] SECURITY ADVISORY: Potentially risky command.\n` +
` Command: ${normalized.slice(0, 200)}${normalized.length > 200 ? '...' : ''}\n` +
warnings.join('\n') + '\n'
);

View file

@ -170,7 +170,7 @@ for (const { projDir, progPath, planPath } of progressFiles) {
};
}
atomicWriteJson(progPath, progress);
process.stderr.write(`[ultraplan-local] pre-compact flush: ${progPath} -> current_step=${derivedStep}\n`);
process.stderr.write(`[voyage] pre-compact flush: ${progPath} -> current_step=${derivedStep}\n`);
mutationsMade++;
}
@ -178,7 +178,7 @@ for (const { projDir, progPath, planPath } of progressFiles) {
// progress.json mutation — the state file may exist for a session that
// hasn't advanced step yet, and we still want updated_at to track liveness.
if (refreshSessionState(projDir)) {
process.stderr.write(`[ultraplan-local] pre-compact refresh: ${projDir}/.session-state.local.json\n`);
process.stderr.write(`[voyage] pre-compact refresh: ${projDir}/.session-state.local.json\n`);
mutationsMade++;
}
}

View file

@ -113,7 +113,7 @@ const resolved = resolve(filePath);
for (const rule of BLOCK_RULES) {
if (rule.test(resolved)) {
process.stderr.write(
`[ultraplan] BLOCKED: ${rule.name}\n` +
`[voyage] BLOCKED: ${rule.name}\n` +
` Path: ${resolved}\n` +
` ${rule.description}\n`
);