Skip to content

Release Notes

cybersenses edited this page Nov 15, 2026 · 1 revision

Release Notes

Version history lives in CHANGELOG.md; this page is the short version. Current release: 0.4.0.

Unreleased

The "stop making claims you cannot back" set — five rounds of hardening around review, spend, telemetry and delegation.

Spend ceilings on every agent call

[models] max_cost_usd and max_total_tokens are checked by pydantic-ai before the next request, so a call is refused instead of its cost being narrated afterwards. They reach every agent.run() in a run — main loop, fix loop, claims retry, evaluator, planning reviewer, summariser, memory extraction, claims auditor, vision inspector — through one definition, with a guard test that fails if any seam stops passing its limits. Read them as per-call ceilings; the session figure stays the usage ledger behind --budget. Unset by default. max_cost_usd needs a priced model; max_total_tokens always holds. A malformed value fails at load rather than silently becoming no cap.

Per-function delegation spans

Every delegation used to be name='delegate', so a designer run and a coder run on different models were indistinguishable in any trace. Spans are now delegate.<function> and DELEGATION_COMPLETED reports the same value, so trace and event cannot drift apart.

OpenLIT as the documented trace viewer

Run as a self-hosted OTLP receiver — no SDK, no new dependency, one config value — because openlit.init() competes with logfire.instrument_pydantic_ai() for the same hooks and the single global tracer provider. Its cost dashboard is documented as subordinate to the usage ledger. The export path gained its first end-to-end test: a span is asserted to reach a real collector at /v1/traces.

Delegation spends the session's budget

A delegated run is handed the parent's usage accumulator, so its requests and tokens count against the run that caused them instead of vanishing. Its cap is the delegation slice (used + [delegation].max_requests, bounded by the session limit), not a fresh allowance per delegation. The operator kill switch is observed at every tool boundary inside a delegation, not only between the parent's calls.

Tool output bounded at the source

An oversized tool return is truncated where it is produced (head+tail) instead of arriving whole. Our own tools already self-cap; this bounds what MCP servers send.

Local OTLP tracing

New [telemetry] table (enabled, otlp_endpoint, service_name). Traces go to a local collector only — no token, nothing off the machine — and every agent carries a name, so a failed run names the agent and request instead of requiring inference. Off by default; a missing collector never fails a run.

Pre-push review gate

git_push refuses unless a recorded two-axis review covers the exact diff being published. The record is content-addressed, so amending or rebasing without changing the diff keeps it valid and fixing a finding voids it. git push through the shell is refused for the same reason, and the file tools refuse to touch the git directory, so a record cannot be fabricated. Post-push review stays as a failsafe. See Review Gate.

Per-request context compaction

A mechanical, model-free guard runs before every model request and compacts when the token estimate crosses the window threshold, instead of only at run start. A run can no longer grow until the provider rejects it with a context-length 400. The guard is fail-open: a guard error degrades to sending the request.

Prompt caching for every agent

One resolution point turns config into pydantic-ai capabilities for the main loop, its retries, and the one-shot graders — not a single call site. A test walks the AST for Agent(...) calls without capabilities, because a missing capability is invisible at runtime.

0.4.0

The current release. Highlights from its cycle: the planning surface (PRDs, tech designs, roadmap, tickets with per-step evidence), memory and the solved-problem bank, checkpoints and rewind, artifacts, the dockable workspace, MCP integration, skills and directives, project scaffolding and the codegraph index. See CHANGELOG.md for the itemised list.

Earlier releases

  • 0.3.0 (2026-09-09) — modernization completion: the trace viewer tab, run_coverage, find_unused_exports (knip) and find_dead_code (vulture + tree-sitter) tools, on-demand code review from the Diff tab, design tokens as Tailwind @theme aliases, the typed api.ts layer, and memory extraction wired into the worker.
  • 0.2.0 (2026-09-08) — the uber-agent layer: directives injected into every run, the SKILL.md registry with progressive disclosure, planning mode (propose → approve → tracked steps → review), the MCP client, semantic search, the Budget Cap, JSONL run traces, and the login-gated web UI.

Each entry in the changelog states what changed and, where it matters, what the honest limit of the change is. That is deliberate: a release note that overclaims is a bug report you filed against yourself.

Clone this wiki locally