# 008 Sandbox lifecycle observability ## Context - FR-034 требует метрики по active sandbox, startup latency и cleanup - Issue #11 требует трассировку sandbox usecase и Docker adapter steps - Inner layers должны знать только observability ports ## Decision - Usecase sandbox lifecycle использует только `Logger`, `Metrics`, `Tracer` - `Metrics` получает `set(...)` для current-state signals - `sandbox.active.count` считается из session registry через `count_active()` - M19 добавляет только contracts и adapter support для будущих lifecycle signals - M20 и M21 отдельно добавят spans и runtime metrics в usecase и Docker adapter ## Consequences - OTel gauge остается в outer adapter, не протекает во внутренние слои - Active sandbox count синхронизируется после create, cleanup и reconciliation - Tests могут проверять observability через fake ports без реального OTel backend