Fixed
-
Decision support now includes the cost of doing nothing, sets criteria and
weights before scoring, and shows raw and weighted scores. Presentation
templates no longer recommend the first option before analysis. Uncertain
decisions can include an optional scenario stress test.
Fixes #1220.
#1247. -
Workflow skills can now persist phase state through
update_state, query
completed phases and import definition synthesis into the roadmap. History
notes cannot change a phase's recorded status. Initializing a project with
a missing state file preserves existing issues, lessons and phase plans.
Fixes #1169.
#1248. -
Configured fallback chains now honor
OCTO_ALLOWED_PROVIDERSand the
session or global provider allowlist.run_agent_sync_fallback_chain
dispatched its primary, preferred fallback and chain candidates without
checking the allowlist. WithOCTO_ALLOWED_PROVIDERS="codex claude", Tangle
decomposition still sent the prompt to its defaultagyresearcher seat
first. The chain now skips any candidate outside the allowlist and logs the
skip. If no candidate is allowed, it fails closed without dispatching.
octo_fallback_agent_availableapplies the same check, so
get_fallback_agentandocto_fallback_first_availableno longer return a
disallowed provider just because its CLI is installed.
#1244. -
Preflight checks the council roster that
OCTOPUS_COUNCIL_DEFAULT_PROVIDERS
pins. A Codex-led session pinsclaude,agy, but preflight ignored the list:
the static pass checked every non-Claude provider, the smoke test always
tried Codex, and nothing reported on the Claude seat. With a roster set,
orchestrate.sh preflightchecks exactly those seats, Claude included, names
the list it used, and fails naming any seat that is not ready. The smoke test
and/octo:preflightcover only the roster, and the smoke test fails when
any roster seat it tested fails. A pinned Codex seat with an expired OAuth
token fails the roster even when other seats are ready. A seat with no
provider detection, such asopenai-tools, is listed as not checked instead
of failing the roster or counting as degraded. The JSON gainsroster,roster_uncheckedandsandbox, and cached results are
keyed on the roster. Unset orautokeeps the previous behavior. -
Preflight readiness inside a macOS sandbox. The
/octo:preflightloop sent
stderr through2> >(cat >&2), a/dev/fdwrite that Codex and Claude Code
sandboxes deny, so every provider readcheck-failedthere. Inside such a
sandbox (CODEX_SANDBOXorSANDBOX_RUNTIME), a provider that is not ready
now carries a note that keychain logins, network access or files outside the
workspace can fail there, with the remedy to re-run preflight outside it.
#1229.