axagent experiencelivev0.37.0

release v0.25.0

Make ingest resilient, make sessions readable

Ingest now isolates per-file failures instead of losing the run, share can target-ingest a missing session, and Studio turns raw tool output into highlighted code, diffs, and clearer timeline titles.

2026-06-11ax v0.25.013 referenced changes
announcement

How we got here

v0.24.0 made hooks portable across Claude Code and Codex. The next pressure point was more basic: ax could collect the work, but a single bad transcript or an unhelpful Studio rendering still made the graph feel brittle. The release range is full of recovery work - per-file ingest isolation, honest run finalization, dry-run estimates, share recovery, install checksum diagnostics - paired with a Studio pass that makes the captured session easier to read.

The shape is deliberately operational. The commits do not introduce a new product surface as much as they remove dead ends: one corrupt file should not hide every other transcript, one missing shared session should not be a blank viewer, and one tool call should not force you to read uncolored blobs of stdout.

What changed

Ingest became fault-isolated (#257, #279, #276). Claude and Codex ingest stages now isolate failures per file, so a malformed transcript records the failure without stopping the rest of the batch. The run lifecycle also finalizes on every exit path with honest exit codes, and dry-run mode estimates remaining backfill instead of refusing to run once the database is populated.

ax ingest --dry-run
ax ingest --since=1

Those commands are now better previews and better operators: the dry run tells you what remains, and the real run can keep moving through mixed-quality input.

Share can recover a missing session (#277, #280). When a share target is not yet in the graph, ax target-ingests that session instead of making the user discover and run the ingest step by hand. The recovery path was then adapted to the new discriminated ingest-lock outcome, keeping the missing-session repair aligned with the ingest guardrails.

Studio got readable tool evidence (#238, #239, #256). Read-file tool calls render as highlighted code, log-like stdout gets tinted, edit calls render as syntax highlighted diffs, and timeline titles carry the command plus intent. The result is still the same session evidence, but the first scan is much closer to what an engineer expects from a code review.

The fallback paths got clearer. Compiled Studio builds that cannot run the live ingest sidecar now poll stats instead of showing a dead stream (#278). Install checksum failures show expected and actual hashes (#273). Dashboard docs now point at the serve default, port `1738` (#275). Skill classify briefs moved their metadata to top-of-file frontmatter so `ax skills lint` can parse them reliably (#274).

Why it matters

This is the release that makes ax less all-or-nothing. Ingest can keep useful data when one file is bad, share can repair the common "session not found" case, and Studio makes the recovered evidence readable enough to act on. That is the difference between a local telemetry graph you admire and one you trust while debugging real agent runs.

referenced changes

13 linked changes

Generated from Release Please and grouped by change type. Each row keeps its issue and commit references.

Features

  1. 01ingest: per-file failure isolation for Claude + Codex stages (#257) (9a0ab11)
  2. 02share: target-ingest the session when it isn't in the graph yet (#277) (84d4891), closes #270
  3. 03studio: enrich tool stdout blocks - Read files highlighted, log outputs tinted (#238) (738bff7)
  4. 04studio: poll stats when the live stream sidecar is unavailable (#278) (b7cef15), closes #272
  5. 05studio: render edit tool calls as syntax-highlighted diffs (#239) (7fcdab8)
  6. 06timeline: carry command + intent in tool event titles (#256) (1e9a7d9)

Bug Fixes

  1. 01ci: stop release publish jobs racing on asset upload (#260) (0350e23)
  2. 02docs: align dashboard port references with serve default 1738 (#275) (02cd27f), closes #268
  3. 03ingest: dry-run estimates remaining backfill instead of refusing when populated (#276) (f69798a), closes #267
  4. 04ingest: finalize run lifecycle on every exit path, honest exit codes (#279) (86fa208)
  5. 05install: report expected vs actual hash on checksum mismatch instead of silent abort (#273) (a56bc57), closes #271
  6. 06share: adapt recover to discriminated ingest-lock outcome (#280) (31b5289)
  7. 07skills: emit classify briefs as top-of-file frontmatter so lint can parse them (#274) (92fab55), closes #264
generated by release please
Show generated changelog for v0.25.0commit-level detail from Release Please

0.25.0 (2026-06-11)

Features

  • ingest: per-file failure isolation for Claude + Codex stages (#257) (9a0ab11)
  • share: target-ingest the session when it isn't in the graph yet (#277) (84d4891), closes #270
  • studio: enrich tool stdout blocks - Read files highlighted, log outputs tinted (#238) (738bff7)
  • studio: poll stats when the live stream sidecar is unavailable (#278) (b7cef15), closes #272
  • studio: render edit tool calls as syntax-highlighted diffs (#239) (7fcdab8)
  • timeline: carry command + intent in tool event titles (#256) (1e9a7d9)

Bug Fixes

  • ci: stop release publish jobs racing on asset upload (#260) (0350e23)
  • docs: align dashboard port references with serve default 1738 (#275) (02cd27f), closes #268
  • ingest: dry-run estimates remaining backfill instead of refusing when populated (#276) (f69798a), closes #267
  • ingest: finalize run lifecycle on every exit path, honest exit codes (#279) (86fa208)
  • install: report expected vs actual hash on checksum mismatch instead of silent abort (#273) (a56bc57), closes #271
  • share: adapt recover to discriminated ingest-lock outcome (#280) (31b5289)
  • skills: emit classify briefs as top-of-file frontmatter so lint can parse them (#274) (92fab55), closes #264