Out-of-scope follow-up from #71.
#71 covers static introspection ("what's wired?"). This is the runtime-metrics counterpart ("what's happening now?").
Scope (high-level)
- New sub-package `univeros/observability` (`Altair\Observability`)
- OpenTelemetry-compatible spans + metrics emission
- HTTP middleware: per-request timing, route name, response status
- Container instrumentation: time spent in `make()` per service
- Messenger instrumentation: per-handler timing + outcome
- Exporters: OTLP (default), Prometheus (pull), stdout (dev)
- `bin/altair observability:export` for one-shot exports
Why a separate package
- Pulls in OpenTelemetry SDK (substantial vendor weight)
- Has its own runtime cost (instrumentation overhead) that should be opt-in per host app
- Different audience: SRE / production observability, not local dev
Why deferred (out of scope for #71)
#71 is about answering "what's wired?" — read-once, no overhead. Observability is "what's happening?" — continuous emission, real overhead, separate UX.
Out-of-scope follow-up from #71.
#71 covers static introspection ("what's wired?"). This is the runtime-metrics counterpart ("what's happening now?").
Scope (high-level)
Why a separate package
Why deferred (out of scope for #71)
#71 is about answering "what's wired?" — read-once, no overhead. Observability is "what's happening?" — continuous emission, real overhead, separate UX.