You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
External contract version 3 (ADR-012).
std.external.tool_use_id joins an external run to the exact turn that made the MCP call. The
Stop hook now records mcp__* tool-use ids from the transcript, including sub-agent transcripts,
as std.artefact.mcp_tool_use_ids, and the loader writes them to mcp_tool_call. An MCP server's session.id goes stale after /clear, so the join is what attributes its spend correctly. Through
the joined turn, external spend also gains a scope.
std.external.requests_unpriced keeps a partly priced run's observed cost as a lower bound
instead of dropping it.
Query 7 version 3 reports partial runs apart from complete ones, and reports the join rate.
<synthetic> is no longer counted as a model request. Claude Code uses that name for
placeholder assistant messages, such as interrupted or failed responses, which carry zero usage.
Counting them inflated llm_requests, and when one came first in a turn it became the span's model:
one Prometheus series was already labelled gen_ai_request_model="<synthetic>". In 1,157 real
turns, every turn that appeared to use more than one model was really one model plus <synthetic>.
A span names a model only when its run used exactly one. This applies ADR-012 decision 5 to our
own turns, sub-agents and skill tails. Genuinely multi-model runs were sub-agents, 5 of 200 sampled,
and naming the first of two models said the run used one.
scrub() dropped every list attribute without a word. It now passes a list of strings and
nothing richer.
stdtel-conform read an OTLP intValue as a string, and would have refused every correctly
sent count.
Collector: spanmetrics now counts across resources instead of per resource, so dashboards no
longer read zero after a branch switch, a project change or an SDK upgrade. (#92)
mise run load works again, having failed since #68, and the loader no longer reports keys that
our own Langfuse overlay adds. (#93)