<p>There's a question every team using AI coding tools eventually gets asked, usually by someone holding a budget: <em>"What are we actually getting for this?"</em> And there's a quieter question developers ask themselves every time they pick a model: <em>"Is the expensive one really worth it here?"</em></p><p>Both questions have the same problem. The answer exists — it's in your own usage — but nobody has been writing it down where you can see it. Elyra 0.9.37 starts writing it down.</p><h2>Why this release</h2><p>Elyra has quietly kept a local ledger of every turn for a while now: which model ran, whether it succeeded, how many edits failed, what it cost, how long it took. You could read the raw numbers with <code>/routing-stats</code>. But raw numbers aren't decisions. Nobody looks at "glm-5.3: 142 turns, 97% success, $0.57 total" and immediately knows what to <em>do</em>.</p><p>Meanwhile, the money you spend disappears the moment the session ends. A commit lands in the repo with a nice message and zero indication that it took four model turns and forty cents — or four dollars — to produce.</p><p>This release turns both into something actionable: the ledger now makes recommendations, and every commit carries its receipt.</p><h2>The ledger tells you what to change</h2><p><code>/routing-stats</code> still shows you the measurements. Now it ends with what they mean:</p><pre><code class="language-text">Tier suggestions (from your local ledger, last 30 days):
- fast: switch anthropic/claude-haiku-4-5 → zai/glm-5.3 — zai/glm-5.3: 97%
  success over 142 turns at $0.004/turn vs anthropic/claude-haiku-4-5: 90%
  at $0.010/turn
- balanced: pin anthropic/claude-sonnet-5 — 96% success over 120 turns at
  $0.021/turn (next: openai/gpt-5: 95% at $0.012/turn)
- powerful: keep anthropic/claude-sonnet-5 — best alternative
  anthropic/claude-opus-4-5: 97% at $0.050/turn is not meaningfully better

Apply with /settings → Smart routing, or set smartRoutingModels in settings.json.
</code></pre><p>Three verbs, each with its evidence. <strong>Switch</strong> when a measured alternative is meaningfully better — at least five points more success, or the same success at under 60% of the cost per turn. <strong>Pin</strong> when a tier has no pinned model but the data clearly favors one. <strong>Keep</strong> when your current choice holds up, with the numbers that say so.</p><p>The bar for "meaningfully better" is deliberate. A one-point difference over thirty turns is noise, and we won't nudge you to churn your setup over noise. Models with too few measured turns don't get to compete at all.</p><p>What makes this possible is something no vendor-owned agent can offer: the ledger compares <em>across</em> providers, on <em>your</em> work, and it never leaves your machine. <code>elyra doctor routing</code> gives you the same view from outside a session.</p><h2>Every commit shows its receipt</h2><p>When the agent commits, the commit now carries a standard git trailer:</p><pre><code class="language-text">$ git log -1

    feat(billing): add proration for mid-cycle plan changes

    Elyra-Cost: $0.42 (glm-5.3, 4 turns, 1 model switch)
</code></pre><p>That's spend since the previous commit, which models did the work, how many turns it took, and whether a model switch happened along the way. It's a trailer — the same mechanism as <code>Signed-off-by</code> or <code>Co-Authored-By</code> — so every git tool already knows how to display, filter, and ignore it.</p><p>Which means the budget question finally has a <code>git log</code> answer:</p><pre><code class="language-text">$ git log --format='%s%n%(trailers:key=Elyra-Cost,valueonly)' --since='1 month ago'
</code></pre><p>You'll see which features were cheap, which were expensive, and — combined with the recommendations above — whether the expensive ones needed to be.</p><p>Some care went into not being annoying. The trailer is injected into the actual <code>git commit</code> command the agent runs, so your <code>-m "fix: handle a &amp;&amp; b"</code> survives intact. It skips <code>--amend</code> (the commit already has its receipt), <code>--fixup</code> and <code>--squash</code> (those messages get eaten by rebase), and it never doubles up. It's on by default, same as other tools' co-author trailers; <code>gitCostTrailer: false</code> turns it off if your team prefers clean history.</p><h2>Compaction that cites instead of repeats</h2><p>Last release introduced the project decision log — architecture decisions as files in your repo. This release closes a loop with it.</p><p>When Elyra compacts a long session, the summary used to re-explain every decision from scratch: <em>"we chose Inertia over Livewire because..."</em> followed by the full rationale. Now the summarizer is handed the list of decisions already on disk and told to reference them instead:</p><pre><code class="language-markdown">## Key Decisions
- Admin UI framework: see decision 2026-09-02-use-inertia-over-livewire
</code></pre><p>Shorter summaries, and — this is the part that matters — <em>zero</em> lost reasoning. The full context, alternatives, and consequences live in the decision file, one <code>read</code> away. Compaction stops being where the <em>why</em> goes to die.</p><p>The extraction step also learned not to re-record decisions that already exist, and manual <code>/compact</code> now persists any new ones it finds, just like automatic compaction does.</p><h2>Also in the registry</h2><p>DeepSeek V4.1 Flash arrived on the gateways, Grok 4.6 landed on Bedrock, Mercury 2.5 went GA, and a batch of <code>:batch</code> half-price variants appeared for GLM and Mistral. The stealth model <code>omen-alpha</code> we spotted on Copilot a few days ago has been withdrawn — codenames come and go.</p><h2>Get it</h2><pre><code class="language-bash">elyra update
</code></pre><p>Then run <code>/routing-stats</code> and read the bottom of the report. Make your next commit. Look at it with <code>git log -1</code>. Your tooling just started showing its work — and so, in a sense, did you.</p>