axagent experiencelive

release v0.3.0

Local harnesses become first-class

ax now treats Cursor, OpenCode, Claude, Codex, and Pi as provider peers in the evidence graph.

2026-05-30ax v0.3.0123 referenced changes
announcement

0.3.0 is the taxonomy pass becoming real product surface. The release moves ax away from a Claude-and-Codex-only view of work and toward a shared local-agent graph where each harness can write the same kinds of evidence.

The main change is provider parity. Cursor and OpenCode tool calls are now extracted into the same tool-call model as Claude and Codex, and file evidence is normalized so reads, searches, and edits can be compared across harnesses.

This release also makes token and model quality more explicit. Cost views can now distinguish actual provider usage from estimates, which makes dashboards and future recommendations less noisy.

Highlights

  • Cursor and OpenCode are represented as supported local harnesses.
  • Tool-call file evidence has a shared read path across providers.
  • Token source quality is exposed for model and cost diagnostics.
  • Provider parity checks keep future harness support honest.

Why it matters

ax is only useful if it sees the work the way it actually happened. This release keeps provider-specific extraction details at the edge and moves the product surface toward shared concepts: sessions, turns, tool calls, files, plans, and evidence.

referenced changes

123 linked changes

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

Features

  1. 01add provider event graph writers (328b7ac)
  2. 02checkpoints: session-based verdict windows (closes #83) (5b120f5)
  3. 03checkpoints: session-based verdict windows (closes #83) (21af2c1)
  4. 04cli: accept -v and --version aliases for version (b825fff)
  5. 05cli: add ax ingest here for pwd-scoped ingest (ba8ae56)
  6. 06cli: add ax session show with collapsed subagents (P2.2) (e515314)
  7. 07cli: add ax sessions here|around|near (F2, F3) (cac3f5e)
  8. 08cli: reject removed --*-only ingest flags with actionable error (b98514e)
  9. 09dual-write claude and codex provider events (9113f80)
  10. 10extract cursor tool calls (#96) (5bd6df6)
  11. 11improve: grounded agent files v0 (fd09c99)
  12. 12ingest local cursor chat history (01c8048)
  13. 13ingest local opencode sessions (58070a7)
  14. 14ingest local pi sessions (fd11ed6)
  15. 15ingest: claude stage co-located StageDef (70a5d00)
  16. 16ingest: closure stage co-located StageDef (6b4af16)
  17. 17ingest: codex stage co-located StageDef (e832c9d)
  18. 18ingest: commands stage co-located StageDef (383baa2)
  19. 19ingest: git stage co-located StageDef (83d728f)
  20. 20ingest: harness stage co-located StageDef (7147ea9)
  21. 21ingest: inherit + backfill subagent repository link (F7) (b979c7b)
  22. 22ingest: opportunities stage co-located StageDef (ae06e3a)
  23. 23ingest: outcomes stage co-located StageDef (984c25e)
  24. 24ingest: proposals stage co-located StageDef (7a9049f)
  25. 25ingest: read frontmatter role + emit plays_role edges (P3.2) (85e7a27)
  26. 26ingest: retro-proposals stage co-located StageDef (2beadb5)
  27. 27ingest: runPipeline over StageDef[] with LiveTrace.step wrap (d1a95b5)
  28. 28ingest: Schema types for StageDef foundation (ADR-0006) (14e778a)
  29. 29ingest: selectByKeys + selectByTag over registry (8550d73)
  30. 30ingest: session-health stage co-located StageDef (89353c8)
  31. 31ingest: signals stage co-located StageDef (f22169f)
  32. 32ingest: skills stage co-located StageDef (canonical pattern) (0aff468)
  33. 33ingest: spawned stage co-located StageDef (84ddea6)
  34. 34ingest: StageRegistry service + IngestStageKey union skeleton (7354793)
  35. 35ingest: subagents stage co-located StageDef (541c93b)
  36. 36layers: wire LiveTrace + StageRegistry into AppLayer (ADR-0007) (5c6dba1)
  37. 37lib: add pwd repository resolver (adaca40)
  38. 38live-traces: vendor tracer decorator + sink from quera (ADR-0008) (98d9498)
  39. 39recall: add --sources and --scope (F4 + F2) (c18c9da)
  40. 40register local agent provider stages (57640fc)
  41. 41retro: pull-based session retros via reviewed graph edge (6cbc61b)
  42. 42roles: add by-role + roles + sessions show --by-role (P3.7) (7b8559b)
  43. 43schema: add role + plays_role + invoked position fields (P3.1) (a8b809c)
  44. 44schema: full-text search on commit messages (F4) (cbed141)
  45. 45sessions: auto-delta ingest on stale transcripts (P1.4) (1de8135)
  46. 46site: bind ADR + markdown page routes (8eefb56)
  47. 47site: cloudflare pages deploy config (76bfc98)
  48. 48site: four showcase routes — hook backtest, recall, token economy, verdict timeline (77cdd1a)
  49. 49site: four showcase routes (hook backtest, recall, token economy, verdict timeline) (6d67ea6)
  50. 50site: how ax sees your work narrative page (6b6b0e3)
  51. 51site: port landing from docs/index.html (8a10863)
  52. 52site: port origin story from docs/origin.html (2b8fcf7)
  53. 53site: scaffold tanstack-start docs app (5d8403e)
  54. 54site: stage rationale annotation + extractor (5646a29)
  55. 55site: wire content-collections to docs/ markdown (c17d942)
  56. 56skill: add ax-extract-workflow orchestration skill (P4.1) (69404ee)
  57. 57skills: add lint command to apply classify briefs (P3.5) (94a9cee)
  58. 58skills: add tag command for manual role overrides (P3.4) (c71ec86)
  59. 59skills: classify command emits briefs for unclassified skills (P3.3) (e448ad9)
  60. 60skills: weighted ranking with role traversal + doctor mode (P3.6) (0d44ff4)

Bug Fixes

  1. 01add provider event graph health reader (30e98f9)
  2. 02align provider event schema with plan (143320d)
  3. 03backfill: recompute is_first across full session group (R4) (ac3880d)
  4. 04ci: bump AX_VERSION to 0.2.0 + install ripgrep on Linux runners (9ffee22)
  5. 05ci: install ripgrep on macOS runner too (2646bb0)
  6. 06ci: unblock typecheck — hoist try/catch out of Effect.gen + ignore warnings in tsc exit (02e5c75)
  7. 07cli: --with-agent calls runAgentAccept directly post-autoScaffold (72c35d2)
  8. 08cli: scope ingest here error handling + drop dead --derive-only (a1b464c)
  9. 09complete local provider integration (c06c2b1)
  10. 10harden pi ingest parsing (436ccca)
  11. 11harden provider event graph writes (032ae9c)
  12. 12improve: acceptProposal — validate dedupe_sig + dedupe experiment keys (80d983c)
  13. 13improve: acceptProposal writes task atomically via tmp+rename (f46e9f1)
  14. 14improve: lint reconciles DB before deleting task files (3f06378)
  15. 15improve: lint reconciles frontmatter ax_experiment exactly; flags ambiguous dups (582db82)
  16. 16improve: markers — balanced nesting for same-id close tags in body (3234eef)
  17. 17improve: markers — local regex instance, no shared lastIndex (f52bb4d)
  18. 18improve: preserve full dedupe_sig in task markers + dashboard types (0e60fd1)
  19. 19improve: recommend scoring — finite guard + log1p preserves freq=0 conf signal (fd652e3)
  20. 20improve: task template — fence label + lint command shape (478dc20)
  21. 21ingest cursor disk kv composer sessions (4236f5f)
  22. 22ingest: clamp sinceDays helper avoids 56-year scan on epoch-zero ctx.since (0f7a07f)
  23. 23ingest: guard subagent backfill record id + assert bindings in tests (1c5b898)
  24. 24keep provider event sequences unique (151091c)
  25. 25layers: move StageRegistryDefault out of AppLayer to dodge ESM load races (995f1b8)
  26. 26live-traces, ingest: tsc cleanup — port Schema.ts/Logger.ts; drop unused imports (4df5178)
  27. 27live-traces: emit child SpanStart/SpanEnd for step inside withTrace (de12276)
  28. 28live-traces: snapshot WrappedSpan startTime at construction (4bce06a)
  29. 29live-traces: use TestClock in Sink test; drop duplicate ConsoleTransport (6727f2c)
  30. 30live-traces: write console transport to stderr, opt-in via --debug (4568dd0)
  31. 31make pi provider events idempotent (d1e2c3a)
  32. 32namespace cursor local sessions (0995321)
  33. 33narrow cursor event ids in tests (0d8f3d2)
  34. 34nix: pin surrealdb to 3.1.0 via upstream tarball (7c152a1)
  35. 35preserve provider event and token continuity (06e9067)
  36. 36recall: bind scope param + narrow catch + cleanup (05619be)
  37. 37recall: total_count sums across all requested sources (R5) (55db148)
  38. 38scope: use record literal for repository filter (R1) (8656805)
  39. 39session-show: catch DbError + drop misleading timestamp (07529e0)
  40. 40sessions-query: bind repository param consistently (e7bf082)
  41. 41sessions: batch turn_count + first_user_message instead of correlated subselect (R11) (40f6a38)
  42. 42site: capitalize ADR title + comment content vs body distinction (97eff97)
  43. 43site: code review cleanups for how-it-works page (94dfaf9)
  44. 44site: code review cleanups for landing port (e885a14)
  45. 45site: code review cleanups for origin port (d064312)
  46. 46site: document cloudflare config + add deploy:check dry-run (97e262a)
  47. 47site: drop CSS capitalize + style markdown tables/hr (a57c6b8)
  48. 48site: drop redundant async wrapper + forward-ref include (3887c46)
  49. 49site: extractor parser + contract docs for stage rationale (59626bb)
  50. 50site: restore em-dashes in TerminalFigure copy (ef69507)
  51. 51site: restore unicode em-dashes + smart quotes in origin port (53e4064)
  52. 52site: wire dynamic stage rationale into how-it-works (3ff7ac6)
  53. 53skill-role: use literal record ids + sweep stale edges + parse list-role fallback (f277171)
  54. 54skill: replace ax commits search with ax recall --sources=commit (R2) (22ded59)
  55. 55skills-classify: drop unclassified filter in explicit mode (1d68df0)
  56. 56skills: validate role + skill names before record-literal embed (R3) (aadbe50)
  57. 57support observed opencode schema (1daabce)
  58. 58test: close brace placement in agent-accept.test.ts (1489a7a)
  59. 59tighten provider event payloads (fd07b54)
  60. 60tolerate opencode message schema drift (1c26717)
  61. 61update config fixtures for provider paths (cfb17f8)
  62. 62wire ingest here scoped command (ca5711b)

Performance

  1. 01improve: lint stale-task scan pushes date filter into SurrealQL (db72f28)
generated by release please
Show generated changelog for v0.3.0commit-level detail from Release Please

0.3.0 (2026-05-30)

Features

  • add provider event graph writers (328b7ac)
  • checkpoints: session-based verdict windows (closes #83) (5b120f5)
  • checkpoints: session-based verdict windows (closes #83) (21af2c1)
  • cli: accept -v and --version aliases for version (b825fff)
  • cli: add ax ingest here for pwd-scoped ingest (ba8ae56)
  • cli: add ax session show with collapsed subagents (P2.2) (e515314)
  • cli: add ax sessions here|around|near (F2, F3) (cac3f5e)
  • cli: reject removed --*-only ingest flags with actionable error (b98514e)
  • dual-write claude and codex provider events (9113f80)
  • extract cursor tool calls (#96) (5bd6df6)
  • improve: grounded agent files v0 (fd09c99)
  • ingest local cursor chat history (01c8048)
  • ingest local opencode sessions (58070a7)
  • ingest local pi sessions (fd11ed6)
  • ingest: claude stage co-located StageDef (70a5d00)
  • ingest: closure stage co-located StageDef (6b4af16)
  • ingest: codex stage co-located StageDef (e832c9d)
  • ingest: commands stage co-located StageDef (383baa2)
  • ingest: git stage co-located StageDef (83d728f)
  • ingest: harness stage co-located StageDef (7147ea9)
  • ingest: inherit + backfill subagent repository link (F7) (b979c7b)
  • ingest: opportunities stage co-located StageDef (ae06e3a)
  • ingest: outcomes stage co-located StageDef (984c25e)
  • ingest: proposals stage co-located StageDef (7a9049f)
  • ingest: read frontmatter role + emit plays_role edges (P3.2) (85e7a27)
  • ingest: retro-proposals stage co-located StageDef (2beadb5)
  • ingest: runPipeline over StageDef[] with LiveTrace.step wrap (d1a95b5)
  • ingest: Schema types for StageDef foundation (ADR-0006) (14e778a)
  • ingest: selectByKeys + selectByTag over registry (8550d73)
  • ingest: session-health stage co-located StageDef (89353c8)
  • ingest: signals stage co-located StageDef (f22169f)
  • ingest: skills stage co-located StageDef (canonical pattern) (0aff468)
  • ingest: spawned stage co-located StageDef (84ddea6)
  • ingest: StageRegistry service + IngestStageKey union skeleton (7354793)
  • ingest: subagents stage co-located StageDef (541c93b)
  • layers: wire LiveTrace + StageRegistry into AppLayer (ADR-0007) (5c6dba1)
  • lib: add pwd repository resolver (adaca40)
  • live-traces: vendor tracer decorator + sink from quera (ADR-0008) (98d9498)
  • recall: add --sources and --scope (F4 + F2) (c18c9da)
  • register local agent provider stages (57640fc)
  • retro: pull-based session retros via reviewed graph edge (6cbc61b)
  • roles: add by-role + roles + sessions show --by-role (P3.7) (7b8559b)
  • schema: add role + plays_role + invoked position fields (P3.1) (a8b809c)
  • schema: full-text search on commit messages (F4) (cbed141)
  • sessions: auto-delta ingest on stale transcripts (P1.4) (1de8135)
  • site: bind ADR + markdown page routes (8eefb56)
  • site: cloudflare pages deploy config (76bfc98)
  • site: four showcase routes — hook backtest, recall, token economy, verdict timeline (77cdd1a)
  • site: four showcase routes (hook backtest, recall, token economy, verdict timeline) (6d67ea6)
  • site: how ax sees your work narrative page (6b6b0e3)
  • site: port landing from docs/index.html (8a10863)
  • site: port origin story from docs/origin.html (2b8fcf7)
  • site: scaffold tanstack-start docs app (5d8403e)
  • site: stage rationale annotation + extractor (5646a29)
  • site: wire content-collections to docs/ markdown (c17d942)
  • skill: add ax-extract-workflow orchestration skill (P4.1) (69404ee)
  • skills: add lint command to apply classify briefs (P3.5) (94a9cee)
  • skills: add tag command for manual role overrides (P3.4) (c71ec86)
  • skills: classify command emits briefs for unclassified skills (P3.3) (e448ad9)
  • skills: weighted ranking with role traversal + doctor mode (P3.6) (0d44ff4)

Bug Fixes

  • add provider event graph health reader (30e98f9)
  • align provider event schema with plan (143320d)
  • backfill: recompute is_first across full session group (R4) (ac3880d)
  • ci: bump AX_VERSION to 0.2.0 + install ripgrep on Linux runners (9ffee22)
  • ci: install ripgrep on macOS runner too (2646bb0)
  • ci: unblock typecheck — hoist try/catch out of Effect.gen + ignore warnings in tsc exit (02e5c75)
  • cli: --with-agent calls runAgentAccept directly post-autoScaffold (72c35d2)
  • cli: scope ingest here error handling + drop dead --derive-only (a1b464c)
  • complete local provider integration (c06c2b1)
  • harden pi ingest parsing (436ccca)
  • harden provider event graph writes (032ae9c)
  • improve: acceptProposal — validate dedupe_sig + dedupe experiment keys (80d983c)
  • improve: acceptProposal writes task atomically via tmp+rename (f46e9f1)
  • improve: lint reconciles DB before deleting task files (3f06378)
  • improve: lint reconciles frontmatter ax_experiment exactly; flags ambiguous dups (582db82)
  • improve: markers — balanced nesting for same-id close tags in body (3234eef)
  • improve: markers — local regex instance, no shared lastIndex (f52bb4d)
  • improve: preserve full dedupe_sig in task markers + dashboard types (0e60fd1)
  • improve: recommend scoring — finite guard + log1p preserves freq=0 conf signal (fd652e3)
  • improve: task template — fence label + lint command shape (478dc20)
  • ingest cursor disk kv composer sessions (4236f5f)
  • ingest: clamp sinceDays helper avoids 56-year scan on epoch-zero ctx.since (0f7a07f)
  • ingest: guard subagent backfill record id + assert bindings in tests (1c5b898)
  • keep provider event sequences unique (151091c)
  • layers: move StageRegistryDefault out of AppLayer to dodge ESM load races (995f1b8)
  • live-traces, ingest: tsc cleanup — port Schema.ts/Logger.ts; drop unused imports (4df5178)
  • live-traces: emit child SpanStart/SpanEnd for step inside withTrace (de12276)
  • live-traces: snapshot WrappedSpan startTime at construction (4bce06a)
  • live-traces: use TestClock in Sink test; drop duplicate ConsoleTransport (6727f2c)
  • live-traces: write console transport to stderr, opt-in via --debug (4568dd0)
  • make pi provider events idempotent (d1e2c3a)
  • namespace cursor local sessions (0995321)
  • narrow cursor event ids in tests (0d8f3d2)
  • nix: pin surrealdb to 3.1.0 via upstream tarball (7c152a1)
  • preserve provider event and token continuity (06e9067)
  • recall: bind scope param + narrow catch + cleanup (05619be)
  • recall: total_count sums across all requested sources (R5) (55db148)
  • scope: use record literal for repository filter (R1) (8656805)
  • session-show: catch DbError + drop misleading timestamp (07529e0)
  • sessions-query: bind repository param consistently (e7bf082)
  • sessions: batch turn_count + first_user_message instead of correlated subselect (R11) (40f6a38)
  • site: capitalize ADR title + comment content vs body distinction (97eff97)
  • site: code review cleanups for how-it-works page (94dfaf9)
  • site: code review cleanups for landing port (e885a14)
  • site: code review cleanups for origin port (d064312)
  • site: document cloudflare config + add deploy:check dry-run (97e262a)
  • site: drop CSS capitalize + style markdown tables/hr (a57c6b8)
  • site: drop redundant async wrapper + forward-ref include (3887c46)
  • site: extractor parser + contract docs for stage rationale (59626bb)
  • site: restore em-dashes in TerminalFigure copy (ef69507)
  • site: restore unicode em-dashes + smart quotes in origin port (53e4064)
  • site: wire dynamic stage rationale into how-it-works (3ff7ac6)
  • skill-role: use literal record ids + sweep stale edges + parse list-role fallback (f277171)
  • skill: replace ax commits search with ax recall --sources=commit (R2) (22ded59)
  • skills-classify: drop unclassified filter in explicit mode (1d68df0)
  • skills: validate role + skill names before record-literal embed (R3) (aadbe50)
  • support observed opencode schema (1daabce)
  • test: close brace placement in agent-accept.test.ts (1489a7a)
  • tighten provider event payloads (fd07b54)
  • tolerate opencode message schema drift (1c26717)
  • update config fixtures for provider paths (cfb17f8)
  • wire ingest here scoped command (ca5711b)

Performance

  • improve: lint stale-task scan pushes date filter into SurrealQL (db72f28)