Skip to content

v0.55.0

Choose a tag to compare

@underminedsk underminedsk released this 05 Aug 01:11
· 81 commits to main since this release
Immutable release. Only release title and notes can be modified.
284ad4d

Minor release: the dashboard gains a real per-agent page, and the review-remediation sweep lands its first three Lane A phases — session lifecycle honesty, persistence atomicity, and agent-pack routes that had been failing silently.

Added

The single-agent view (#948, MOD-261). The machine-scoped dashboard becomes a real per-agent page. Behind it is a unified runs read model: a monitor firing, a chat, and a workflow run are one list of runs rather than three unrelated event sprays — which is also why a monitor now records one run per firing instead of a spray of events. Agent state becomes a tri-state (running / stalled / stopped) rather than a bare pid check, so "the process exists" stops being mistaken for "the agent is working", and the page can surface a stalled workflow run and offer to resume it.

New per-agent nouns under /api/agents/{name}: GET runs, overview, health, sessions, details, spend, and POST workflows/runs/{run_id}/resume. The overview also reports what the script cache did not spend. Integrates #906, #912, #913, #914, #915, #916, #919 and the #941 restyle.

Fixed

  • A session could not be stopped while its startup turn was still in flight (#949)stop() silently no-opped and the thread plus its brain subprocess kept running, leaking a live, token-burning agent for every timed-out phase while reporting "session failed to start". Setting an event cannot interrupt a turn parked in await client.receive_response(), so _run is now a cancellable task.
  • start() waited out the full timeout after the session thread had already crashed (#949) — a launch that failed in milliseconds measured 30.006s, and launch paths pass timeouts up to 3600s.
  • A supervised agent's terminal failure was never persisted (#949) — the except asyncio.TimeoutError handler was unreachable, so TERMINAL_FAILED never landed and the reconciler had nothing to re-emit.
  • Every durable writer now shares one atomic-write helper (#951) — the pattern had been re-implemented in six places while a comparable set of writers used a bare write_text. Because every loader treats unparseable state as empty, the cost is never "lose one field": a torn monitor state file re-fires every monitor, a torn spend file zeroes the runaway-loop backstop's window, a torn setup.json discards the whole wizard session, and a torn config.toml loses the operator's foreign codex keys.
  • Agent-pack routes that silently matched nothing (#957)eng-team's github.issues.assigned matches a type no adapter emits, so issue-lifecycle never fired on assignment (this is why issue pickup has needed a Slack directive); the dogfood workflow's issues_count > 0 used an unsupported operator and fell through to a truthy check, closing a 3-issue audit as having passed review. Validation now catches this class via a per-source event-type table that fails open on unknown adapters. eng-team 1.5.2 → 1.5.3, dogfood-content-review 1.2.1 → 1.2.2.
  • A raise from _make_session escaped the workflow orchestrator's terminal-honesty handler (#957) — the registry entry stuck at running with no session.failed or workflow.failed.
  • The Worker deploy smoke gated on a version carrying the previous run's credentials (#954)wrangler deploy and the secret bulk after it publish two Worker versions reporting the same release sha, so a sha-only gate could not tell them apart. Readiness now also requires that an operator-authenticated route answers 200 to this run's freshly minted token and that version_id holds still.

Changed

  • AGENTS.md states the dated plan-filename convention the repo already follows (#950).
  • Lane C of the review-remediation plan is 2 PRs, not 3 (#947) — its six remaining web-UI items are deferred, since the single-agent work above rewrites those surfaces.

Full detail in CHANGELOG.md.