• v6.0.0 7439dac927

    v6.0.0 Stable

    ktg released this 2026-10-02 17:54:22 +00:00 | 239 commits to main since this release

    Signed by ktg
    SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q

    Operator decision 2026-09-27: nothing Voyage ships starts a Claude Code
    session. Work that needs another session becomes an order plus a starter
    line that the user runs in a session they open themselves; parallel work
    inside one session uses subagents. This is a breaking change for anyone who
    relied on Voyage launching sessions.

    Changed (breaking)

    • /trekexecute multi-session path (Phase 2.6) no longer launches child
      sessions and no longer finishes in one call. It prepares one wave at a
      time: a worktree per session, one session order per session
      (.claude/trekplan-sessions/{slug}/orders/, written by the new
      lib/util/session-orders.mjs) with a /trekexecute --session N <plan>
      starter, and stops. Running the same command again reads each session's
      progress file, merges the wave sequentially and prepares the next one. A
      plan with W waves takes W + 1 parent runs plus one session per order.
      New Hard rule 21: never start Claude Code.
    • Sessions now run under the user's own permission mode and tool set: the
      per-session tool allowlist and the permission-bypass mode are gone, and
      brief.md / architecture/overview.md are no longer injected as an
      appended system prompt.
    • Phase 7.6 recovery writes a bounded recovery order for a session you open,
      and the run stops as partial; nothing dispatches it automatically.
    • /trekplan --decompose (and its alias --export headless): the
      session-decomposer writes orders.md instead of a launch.sh, and the
      "launch" reply is gone.
    • /trekresearch --engine deep-research: the pre-gate no longer runs the
      Claude Code binary to read its version; the post-hoc check decides. The
      version-below-floor reason token is gone (that case now reports
      no-cited-report).
    • No {session-dir}/logs/session-N.log is written any more; progress files
      are the source of truth, and each wave's progress files are archived to
      orders/wave-W-session-N.progress.json before its worktrees are removed.
    • --dry-run no longer prints a billing line.

    Removed

    • The ANTHROPIC_API_KEY billing check, the hooks-fire version precheck, the
      headless safety preamble and the per-child tool, turn and budget flags —
      they existed only for launched children. The TREKEXECUTE_MAX_TURNS and
      TREKEXECUTE_MAX_BUDGET_USD environment variables are ignored.
    • templates/headless-launch-template.md and
      scripts/q3-cache-prefix-experiment.mjs (a finished experiment that
      started the binary; its results stay in docs/).
    • README: the billing-safety and headless MCP-tuning sections, and the
      fourth security layer (scoped per-child tool access), which went with the
      launched children.

    Fixed

    • Every VOYAGE_ROOT resolution in /trekexecute (multi-session Step 0 and
      plan verification), /trekreview and /trekresearch now finds the
      installed plugin: the literal ${CLAUDE_PLUGIN_ROOT} that Claude Code
      substitutes, else the highest installed version in the plugin cache. Before,
      these blocks always exited 2.
    • The multi-session path never force-deletes. Worktrees are removed only
      when git agrees they are clean and session branches are deleted only once
      merged; anything git refuses is kept and listed in the report with what to
      do. Before, a failed session, a merge conflict or a refused merge deleted
      every trek/{slug}/* branch of the wave, finished work included.
    • Collecting a wave never tears down a session that is still running (an
      unknown status counts as running); it stops when the main checkout has
      uncommitted changes or has switched branch, and tells a refused merge from
      a real conflict. The parent run must start in the main checkout, never in a
      session's worktree or a subdirectory's view of it.
    • A merged-waves record, bound to the plan's path and content hash, keeps a
      re-run from preparing an already merged wave again; a different plan or an
      edited plan is refused with the way out named. The record is cleared only
      when the final merge is confirmed.

    Added

    • tests/lib/no-claude-code-launch.test.mjs: fails when any tracked file
      outside a reasoned, exact-count exemption list carries a way to start
      Claude Code; proven on a known-positive fixture for every pattern. The one
      operator-run exception is the fixed test set (docs/proevesett.md).
    • tests/lib/session-orders.test.mjs: runs the order writer on a fixture
      plan and proves the orders land, statuses classify, progress is archived,
      merged waves are remembered, and nothing is started.
    • tests/lib/plugin-root-resolution.test.mjs: runs every VOYAGE_ROOT
      block, substituted and unsubstituted.
    Downloads