Description
Every instrument in docs/signals.md, built only from DestMetric fields. The dimension boundaries are deliberately narrow per instrument: a label available on a response counter is not automatically available on a token counter.
Acceptance Criteria
- #1 Every instrument named in docs/signals.md is emitted with exactly the dimensions listed there
- #2 codingagent.duration_source is present on every duration instrument
- #3 A derived value never enters codingagent.ttft
- #4 gen_ai.token.type breakdowns are never added to their input or output parents, and a test asserts it
- #5 Building an attribute from a non-DestMetric key is an error
- #6 Cumulative temporality, matching what the clients already send
Definition of Done
- #1 just check passes: fmt-check, lint, build, test-short, probe-ci, dashboard-check and docs-links all clean
Implementation Plan
Wave 1 lane 8: implement every documented metric instrument and dimension from the frozen model; prove non-metric destinations cannot attach; root integrates and runs the final gate.
Final Summary
The cumulative OTLP metric catalogue and exporter enforce documented dimensions and provenance; Mimir live-read proved codingagent_turns_turn_total=97.