feat: add diagnostics and telemetry runtime

This commit is contained in:
donghyeon-ka
2026-07-26 16:42:27 +09:00
parent 2fa0baa577
commit 5173b6c8d6
43 changed files with 1760 additions and 116 deletions
@@ -723,6 +723,28 @@ render와 release 사건을 실제 producer에 연결한다.
RP-09는 exporter를 제거하고 즉시 no-op adapter로 전환할 수 있어야 한다.
diagnostics port와 redaction test는 유지한다.
**구현 증거 (2026-07-26)**
- VD-07에서 level/event 기반 `DiagnosticsPort`와 semantic `TelemetryPort`
분리하고 bounded memory/no-op 또는 설정 기반 best-effort HTTP exporter를
채택했다.
- diagnostics 8종과 telemetry 5종의 registry, context/attribute allowlist,
고카디널리티 value policy, timestamp와 status/attempt/duration/queue bucket을
구현했다.
- boot, route, render, HTTP logical outcome, cache, storage, release mismatch와
telemetry drop을 production composition에 연결했다. HTTP는 success/recovery/
terminal/abort 각각 logical execution당 diagnostics 한 번, terminal
non-abort failure telemetry 한 번만 발행한다.
- bounded oldest-drop queue, drop reason 집계, sink/observer failure 격리와
nonrecursive delivery evidence를 구현했다. exporter가 없으면 network와 queue
side effect가 없는 true no-op이다.
- `check:diagnostics`, source negative fixture와 TypeScript negative fixture가
producer 누락, direct console, unknown event/context, raw URL/query/body/
credential 경계를 거절한다.
- unit/integration test가 circular/hostile error, pre-mount boot, queue/sink
failure, no-op, cache/storage/release producer, success/retry recovery/terminal/
abort 횟수와 reference route/operation/correlation context를 검증한다.
### 10. `feature-frontend-test-registry-evidence-hardening`
**목표**