• feat(observability): instrument AI + HTTP paths, serve /metrics on a side port (ADR-030, #15)
    CI / Build & Import (push) Successful in 11s
    CI / Lint / Test / Vet (push) Successful in 10s

    mathias released this 2026-06-12 06:49:51 +00:00 | 19 commits to main since this release

    Wire the metrics package into the live paths and serve it:

    • summarizer: per-endpoint latency by model/outcome(success|error|parse_error)/fallback + slog.
    • youtube.FetchTranscript: latency by outcome (captions|none|rate_limited) + slog.
    • chat: answer latency by model + slog.
    • llm usage hook → token counts (prompt|completion) per model, wired in buildSummarizer/buildChat.
    • oidc callback: login counter.
    • cmdServe: wrap Router in metrics.HTTPMiddleware (request count + latency by bounded
      route pattern) and serve /metrics on TAPIR_METRICS_ADDR (default :9090), a SEPARATE
      port — never on the public app mux.

    BDD: observability.feature scenarios un-pended + mapped. TDD: summarizer wiring tested
    black-box via the /metrics scrape; metrics-not-on-public-mux asserted.

    Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

    Downloads