Releases: Q00/ouroboros
v0.36.0
What's Changed
Features
ooo auto Pipeline
- Stream live phase trace in
ooo autoCLI (#713) - Block risky-fallback answers for regulated/destructive topics (#738)
- Surface
invoked_byin pipeline result and CLI summary (#704) - Add
AutoProgressEventcallback contract (#705) - Surface authoring vs run backend in
ooo auto status(#709) - Tag
seed_originin persisted auto state (#698) - Persist source-tagged auto answer log (#720)
- Allowlisted gateway provenance on
AutoPipelineState(#701) - Expose MCP progress metadata
- Feed repo facts into interview answers
- Expose unknown-run handoff guidance
Plugin & Backends
- Plugin manifest loader + vendored 0.1 schemas (#745)
- Capability registry for backends (#670)
- Hermes interview driver support (#671)
- Route
ooo autoto/ouroboros:autoskill via hook (#741)
Bug Fixes
- Harden Hermes background seed execution
- Limit Hermes quiet timeout opt-out to seed execution
- Cover synchronous seed cwd validation
- Truthful resume/retry semantics across surfaces (#739)
- Label authoring blockers with phase + backend (#711)
- Persist interview session id before first question generation (#723)
- Clear stale reconciliation metadata on attach; scope invalid reconcile errors (#718)
- Honor state interview-phase timeout in driver (#696)
- Preserve preferences across onboarding upgrades
Documentation
- Split PLUGIN LAYER -> Skills Registry vs UserLevel Programs (#744)
- UserLevel plugin layer RFC (#743)
- Clarify
--runtimesemantics and pin dispatch behavior (#722) - Clarify
--runtimephase semantics forooo auto(#708)
Testing & Maintenance
- End-to-end dispatch-to-Seed regression for
ooo auto(#700) - Pin codex/non-opencode authoring path stays in-process (#710)
- Guard packaged auto MCP dispatch
- Make parent cancellation assertion deterministic
- Format Hermes timeout tests
Full Changelog: v0.35.0...v0.36.0
What's Changed
- fix(welcome): preserve prefs across onboarding upgrades by @shaun0927 in #663
- test(watchdog): make parent cancellation assertion deterministic by @shaun0927 in #664
- test(codex): guard packaged auto MCP dispatch by @shaun0927 in #669
- feat(auto): feed repo facts into interview answers by @shaun0927 in #666
- feat(auto): expose MCP progress metadata by @shaun0927 in #667
- fix(auto): expose unknown run handoff guidance by @shaun0927 in #668
- fix(auto): honor state interview-phase timeout in driver by @shaun0927 in #696
- fix(auto): clear stale reconciliation metadata on attach and scope invalid reconcile errors by @shaun0927 in #718
- feat(auto): allowlisted gateway provenance on AutoPipelineState (#691) [1/3] by @shaun0927 in #701
- docs(auto): clarify --runtime phase semantics for ooo auto (#690) by @shaun0927 in #708
- test(auto): pin codex/non-opencode authoring path stays in-process (#690) by @shaun0927 in #710
- feat(auto): persist source-tagged auto answer log by @shaun0927 in #720
- docs(auto): clarify --runtime semantics and pin dispatch behavior by @shaun0927 in #722
- test(auto): end-to-end dispatch-to-Seed regression for ooo auto (#637) by @shaun0927 in #700
- feat(backends): add capability registry by @Q00 in #670
- feat(auto): tag seed_origin in persisted auto state by @shaun0927 in #698
- feat(auto): surface authoring vs run backend in ooo auto (#690) by @shaun0927 in #709
- feat(auto): add AutoProgressEvent callback contract by @shaun0927 in #705
- feat(auto): surface invoked_by in pipeline result and CLI summary (#691) [3/3] by @shaun0927 in #704
- feat(auto): stream live phase trace in ooo auto CLI by @shaun0927 in #713
- fix(auto,interview): persist interview session id before first question generation by @shaun0927 in #723
- fix(auto): label authoring blockers with phase + backend (#690) by @shaun0927 in #711
- feat(providers): support hermes interview driver by @Q00 in #671
- feat(auto): block risky-fallback answers for regulated/destructive topics (#640) by @shaun0927 in #738
- fix(auto): truthful resume/retry semantics across surfaces (#688) by @shaun0927 in #739
- feat(hook): route 'ooo auto' to /ouroboros:auto skill by @shaun0927 in #741
- docs(rfc): UserLevel plugin layer by @shaun0927 in #743
- docs(architecture): split PLUGIN LAYER → Skills Registry vs UserLevel Programs by @shaun0927 in #744
- fix(mcp): harden Hermes background seed execution by @Q00 in #755
- feat(plugin): manifest loader + vendored 0.1 schemas by @shaun0927 in #745
Full Changelog: v0.35.0...v0.36.0
v0.35.0
What's Changed in v0.35.0
Features
- Codex auth-plane diagnostics +
tool_startedcallback (#656) — surface nested Codex CLI auth failures (codex_authfailure category, structured non-secret context) and emit a newtool_startedcallback so external chat renderers (Hermes/Discord) can show in-flight nested MCP work before completion - MCP doctor: Codex OAuth readiness check (#657) — backend-aware
check_codex_oauth_authdistinguishes "Codex backend active butauth.jsonmissing" from "intentional API-key Codex profile" with actionable remediation, no longer treatingOPENAI_API_KEYas the primary signal - Render started tool events in debug interviews (#658) —
ouroboros init start --debugand PM debug surfaces now render the newtool_startedcallback alongside the existing completed-tool callback install.shpreserves user backend across upgrades (#654) — re-running install.sh /ouroboros setup --non-interactivenow respects the persistedorchestrator.runtime_backend; new--runtime/OUROBOROS_INSTALL_RUNTIME/--reconfigurehooks for explicit control
Bug Fixes
install.sh [all]extras drift (#660) —uvinstall path now mirrorspyproject.toml's full extras (added missingtui/textual,dashboard/streamlit+plotly+pandas); pin specifiers tightened to match pyproject<1.0.0upper bounds- Codex
codex_authclassifier too broad (#661) —_looks_like_codex_auth_failurenow requires both an auth phrase and a Codex/OpenAI-specific marker (api.openai.com,openai.com, orcodex); generic 401s from nested tools/MCP no longer get misrouted to the wrong remediation - MCP doctor accepts Codex API-key auth — doctor no longer fails when an intentional API-key Codex profile is in use without
auth.json - Auto resume after interview max rounds (#651) —
interview_drivernow in the recoverable-tool whitelist, so blocked auto sessions can resume cleanly when the rounds bound is raised; CLI bound override now honoured (raise-only invariant) .envdirectory paths no longer crash config import — config import handles directory paths at expected.envlocations
Tests
- Version-pin parity for
install.sh [all](#662) — verbatimpkg>=A,<Bspec match againstpyproject.tomlso future drift in pin ranges fails CI loudly - kiro permission-mode isolation (#653) — fixture forces
ConfigErrorso dev machines with custom~/.ouroboros/config.yamlno longer fail flaky on contract-default tests - Codex OAuth doctor tests formatting
Refactoring
- Auto goal facts preserved through Seed gating (#652) — explicit auto goal facts keep their identity across the gating boundary
Full Changelog: v0.34.0...v0.35.0
What's Changed
- fix(config): skip .env path when it's a directory by @bindon in #655
- test(kiro): isolate llm permission_mode from developer config by @Q00 in #653
- feat(install): preserve user backend across upgrades by @Q00 in #654
- Preserve explicit auto goal facts through Seed gating by @shaun0927 in #652
- Expose Codex auth-plane failures to chat bridges by @shaun0927 in #656
- Teach MCP doctor to verify Codex OAuth readiness by @shaun0927 in #657
- Render started tool events in debug interviews by @shaun0927 in #658
- fix(install): align uv [all] extras with pyproject contract by @Q00 in #660
- fix(codex): tighten codex_auth classifier; document tool_started callback by @Q00 in #661
- test(install): enforce version-pin parity between install.sh and pyproject by @Q00 in #662
New Contributors
Full Changelog: v0.34.0...v0.35.0
v0.34.0
What's Changed in v0.34.0
Features
- Copilot CLI runtime (#1f07a9c8) — first-class Copilot agent runtime
- Kiro runtime backend (#2fc7a3c8) — Kiro as a first-class runtime
- Stage enum + runtime_profile.stages config (#538) — slice 1 of #519
- Agent OS runtime_profile (Codex backend) (#505) — runtime profile foundation
- AgentProcess lifecycle projection (#628) — project lifecycle state from events
- Directive emission at StepAction sites (#477464ef) — slice 1 of #472
- Auto persisted session status (
ouroboros auto --status) — inspect blocked sessions
Bug Fixes
- Auto resume after interview max rounds (#651) —
interview_drivernow in recoverable whitelist; CLI bound override allowed when raised - Gemini CLI permission_mode (#634) — coerce
default→acceptEdits, fail fast on unknown modes - Hermes timeouts — reject non-finite values; make stream timeouts configurable
- Codex auto doctor (#648–#650) — respect supported MCP surfaces, prevent silent fallback
- Path containment for seed-encoded paths (#631) — security hardening
- Ralph project directory boundaries (#599) — keep mutations inside requested project
- Auto MCP tool hardfail (#644) — fail closed on unavailable dispatch
- Worker-profile preservation — preserve user keys in
[profiles.ouroboros-worker]
Refactoring
- Centralize Codex runtime_profile mapping (#70ae1379)
- Consolidate seed-path containment helper (#635)
- Tighten JobManager runner cleanup boundary (#633)
Documentation
- Simplified Chinese README translation (#71c49b52)
- AgentProcess lifecycle migration contract (#3203d06d)
- ControlContract / StepAction directive boundaries (#621, #623, #629)
Maintenance
- Ralph MCP loop ownership (#617, #618)
- AC verdict/execution outcome separation (#613)
- Numerous Ralph dispatch/lineage hardening commits
Full Changelog: v0.33.0...v0.34.0
What's Changed
- docs(readme): add Simplified Chinese translation by @whtis in #611
- Keep Ralph mutations inside the requested project directory by @shaun0927 in #599
- fix(interview): include initial user turn on first question by @shaun0927 in #591
- feat(orchestrator): Agent OS runtime_profile (Codex backend, supersedes #488) by @shaun0927 in #505
- fix(ralph): add --project-dir to specify explicit target for evolve_step by @fuleinist in #610
- feat(evolution): emit Directive at StepAction sites (slice 1 of #472) by @shaun0927 in #525
- feat(orchestrator): Stage enum + runtime_profile.stages config (slice 1 of #519) by @shaun0927 in #538
- test(core): add unit tests for project_paths module by @MyoungSoo7 in #612
- (feat/kiro-cli-adapter) Kiro CLI runtime backend by @BangShinChul in #606
- docs(ralph): clarify skill-driven loop contract by @shaun0927 in #616
- docs: clarify execution versus evaluation contract by @shaun0927 in #619
- fix: separate task completion from AC verdict summaries by @shaun0927 in #613
- feat(mcp): add a first-class Ralph loop job by @shaun0927 in #617
- docs(agent-process): define the lifecycle migration contract by @shaun0927 in #620
- control: document live StepAction directive boundary by @shaun0927 in #623
- control: define ControlContract schema boundary by @shaun0927 in #621
- docs: clarify legacy execution AC events by @shaun0927 in #626
- docs: describe execution monitoring as task progress by @shaun0927 in #625
- test(ralph): lock job cancellation contract by @shaun0927 in #627
- feat(agent-process): project lifecycle state from events by @shaun0927 in #628
- docs(control): map ControlContract follow-up lanes by @shaun0927 in #629
- control: preserve contract identity in lineage projection by @shaun0927 in #630
- fix(security): enforce path containment for seed-encoded paths by @Q00 in #631
- Clarify auto CLI command shape by @shaun0927 in #643
- refactor(mcp): tighten JobManager runner cleanup boundary by @Q00 in #633
- refactor(mcp): consolidate seed-path containment into a shared helper by @Q00 in #635
- fix(orchestrator): make HermesCliRuntime stream timeouts configurable by @Q00 in #636
- Expose persisted auto session status by @shaun0927 in #645
- Fail closed when auto MCP dispatch is unavailable by @shaun0927 in #644
- Ground auto runtime answers in supplied repo facts by @shaun0927 in #646
- fix(orchestrator): honour permission_mode in Gemini CLI runtime by @Q00 in #634
- reports: render worker execution as task completion by @shaun0927 in #624
- docs(ralph): route the skill through ouroboros_ralph by @shaun0927 in #618
- Fail closed for ooo auto in Codex rule surfaces by @shaun0927 in #648
- Add Codex doctor checks for ooo auto dispatch by @shaun0927 in #649
- Lock packaged ooo auto dispatch metadata by @shaun0927 in #650
- feat(copilot): live model discovery, setup wizard, full docs and tests by @rogerbarreto in #647
- fix(auto): unblock resume after interview hits max_rounds by @Q00 in #651
New Contributors
- @whtis made their first contribution in #611
- @fuleinist made their first contribution in #610
- @MyoungSoo7 made their first contribution in #612
- @BangShinChul made their first contribution in #606
- @rogerbarreto made their first contribution in #647
Full Changelog: v0.33.0...v0.34.0
v0.33.0
What's Changed
Features
ooo auto— Autonomous workflow mode: New surface for running Ouroboros autonomously via CLI and MCP. Includes bounded supervisor loop, recovery contracts, and working-directory validation- Codex task profiles: Apply per-task runtime profiles to Codex agent sessions (
feat(codex): apply profiles to agent runtime,feat(codex): add task profile defaults) - Usage-limit pause & replay: Sessions now gracefully pause on usage-limit failures and resume cleanly with replayed state
- Auto onboarding CLI/MCP surface:
ooo autoexposed through both CLI and MCP with normalized interview envelopes
Bug Fixes
fix(claude): force UTF-8 stdio for hook scripts (#602)fix(claude): resolve plugin hook scripts from plugin root (#601)fix(claude): fall back to python for hook executable (720161a)fix(claude): use partial content on max turns (#593)fix(mcp): serve resources from persisted state (#596)fix(evolution): replace fixed generation timeout with watchdog (56b4b2e)fix(evolution): rebuild Reflect/Wonder adapter on llm.backend config drift (#562, 9e5adb7)fix(codex): preserve explicit model overrides, distinguish profile fallback, sync defaultsfix(profiles): track explicit model intent, resolve empty model sentinels- Prevent interview prompts from seeing hidden Claude built-ins (#597)
- Keep seed extraction resilient to transient Claude CLI exits
- Stable watchdog progress timeout test; carry exact execution IDs on AC runtime events
- Resolve legacy parents in AC tree projections; fix recursive Sub-AC ownership identity
- Clear stale pause replay state on resume progress
Documentation
- Add Contract Ledger schema RFC (
docs(rfc)) - Mark evolution loop bridge limitation as resolved (
docs(mcp-bridge)) - Remove internal remediation report (#604)
- Document
ooo autoworkflow (CLI skill and MCP surface)
Maintenance
- Preserved prepositional auto flag mentions, quoted goal extensions, and literal controls across multiple merge commits
- Abort Codex setup on malformed config
- Persist absolute MCP auto working directories
- Route sentinel models and devil consensus profiles
Full Changelog: v0.32.0...v0.33.0
What's Changed
- fix(init): respect configured interview backend by @shaun0927 in #592
- fix(persistence): include sessions without started events by @shaun0927 in #590
- fix(evolution): rebuild Reflect adapter on llm.backend config drift (#562) by @minsing-jin in #563
- Replace fixed evolve-step timeout with progress-aware watchdog by @andrew-adamson in #569
- Use opaque execution node identities for recursive AC ownership by @andrew-adamson in #571
- docs(mcp-bridge): mark evolution loop bridge limitation as resolved (closes #475 partial) by @shaun0927 in #533
- Fix interview Claude tool envelope by @shaun0927 in #597
- fix(mcp): serve resources from persisted state by @Q00 in #596
- fix(claude): use partial content on max turns by @shaun0927 in #593
- docs(mcp): remove internal remediation report by @Q00 in #604
- fix(claude): resolve plugin hooks from plugin root by @Q00 in #601
- fix(claude): force UTF-8 stdio for hook scripts by @Q00 in #602
- fix(claude): fall back to python for hook executable by @Q00 in #605
- Add provider-neutral task profiles for Codex-backed Ouroboros work by @andrew-adamson in #570
- Pause sessions on usage limit failures by @andrew-adamson in #572
- docs(rfc): add Contract Ledger schema by @shaun0927 in #522
- Retry transient Claude CLI exits during seed extraction by @shaun0927 in #600
- Split ooo auto core quality primitives by @shaun0927 in #565
- Split ooo auto bounded supervisor loop by @shaun0927 in #566
- Split ooo auto CLI and MCP surface by @shaun0927 in #567
- Split ooo auto workflow documentation by @shaun0927 in #568
Full Changelog: v0.32.0...v0.33.0
v0.32.0
What's Changed
Agent OS Kernel (Phase 2 — M3 / M6)
This release lands two major milestones of the Phase 2 Agent OS RFC.
M3 — I/O Journal (#517, 4 slices)
Every LLM call and tool dispatch is now wrapped in a structured, privacy-aware journal. Adapters gain a four-line IOJournalRecorder context manager that owns call-ID allocation, timing, content hashing, and event emission — no boilerplate at each callsite.
- Foundation (
llm.call.*/tool.call.*event factories) IOJournalRecordercontext-manager API withrecord_llm_call()/record_tool_call()- Wired into
AnthropicAdapterandLiteLLMAdapter - Per-MCP-call context scope via
use_io_journal_recorder()ContextVar
M6 — AgentProcess cooperative lifecycle (#518, slice 1)
The five lifecycle verbs (spawn, pause, resume, cancel, replay) land as a unified interface for long-running workflows (ralph, evolve_step, execute_seed). Cooperative semantics: the work loop checks flags at deterministic checkpoints; in-flight LLM/tool calls finish naturally.
AgentProcessHandle— cooperative flags (should_cancel,wait_unpaused)- Every lifecycle transition emits a
control.directive.emittedjournal event replay()stub reserved for slice 3
AgentRuntimeContext + ControlBus + BridgeAwareMixin (#474, #475, #524)
The composition root is now threaded through all MCP handlers. EvolveStepHandler and LateralThinkHandler inherit BridgeAwareMixin; ControlBus on AgentRuntimeContext provides the reactive pub/sub surface for control directives.
Bug Fixes
- ControlBus shutdown: bounded drain with cancel-timeout; fail-closed on unquiesced tasks; owned shutdown lifecycle
- I/O Journal privacy: fail-closed for invalid preview mode; warn-once for invalid privacy enum
- Codex: surface stdout error events in
ProviderError; preserve MCP ownership during artifact refresh - OpenCode: fix setup config path resolution
- Brownfield: share store for
serve --db; failure-safe init; refcount ownership to prevent close-while-in-use; reject invalid scan roots LineageProjectornow foldscontrol.directive.emittedevents
Docs (RFC)
- MCP Mesh wire format and Coordinator handshake
- Disposable Memory process model and
artifact_ref - Agent OS kernel terminology locked
Agent OS Architecture (main)
┌──────────────────────────────────────────────────────────────────────┐
│ Ouroboros Agent OS (v0.32.0 / main) │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ MCP Tool Layer │ │
│ │ │ │
│ │ EvolveStepHandler LateralThinkHandler │ │
│ │ │ │ │ │
│ │ └──────── BridgeAwareMixin ┘ │ │
│ │ inject_runtime_context() │ │
│ └───────────────────────────┬────────────────────────────────────┘ │
│ │ AgentRuntimeContext │
│ ┌───────────────────────────▼────────────────────────────────────┐ │
│ │ Runtime Kernel │ │
│ │ │ │
│ │ ┌──────────────────────┐ ┌────────────────────────────┐ │ │
│ │ │ AgentProcess │ │ ControlBus │ │ │
│ │ │ spawn() │─────► subscribe(pred, handler) │ │ │
│ │ │ pause() / resume() │emit │ publish(event) │ │ │
│ │ │ cancel() │ │ unsubscribe(handle) │ │ │
│ │ │ replay() [slice 3] │ └────────────────────────────┘ │ │
│ │ └──────────┬───────────┘ ↑ control.directive │ │
│ │ │ cooperative flags │ .emitted │ │
│ │ ┌──────────▼────────────────────────────────────────────┐ │ │
│ │ │ AgentProcessHandle │ │ │
│ │ │ status │ should_cancel │ wait_unpaused │ process_id │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ I/O Journal Layer (M3) │ │
│ │ │ │
│ │ AnthropicAdapter ──┐ │ │
│ │ LiteLLMAdapter ───┼──► IOJournalRecorder (per MCP call) │ │
│ │ │ record_llm_call() │ │
│ │ use_io_journal_ │ record_tool_call() │ │
│ │ recorder() ctx ──┘ [ContextVar-scoped per task] │ │
│ └──────────────────────────────────────┬─────────────────────────┘ │
│ │ events │
│ ┌──────────────────────────────────────▼─────────────────────────┐ │
│ │ EventStore (Persistence) │ │
│ │ │ │
│ │ llm.call.requested llm.call.returned │ │
│ │ tool.call.started tool.call.returned │ │
│ │ control.directive.emitted ────► LineageProjector │ │
│ └────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
Full Changelog: v0.31.1...v0.32.0
What's Changed
- fix(mcp): isolate brownfield startup tests + serialize handler init (follow-up to #487) by @shaun0927 in #507
- docs(agent-os): lock kernel terminology by @Q00 in #557
- Fix OpenCode setup config path resolution by @shaun0927 in #540
- Preserve Codex MCP ownership during artifact refresh by @shaun0927 in #556
- fix(providers): surface codex stdout error events in ProviderError (#560) by @minsing-jin in #561
- docs(rfc): add MCP Mesh wire format and Coordinator handshake by @shaun0927 in #520
- docs(rfc): add Disposable Memory process model and artifact_ref by @shaun0927 in #521
- feat(events): fold control.directive.emitted onto LineageProjector by @shaun0927 in #523
- feat(orchestrator): introduce ControlBus on AgentRuntimeContext by @shaun0927 in #524
- feat(mcp): add inject_runtime_context helper to bridge_mixin (slice 1 of #474) by @shaun0927 in #526
- feat(mcp): accept AgentRuntimeContext in tool factories (slice 2 of #474) by @shaun0927 in #527
- feat(mcp): wire composition root through AgentRuntimeContext (slice 3 of #474) by @shaun0927 in #529
- feat(mcp): EvolveStepHandler inherits BridgeAwareMixin (slice 1 of #475) by @shaun0927 in #530
- feat(mcp): LateralThinkHandler inherits BridgeAwareMixin (slice 2 of #475) by @shaun0927 in #531
- feat(orchestrator): AgentProcess interface + cooperative lifecycle (M6 / slice 1 of #518) by @shaun0927 in #537
- feat(events): I/O Journal foundation (M3 / slice 1 of #517) by @shaun0927 in #532
- feat(events): IOJournalRecorder context manager (M3 / slice 2 of #517) by @shaun0927 in #534
- feat(providers): wire IOJournalRecorder into AnthropicAdapter (M3 / slice 3 of #517) by @shaun0927 in #535
- feat(providers): wire IOJournalRecorder into LiteLLMAdapter (M3 / slice 4 of #517) by @shaun0927 in #536
- fix(events): fail closed for invalid IO journal preview mode by @Q00 in #583
- fix(orchestrator): own ControlBus shutdown lifecycle by @Q00 in #584
- feat(events): scope IO journal recorders per MCP call by @Q00 in #585
Full Changelog: v0.31.1...v0.32.0
v0.31.1
What's Changed
- fix(parallel): honor configured worker caps by @andrew-adamson in #489
- feat(orchestrator): Gemini CLI runtime backend (follow-up to #312) by @shaun0927 in #504
- fix(router): preserve Windows literal path payloads through skill dispatch by @shaun0927 in #481
- fix(brownfield): scan repos with any origin remote by @andrew-adamson in #486
- fix(mcp): share brownfield store for serve --db by @andrew-adamson in #487
- fix(router): preserve quoted Windows literal path payloads by @shaun0927 in #510
- fix(interview): allow reopening seed-ready interviews to honor session challenges by @Q00 in #509
Full Changelog: v0.31.0...v0.31.1
v0.31.0
What's Changed
Features
- Render seed ontology in execution contract (d5d66a8)
Bug Fixes
- interview: restore per-dimension gap signal without closure pressure (35c0380)
- interview: remove closure pressure from question prompt (f283c06)
- router: normalize trailing line endings (40d3cae)
- router: preserve multiline payload whitespace (e8534e0)
- router: preserve parsed multiline prompts (bb7a456)
- router: dispatch multiline run payloads (bebda68)
- skills: rename resume skill (0bacf6d)
- execution: cap AC decomposition depth at 2 to prevent sub-AC explosion (63b290a)
- core: avoid duplicating acceptance criteria in execution prompt (c00aad5)
- core: keep seed contract prompt scoped to execution (5489f3f)
- core: include ontology field types in seed contract prompt (decc797)
Documentation
- List resume-session in command summary (2ce45c8)
Full Changelog: v0.30.0...v0.31.0
What's Changed
- feat(core): render seed ontology in execution contract by @Q00 in #495
- fix(skills): rename resume skill by @Q00 in #503
- fix(router): dispatch multiline run payloads by @Q00 in #501
- fix: harden interview closure prompt + router multiline dispatch by @Q00 in #506
Full Changelog: v0.30.0...v0.31.0
v0.30.0
What's Changed
Features
- CLI: add
ooo resumeto recover in-flight sessions after MCP disconnect (#433) - MCP: add streamable HTTP serve transport
- MCP: add compact monitoring relay views
- MCP: suggest lateral persona from stagnation
- Resilience: add in-run lateral recovery
- Events: add
control.directive.emittedevent factory - Core: introduce
DirectiveStrEnum for control-plane decisions
Bug Fixes
MCP
- clarify job wait execution progress note
- gate job wait changes on execution deltas
- surface subtask-only job wait progress
- align job wait progress signals
- surface live progress in job wait
- avoid stale execution monitor cache
- keep workflow progress in compact monitor
- count all Sub-AC events in job status
- preserve monitoring tool default views
- cancel linked job runner tasks (#464)
- preserve personas precedence
- reject blank lateral persona
- avoid excluded lateral personas
- clarify streamable HTTP serve contract
Interview
- surface ambiguity-gate
save_statefailures as hard errors - enforce streak gate + shortfall persistence on explicit
donepath - require summaries for completed long contexts
- preserve initial context overflow
- require summary before downstream prompts
- share prompt-safe initial context
- trim history to total prompt budget
- budget total prompt payload
- reject oversized initial contexts
- preserve full initial context overflow
- retain overflow context across rounds
- cap initial context prompt
PM / Bigbang
- require long context summary before PM seed
- exclude summary recovery from PM flow
- align long context recovery with base interview
- keep long-context interviews compatible
- cap recorded initial context summaries
Documentation
- position Ouroboros as Agent OS (README)
- clarify user config setup (MCP)
- make workflow seed examples valid (MCP)
- add onboarding workflow guides (MCP)
- tie control event factory to Phase 2 Event Journal framing
- tie Directive module to Phase 2 control-plane framing
Refactoring & Tests
- make
control.directive.emittedtarget-oriented per #476 review - restore monitoring coverage after rebase
- dedupe overlapping streak/shortfall regression tests
- format compact monitoring updates / prompt budget trim / claude adapter diagnostics test
Full Changelog: v0.29.2...v0.30.0
What's Changed
- feat(mcp): suggest lateral persona from stagnation by @Q00 in #465
- feat(cli): add 'ooo resume' to recover in-flight sessions after MCP disconnect by @shaun0927 in #433
- fix(interview): cap initial context prompt by @Q00 in #463
- docs(mcp): add onboarding workflow guides by @Q00 in #466
- feat(core): introduce Directive StrEnum for control-plane decisions by @shaun0927 in #477
- feat(events): add control.directive.emitted event factory by @Q00 in #492
- feat(mcp): add streamable HTTP serve transport by @andrew-adamson in #485
- fix(interview): enforce streak check on explicit 'done' path by @shaun0927 in #428
- fix(mcp): cancel linked job runner tasks by @Q00 in #464
- feat(mcp): add compact monitoring relay views by @Q00 in #483
- fix(mcp): clarify job wait execution progress note by @Q00 in #498
New Contributors
- @andrew-adamson made their first contribution in #485
Full Changelog: v0.29.2...v0.30.0
v0.29.2
What's Changed
Bug Fixes
- fix(mcp): protect startup stdin during shell env loading (#482)
- fix(interview): guard seed-ready closure (#484)
- fix(evaluate): replace language presets with AI-driven mechanical.toml (#454)
Full Changelog: v0.29.1...v0.29.2
What's Changed
- fix(evaluate): replace language presets with AI-driven mechanical.toml by @Q00 in #454
- fix(interview): guard seed-ready closure by @Q00 in #484
- fix(mcp): protect startup stdin during shell env loading by @justinpbarnett in #482
New Contributors
- @justinpbarnett made their first contribution in #482
Full Changelog: v0.29.1...v0.29.2
v0.29.1
What's Changed
Bug Fixes
- mcp: prevent
start_execute_seedUUID scope crash (#470) - mcp: avoid replaying failed tool calls
- mcp: avoid retrying timed-out tool calls
- mcp: reconnect stale client transports (#467)
- runtime: drop
initial_contexton interview resume so InterviewHandler continues the session - router:
extract_first_argumentreturns full argument payload instead of just the first token - tests: make OpenCode config tests platform-agnostic (#469)
Refactoring
- router: extract shared
oooskill-dispatch router; remove OpenClaw channel workflow (#459)
Maintenance
- tests: format MCP manager tests
Contributors
- fix(tests): make OpenCode config tests platform-agnostic by @Sathvik-1007 in #469
- refactor(router): extract shared ooo skill-dispatch router, remove OpenClaw channel workflow by @Q00 in #459
- fix(mcp): reconnect stale client transports by @Q00 in #467
- fix(mcp): prevent start execute seed uuid4 scope crash by @Q00 in #470
Full Changelog: v0.29.0...v0.29.1