Skip to content

docs(metrics): note the two-seam overlap hazard in the truth-home#146

Merged
lesnik512 merged 1 commit into
mainfrom
docs/metrics-two-seam-overlap
Jul 17, 2026
Merged

docs(metrics): note the two-seam overlap hazard in the truth-home#146
lesnik512 merged 1 commit into
mainfrom
docs/metrics-two-seam-overlap

Conversation

@lesnik512

Copy link
Copy Markdown
Member

What

Closes the last open item from the architecture review (candidate #7), as a docs-only change after research showed a code guard is infeasible.

Finding: the two observability seams (the MetricsRecorder recorder adapters and the native FastStream middleware) are complementary on bus-invisible events but overlap on the consume/publish series — both emit the same-named duration+count metrics. One Prometheus CollectorRegistry shared across both raises Duplicated timeseries; live OTel meters on both double-count every consume/publish.

Why no code guard: the Prometheus collision is raised at whichever seam the user constructs second — upstream of the broker, so the broker can't intercept it. And the only broker-detectable signal ("both seams configured") is indistinguishable from the correct dual-registry setup, so a construction-time guard would false-positive on the recommended configuration.

The user-facing setup doc (docs/usage/setup-prometheus-opentelemetry.md) already covers the operator side. The only gap was the truth-home: architecture/metrics.md §Two-seam layering framed the seams as purely complementary and omitted the overlap. This adds the hazard, the separate-registries / middleware-as-source-of-truth fix, and the rationale for not guarding it in code.

Docs only — no code, no tests.

🤖 Generated with Claude Code

architecture/metrics.md §Two-seam layering framed the recorder and native
middleware as purely complementary, omitting that they overlap on the
consume/publish series: both emit the same-named duration+count metrics, so one
Prometheus registry raises Duplicated timeseries and live OTel meters on both
double-count. Record the hazard, the separate-registries / middleware-as-source-
of-truth fix, and why the library does not guard it at construction (the collision
is raised upstream of the broker, and "both seams configured" is indistinguishable
from the correct dual-registry setup). Cross-refs the setup doc, which already
covers the operator side.

Closes the last open item from the architecture review (candidate #7). Docs only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@lesnik512
lesnik512 merged commit 606e023 into main Jul 17, 2026
7 checks passed
@lesnik512
lesnik512 deleted the docs/metrics-two-seam-overlap branch July 17, 2026 12:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant