From 9304bed55be30883709e0cc66eb27d7d2538d08d Mon Sep 17 00:00:00 2001 From: Rene Nochebuena Date: Thu, 19 Mar 2026 06:56:16 -0600 Subject: [PATCH] docs(telemetry): correct tier from 5 to 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit telemetry has zero micro-lib dependencies — only the external OTel SDK. Tier 1 reflects its actual position in the dependency graph. The Tier 5 label was misleading about push/tag ordering; telemetry can be released independently of all other micro-lib modules. --- CLAUDE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 404d352..2c90f01 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,7 +8,7 @@ Sets the three OTel global providers so that all micro-libs using the OTel globa ## Tier & Dependencies -**Tier 5** (application bootstrap only). Must never be imported by framework libraries (Tier 0–4). +**Tier 1** (no micro-lib dependencies; external OTel SDK only). Must never be imported by framework libraries. Depends on: - `go.opentelemetry.io/otel` and sub-packages — API and SDK @@ -21,7 +21,7 @@ No micro-lib dependencies. No `launcher` dependency — telemetry has no Compone ## Key Design Decisions -- **Tier 5 / app-only** (ADR-001): Libraries use only the OTel API (no-op default). This module activates the real SDK. Importing it from a library is a mistake. +- **Tier 1 / app-only** (ADR-001): Libraries use only the OTel API (no-op default). This module activates the real SDK. Importing it from a library is a mistake. - **Three-signal OTLP bootstrap** (ADR-002): `New(ctx, cfg)` sets up traces → Tempo, metrics → Mimir, logs → Loki, all over a single OTLP gRPC endpoint. W3C TraceContext + Baggage propagation is set globally. - **Global provider strategy** (ADR-003): Libraries call `otel.Tracer(...)` / `otel.Meter(...)` / `global.Logger(...)`. After `telemetry.New`, those calls route to the real SDK with no library changes required. - **No `launcher.Component`**: Telemetry is not a lifecycle component. The caller defers the returned shutdown function directly in `main`. This keeps the module dependency graph minimal and the interface simple.