First sub-phase of ADR-0023 Phase 3 (telemetry sampler hot-reload), per
the Mistral-produced phase plan validated 2026-05-05 (Q-037 in
mistral-quirks.md).
This is the isolated telemetry-package change: adds ReconfigureTracerProvider
that builds a new TracerProvider with updated sampler settings, swaps the
global, and gracefully shuts down the old. No-op when oldTP is nil
(telemetry-disabled-at-startup is out of scope for Phase 3).
The wiring (config callback → server-level invocation) lands in sub-phases
3.2 and 3.3 — kept separate for clean rollback semantics.
Tests:
- 3 new tests in pkg/telemetry/telemetry_test.go covering nil no-op, the
global TP swap, and error-tolerance when old TP shutdown fails.
- go test -race ./pkg/telemetry/... passes.
Verifier verdict (skill-driven, mental run): APPROVE. Function is 17 lines,
single responsibility, defensive on nil; tests cover positive + invariant
+ tolerance.
- Add Version field to telemetry.Setup struct
- Include service.version attribute in OpenTelemetry resource
- Pass version.Short() from server to telemetry initialization
- Follows OpenTelemetry semantic conventions for better observability
- Enables version tracking in production traces
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>