Fixed
-
Seat spawns no longer fail once a session's seat ledger passes 128 KiB. The
run manifest writer handed the whole seat projection and the event list to
jqas--argjsonvalues, one argv string each, which Linux caps at
MAX_ARG_STRLEN(128 KiB). A session's ledger
(runs/<session-id>/seats.jsonl) keeps every run's records, so after a few
reviews the projection outgrew the cap,jqfailed withE2BIG, every
transition rolled back with "Unable to persist planned execution contract",
and each run ended with "ALL Round 1 providers failed" until a new session
started (#1111). Both ledgers now reachjqthrough--slurpfile, so
manifest publication no longer depends on the ledger's size; the manifest
content is unchanged. -
Provider-level reasoning effort no longer collides with the codex
reasoningmodel slot inproviders.json. The v3.0 config Octopus writes
stores a model atproviders.codex.reasoning, used by thecodex-reasoning
agent and thesecurity: codex:reasoningroute, while role-based execution
profiles (#616) read a{default, policy}effort object from the same key.
On a v3.0 config that lookup failed silently; storing the object instead made
codex-reasoningand codex dispatch in the security phase fail with
"Invalid configured model". Provider-level effort now lives in
providers.<provider>.reasoning_effortand
providers.<provider>.reasoning_policy, andreasoningstays the model
slot. An effort object already stored atreasoningis still honored, and
the capability-map lookup now skips non-string values, so the object is
never taken for a model name. (#1114) -
/octo:autorequests for parallel work, such as "decompose the auth refactor
into parallel work packages", now hand off to/octo:parallel, the same as a
confirmed--workflow parallelchoice. Since 11.4.0 the automatic router
passed the request text to the tasks-file runner behind
orchestrate.sh parallel, so these requests stopped with
Tasks file not found: <request>and exit 1. (#1116) -
Commands and skills invoked with arguments no longer have their shell and awk
code rewritten by Claude Code's$Nargument substitution./octo:embrace lets do it allrendered the provider banner'scommand -v "$1"as
command -v "do", a shell keyword, so every CLI was reported available, and
flow-parallel's launch script resolveddirname "$0"to the first argument.
Shell parameters now use${N}, awk fields use$(N), and literal amounts
such as cost estimates use Claude Code's\$escape. A unit suite rejects any
unescaped$Nin command and skill bodies, the Cursor copies, and the shipped
skills. (#1101) -
/octo:embracedebate gates no longer pick their context from the shared
~/.claude-octopus/results/root. orchestrate.sh writes phase documents to
the session's results directory, sols -tover the root found no current
document and returned the newest match left by an earlier session. The
gates now pass no context file and let orchestrate.sh read its own session
directory, and the command uses the document paths the phases log. (#1101) -
Research about the local codebase can now pass evidence verification. A
claim may cite a workspace file aspath:LINE,path:START-ENDor
path:A,B. The citation counts when the file exists inside the workspace
root recorded in the run manifest and every cited line exists, and quotes and
numbers in the claim must then appear in that file. Before, every claim
without a web[source:S###]ID failed, so a probe that researched the
repository could never publish its synthesis. (#1102) -
URLs harvested from provider output no longer keep a JSON-escaped
\n,\r
or\t, or a trailing backslash. (#1102) -
Probe synthesis reads as much of each provider artifact as the synthesizer's
context budget allows (for exampleOCTOPUS_CLAUDE_CONTEXT_BUDGET). The
fixed limits of 24000 bytes per artifact and 120000 in total cut Codex
answers off after their prompt echo.OCTOPUS_PROBE_SYNTHESIS_FILE_CHARSand
OCTOPUS_PROBE_SYNTHESIS_CONTEXT_CHARSstill pin either limit. (#1102) -
orchestrate.sh --dry-run fan-outno longer reports every agent as a failed
spawn. A dry-run spawn prints the command it would run but no provider PID,
and fan-out still waited for one, so it logged a PID error and a failed spawn
for each agent and then an empty "All agents spawned" list. Dry-run fan-out
now prints one preview per agent and stops there; an agent whose command
cannot be rendered is still reported. (#1113)
Thanks to @pdrgds (#1101, #1102, #1113, #1114, #1116) and @vkchan (#1112) for these fixes.
Full Changelog: v11.9.4...v11.9.5