v0.42.0
v0.42.0 — A new kernel, frugal-or-frontier, and Claude without the SDK
v0.40 closed the loop, v0.41 let it run anywhere and trust what it ships. v0.42
adds another runtime kernel, lets you choose how hard it thinks — frugal or
frontier, per stage — and runs Claude with no SDK at all. Much of this release's
frugality and usability work grew out of @deepakdgupta1's direction-check
discussions; the credit, and the mapping, are at the bottom.
The headline
- A new runtime kernel — GJC. gajae-code (
gjc) joins Pi, Claude, Codex,
Gemini, OpenCode, Goose, and Copilot as a swappable runtime. Ouroboros stays the
workflow engine; GJC is just another kernel you can drop under it. Select it with
orchestrator.runtime_backend: gjc(orouroboros config), andsetup --runtime gjc
installs the ooo bridge soooo …commands route back through Ouroboros. - Frugal or frontier — your call. A new reasoning-effort dial
(low/medium/high) makes effort, not model family, the primary cost
lever — dial it up where it counts, down where it doesn't. The dead
complexity→tier router is gone, and the model floor for structured-extraction
tasks dropped from Opus to Sonnet. Pick the agent and model per stage in the new
guidedouroboros configGUI, with an effective-config view that shows what
actually runs. - Claude without the SDK. A new ourocode ACP backend drives
ourocode as a subprocess — no Anthropic SDK,
no API key, just your Claude Pro/Max sign-in — for the in-process completion
path (interview / seed / qa / evaluate). If you've wanted Ouroboros on your
Claude subscription instead of an API key, this is the path.
ouroboros config — set the runtime and model per stage (interview → execute →
evaluate → reflect), or one-click a Frugal / Balanced / Frontier preset for
every stage. The effective-config view shows what actually runs, with inheritance
and env-override sources. (Note: GJC is selectable as a stage agent right here —
Interview is running on gjc above.)
What's Changed
Runtimes & Agent OS
- feat(runtime): GJC (gajae-code) runtime — foundation + RPC envelope protocol,
GjcRuntime,GjcLLMAdapter,setup --runtime gjc+ ooo bridge, docs (#1379–#1383); allow GJC backend validation (#1439) - feat(providers): SDK-free Claude via the ourocode ACP backend (#1438)
- feat(config): guided settings GUI + effective-config view — pick agent & model per stage (#1416)
- fix(cli): pi backend switching and quiet dispatch logs (#1362)
Frugality & the effort dial
- feat(providers): reasoning-effort dial — effort-first investment lever (#1435)
- chore(frugality): remove dead tier-router organs + effort-first model defaults (#1434)
- fix(frugality): stop Fable-5-style seed AC over-atomization (#1432)
Reliability — jobs, processes & WAL
- feat(mcp): reconcile zombie jobs whose owning process has died (#1373)
- fix(#1419): terminal jobs leak codex worker + companion shell processes (#1425)
- fix(mcp): stop orphaned servers and reclaim WAL; speed up session list (#1359)
- fix(mcp): detect client death behind uvx, bound shutdown, drain jobs before store close (#1407)
- fix(mcp): keep terminal job results after handle ttl (#1433); mark run results as unevaluated (#1437)
- fix(#1422): honor worktrees for dirty delegated execution (#1428); honor Codex stream timeout overrides (#1387)
Cleanup & refactoring
- chore(cleanup): remove dead execution/secondary/routing packages — −14k LOC (#1410)
- refactor(providers): consolidate cli-stream/child-env/kiro duplication, fix hermes unbounded buffer (#1409)
- refactor(mcp): consolidate tool-layer duplication, fix durable cancel + lost audit rows (#1408)
Config, CLI & orchestrator
- feat(cli): read-only job event polling (#1436); meaningful
job_waitlong-poll mode (#1426) - fix(config): make web port zero choose a free port (#1440); accept prose exit-condition lists (#1431)
- feat(orchestrator): pace non-Claude delivery within a rate budget (#1372); plan delivery fan-out within concurrency limits (#1361); capability contracts — map skills to MCP tools, subagent orchestration, code-investigation + lateral persona metadata (#1365–#1371)
- fix(orchestrator): tighten usage-limit pause classification (#1364); preserve typed error metadata on hermes failures (#1360)
Docs & maintenance
- docs(rfc): frugality control loop, spend estimator, spend actuator (effort dial), atomicity & decomposition, configuration coherence, journey transparency (#1392, #1402–#1406)
- chore(security): refresh & exact-pin deps, add Dependabot, harden release.yml (#1347); dependency & GitHub Actions bumps (#1348–#1358)
Shaped in the open
The frugality and usability arc of this release started as direction-check
discussions from @deepakdgupta1 — failure analysis and acceptance properties
posted before any code — and landed as the RFC series and the work above. Thank
you.
- Theme: token frugality — waste-only, goal-subordinate, learned guardrails → RFC #1403
- Investment case: the complexity→tier mapping behind frugality → RFC #1404 / #1405 — which concluded the answer was not a tier map but an effort dial (#1435)
- Investment case: atomicity & AC decomposition reliability → RFC #1406, and the over-atomization fix (#1432)
- Theme: making Ouroboros more usable — transparency → RFC #1402, journey transparency (#1392), and the
ouroboros configGUI (#1416)
Welcome also to first-time contributors @Yeachan-Heo (the entire GJC runtime
stack), @sergiobuilds, and @deepakdgupta1.
What's Changed
- chore(security): refresh & exact-pin deps, add Dependabot, harden release.yml by @Q00 in #1347
- chore(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #1348
- chore(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #1350
- chore(deps): bump astral-sh/setup-uv from 4 to 8.1.0 by @dependabot[bot] in #1351
- chore(deps): bump actions/checkout from 4 to 6.0.2 by @dependabot[bot] in #1352
- chore(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #1353
- chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #1354
- chore(deps-dev): bump types-pyyaml from 6.0.12.20250915 to 6.0.12.20260518 by @dependabot[bot] in #1356
- chore(deps): bump rich from 14.3.3 to 15.0.0 by @dependabot[bot] in #1357
- chore(deps-dev): bump mypy from 1.19.1 to 2.1.0 by @dependabot[bot] in #1358
- fix(orchestrator): preserve typed error metadata on hermes failures (usage-limit pause regression) by @deepakdgupta1 in #1360
- feat(orchestrator): plan delivery fan-out within backend concurrency limits by @deepakdgupta1 in #1361
- fix(mcp): stop orphaned servers and reclaim WAL; speed up session list by @Q00 in #1359
- fix(cli): add pi backend switching and quiet dispatch logs by @Q00 in #1362
- fix(orchestrator): tighten usage-limit pause classification by @Q00 in #1364
- feat(orchestrator): [stack 1/7] map skills to MCP tools by @Q00 in #1365
- feat(backends): [stack 2/7] describe subagent orchestration support by @Q00 in #1366
- fix(evaluation): [stack 3/7] preserve mechanical diagnostic changes by @Q00 in #1367
- feat(orchestrator): [stack 4/7] add owned tool capability contracts by @Q00 in #1368
- feat(mcp): [stack 5/7] emit code-investigation metadata by @Q00 in #1369
- feat(mcp): [stack 6/7] consume lateral persona metadata by @Q00 in #1370
- test(orchestrator): [stack 7/7] cover capability review follow-ups by @Q00 in #1371
- chore(deps): bump codecov/codecov-action from 3 to 6.0.1 by @dependabot[bot] in #1349
- chore(deps): bump the python-minor-patch group across 1 directory with 10 updates by @dependabot[bot] in #1355
- feat(orchestrator): pace non-Claude delivery within a configurable rate budget by @deepakdgupta1 in #1372
- feat(mcp): reconcile zombie jobs whose owning process has died by @deepakdgupta1 in #1373
- feat(orchestrator): surface non-native execution-parameter handling (#1374 rebased) by @Q00 in #1393
- docs(rfc): journey transparency — state breadcrumb + TUI surfacing by @Q00 in #1392
- docs(rfc): configuration coherence — surface config, make reload honest (#1376) by @deepakdgupta1 in #1402
- docs(rfc): token frugality as one control loop — attribution + advisory guardrails (#1377) by @deepakdgupta1 in #1403
- docs(rfc): the spend estimator — difficulty + stakes from measured inputs (#1384) by @deepakdgupta1 in #1404
- docs(rfc): the spend actuator — a reasoning-effort dial, not model switching (#1384) by @deepakdgupta1 in #1405
- docs(rfc): atomicity & decomposition reliability, re-grounded on the live executor (#1385) by @deepakdgupta1 in #1406
- fix(mcp): detect client death behind uvx, bound shutdown, drain jobs before store close by @Q00 in #1407
- refactor(mcp): consolidate tool-layer duplication, fix durable cancel + lost audit rows by @Q00 in #1408
- chore(cleanup): remove dead execution/secondary/routing packages and orchestration scaffolding (−14k LOC) by @Q00 in #1410
- refactor(providers): consolidate cli-stream/child-env/kiro duplication, fix hermes unbounded buffer by @Q00 in #1409
- fix(orchestrator): honor Codex stream timeout overrides by @sergiobuilds in #1387
- feat(runtime): [stack 1/5] gjc foundation (RPC protocol + config/CLI registration) by @Yeachan-Heo in #1379
- feat(runtime): [stack 2/5] GjcRuntime by @Yeachan-Heo in #1380
- feat(runtime): [stack 3/5] GjcLLMAdapter by @Yeachan-Heo in #1381
- feat(runtime): [stack 4/5] setup --runtime gjc + ooo bridge by @Yeachan-Heo in #1382
- feat(runtime): [stack 5/5] docs by @Yeachan-Heo in #1383
- feat(config): add guided settings GUI and effective config view by @Q00 in #1416
- fix(#1419): Terminal jobs leak codex worker + companion shell processes (no reap after
completed) by @ouroboros-agent[bot] in #1425 - fix(#1423): add meaningful job_wait long-poll mode by @ouroboros-agent[bot] in #1426
- fix(#1422): honor worktrees for dirty delegated execution by @ouroboros-agent[bot] in #1428
- fix(seed): accept prose exit condition lists by @Q00 in #1431
- fix(config): allow GJC backend validation by @Q00 in #1439
- fix(config): make web port zero choose free port by @Q00 in #1440
- fix(frugality): stop Fable-5-style seed AC over-atomization (seed + executor) by @Q00 in #1432
- fix(mcp): keep terminal job results after handle ttl by @Q00 in #1433
- chore(frugality): remove dead organs + effort-first model defaults (#1399) by @Q00 in #1434
- feat(providers): reasoning-effort dial (effort-first investment lever) by @Q00 in #1435
- fix(mcp): mark run results as unevaluated by @Q00 in #1437
- feat(providers): SDK-free Claude via ourocode ACP backend by @Q00 in #1438
- feat(cli): add read-only job event polling by @Q00 in #1436
- docs(mcp): align durable job result contract by @shaun0927 in #1455
New Contributors
- @dependabot[bot] made their first contribution in #1348
- @deepakdgupta1 made their first contribution in #1360
- @sergiobuilds made their first contribution in #1387
- @Yeachan-Heo made their first contribution in #1379
Full Changelog: v0.41.0...v0.42.0

