diff --git a/plugins/voyage/commands/trekexecute.md b/plugins/voyage/commands/trekexecute.md index e57422d..82ad05c 100644 --- a/plugins/voyage/commands/trekexecute.md +++ b/plugins/voyage/commands/trekexecute.md @@ -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