Priority: P1
Problem
Concurrent or later TelemetryRuntime.init calls silently return the first initialization promise or completed runtime even when the caller requested different service or exporter settings.
Evidence
packages/telemetry-sdk-node/src/libs/runtime.ts:61-87 returns the existing promise at lines 77-79 and existing initialized state at lines 73-75 without comparing requested configuration.
Desired outcome
Only semantically identical initialization is idempotent; conflicting bootstraps fail clearly.
Implementation path
- Capture a canonical configuration fingerprint before initialization.
- Permit equal repeated calls only.
- Raise a stable conflict Problem for differing requests, including disabled/enabled modes.
- Add concurrent and post-init conflict tests.
Acceptance criteria
- Equal configuration calls share initialization safely.
- Differing configuration never appears to succeed.
- Diagnostics identify the conflicting runtime state.
Validation
pnpm --filter @croco/telemetry-sdk-node test
Scope boundaries
Does not introduce multi-runtime telemetry support.
Priority: P1
Problem
Concurrent or later
TelemetryRuntime.initcalls silently return the first initialization promise or completed runtime even when the caller requested different service or exporter settings.Evidence
packages/telemetry-sdk-node/src/libs/runtime.ts:61-87returns the existing promise at lines 77-79 and existing initialized state at lines 73-75 without comparing requested configuration.Desired outcome
Only semantically identical initialization is idempotent; conflicting bootstraps fail clearly.
Implementation path
Acceptance criteria
Validation
pnpm --filter @croco/telemetry-sdk-node testScope boundaries
Does not introduce multi-runtime telemetry support.