A versioning note up front: the GitHub release notes for 0.22.2 list a single pricing fix. The tag itself carries a full day of work - the release PR was snapshotted before the day's merges landed, and the tag was cut manually during a CI token outage. This page describes what is actually in the `v0.22.1..v0.22.2` range.
How we got here
Shared sessions could already show you a 35-hour, 34-subagent run - but only as a wall of text. The design pass behind this release (spec) picked three focused share improvements: make the subagent fleet visible as a map, give the OG poster a real mark instead of a serif wordmark, and warn when a share is about to render with empty cost rails.
The implementation ran as subagent-driven development: one implementer agent per task, each followed by a spec-compliance reviewer and a code-quality reviewer, with fix loops until both passed. The reviewers earned their keep - the spec reviewer caught a depth-1-only traversal in the stale-usage detector and ASCII art that decoded to escape-sequence garbage; the quality reviewer forced packing tests and a guard against mixing parent-local spawn seqs from nested subagents onto the root axis (#228).
In parallel, a swarm of codex sessions executed four phases of the planned architecture-deepening track, and the README got rewritten for first-time visitors.
What changed
F2 session map, first slice (#228). Shared-session pages now render a `Session map` strip from the share manifest alone: one clickable lane per subagent, placed by spawn turn (falling back to wall-clock, then stable order - one axis per share, never mixed), bar width from duration, color intensity from cost, red for failures. Clicking a lane deep-links into that subagent via the existing `?sub=` behavior. Shares with no subagents simply don't show it.
Stale-usage warning in `ax share` (same PR). If an exported share tree has session-level cost but no per-turn usage rows anywhere, the share viewer's cost rails render $0 forever. `ax share` now detects that shape after redaction and warns on stderr - on dry-run, preview, and publish alike:
axctl share: warning: this share has session-level cost but no per-turn usage rows; cost rails may render as $0.
Re-run ingest with AX_REDERIVE_CLAUDE=1 AX_REDERIVE_SUBAGENTS=1 ax ingest here --stages=claude,subagents --since=NASCII AX poster (same PR, plus the display-size OG card remake in #227). The share poster's header wordmark is now a two-line ASCII `AX` mark, built as a satori-safe line stack with non-breaking spaces so the glyph columns survive rendering. A debug `?variant=watermark` renders the same mark large and faint behind the content for iteration without touching the default social card.

Architecture deepening, four phases. The planned seam-extraction track landed: query seams extracted from the CLI (#218), the dashboard server migrated to a typed route table (#232), local parser write paths normalized with cross-provider parity tests (#223), and the signal-derivation pipeline split into typed modules (#219), with an effect-lint-zero canon cleanup behind it (#230).
Docs and pricing. The README was rewritten for first-time visitors with the CLI reference moved to `docs/cli.md` (#224, #229), and the builtin pricing catalog learned `claude-fable-5` and `claude-haiku-4-5` (#225) - so sessions on the newest models cost-estimate correctly out of the box.
Why it matters
Open any multi-subagent share and the first thing you see is now the shape of the run - how the fleet fanned out, where the money went, what failed - and every bar is a door into that subagent's transcript. And when a share would have rendered with hollow cost rails, the CLI tells you before you publish it, with the exact re-ingest command to fix it.