fix(voyage): escape ! prefix in trekexecute Phase 8 doc-block

Slash-command-parseren matcher !`...` selv inne i ```bash markdown-fences,
som gjorde at Phase 8 NEXT-SESSION-PROMPT-template eksekverte ved skill-load
med literale {project_dir}/{next_session_brief_path}/{next_session_label}/
{status}-strenger som argv. Det ga ENOENT på .session-state.local.json.tmp
og blokkerte hele /trekexecute skill-loadet.

Fjern !`...`-wrapperen og merk blokken eksplisitt som runtime-template.
Pattern matcher nå konvensjonen brukt andre steder i samme fil
(linje 202-208) der ```bash brukes for orkestrator-instruksjon uten
auto-eksekvering.

Wave 0 av v4.1-execute — pre-requisite for å låse opp /trekexecute
skill-invokasjon mot .claude/projects/2026-05-08-voyage-v4.1-modellprofiler/

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-09 09:17:44 +02:00
commit ce9b06dd16

View file

@ -1358,7 +1358,7 @@ producer drift between project-dir and plugin-root candidates. Use a single
ESM inline block so state-file + prompt-file writes succeed or fail together:
```bash
!`node --input-type=module -e "
node --input-type=module -e "
import path from 'node:path';
import { writeFileSync } from 'node:fs';
import { atomicWriteJson } from './lib/util/atomic-write.mjs';
@ -1368,9 +1368,17 @@ const stateObj = { schema_version: 1, project: dir, next_session_brief_path: bri
atomicWriteJson(path.join(dir, '.session-state.local.json'), stateObj);
const promptBody = '---\\nproduced_by: trekexecute\\nproduced_at: ' + now + '\\nproject: ' + dir + '\\nstatus: ' + status + '\\n---\\n\\n# ' + label + '\\n\\nResume via /trekcontinue.\\n';
writeFileSync(path.join(dir, 'NEXT-SESSION-PROMPT.local.md'), promptBody);
" '{project_dir}' '{next_session_brief_path}' '{next_session_label}' '{status}'`
" '{project_dir}' '{next_session_brief_path}' '{next_session_label}' '{status}'
```
> Note: this block is a runtime template for Phase 8 orchestration; the
> `{project_dir}`/`{next_session_brief_path}`/`{next_session_label}`/`{status}`
> placeholders are filled in by the orchestrator at execution time. The
> leading `!` prefix that previously wrapped this block was removed because
> Claude Code's slash-command parser auto-executes `!`...` patterns at
> skill-load time, even inside bash code fences — see
> `docs/HANDOVER-CONTRACTS.md` § Handover 7 Lifecycle for context.
This single insertion covers every multi-session execution path that
converges here (Path A: successful single session, Path B: `--session N`
explicit, Path C: compaction-survival recovery, Path D: standard plan