Surfaced by the new ax otel view (#609):
correlation: 0/1,501 sessions linked (0%) [14d]
telemetry_of has 0 edges across 5,355 sessions, despite 16,700 claude metric points + 1,546,147 codex log events in the graph. The ingest-finish correlation pass (matches session.id ↔ otel session_id/conversation.id, Effect.ignore best-effort) is producing nothing.
Likely causes to check:
- session-id shape mismatch:
otel_*.session_id stores a bare uuid (see bareSession in telemetry-rollup.ts), but the correlation pass may compare against a session:<uuid> record id form, or vice-versa.
- codex key is
conversation.id not session.id — is the codex branch of the pass mapping it?
- the pass may be silently swallowing an error via
Effect.ignore.
Impact: all telemetry-enriched insights (churn otlp_cost_usd, fragility downstream_cost_usd, friction OTLP cost, skills weighted recovery latency) are dark because the edge they traverse is empty. ax otel is the diagnostic surface for confirming the fix.
Surfaced by the new
ax otelview (#609):telemetry_ofhas 0 edges across 5,355 sessions, despite 16,700 claude metric points + 1,546,147 codex log events in the graph. The ingest-finish correlation pass (matchessession.id↔ otelsession_id/conversation.id,Effect.ignorebest-effort) is producing nothing.Likely causes to check:
otel_*.session_idstores a bare uuid (seebareSessionin telemetry-rollup.ts), but the correlation pass may compare against asession:<uuid>record id form, or vice-versa.conversation.idnotsession.id— is the codex branch of the pass mapping it?Effect.ignore.Impact: all telemetry-enriched insights (churn
otlp_cost_usd, fragilitydownstream_cost_usd, friction OTLP cost,skills weightedrecovery latency) are dark because the edge they traverse is empty.ax otelis the diagnostic surface for confirming the fix.