Skip to content

0.6.0

Choose a tag to compare

@amiable-dev amiable-dev released this 28 Sep 21:18
9da0e62

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.
    • stdtel-conform --print-contract reports contract_version: 3. (#94)

Fixed

  • <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)