Skip to content

Observability

arc-guardrails treats observability as four sibling surfaces, not one monolithic subsystem. Each surface is a protocol with its own default no-op implementation and independent failure posture.

Surfaces

SurfaceProtocolDefaultPurpose
LoggerLoggerNullLoggerStructured per-stage logs
TracerTracerNullTracerSpan-oriented tracing
MetricSinkMetricSinkNullMetricSinkCounters and latency histograms
LifecycleSinkLifecycleSinkNullLifecycleSinkTyped event stream for replay and dashboards

Shared Stage Emission Pattern

Every stage gets the same instrumentation pattern through a shared runner, which keeps observability behavior consistent across the pipeline.

Failure Posture

SituationPosture
Inspector failsFail-open
Reporter or logger failsFail-open
Lifecycle sink failsFail-open
Sanitization strategy failsFail-closed
Policy router failsFail-closed
Rehydration verifier failsFail-closed-conservative

Payload Safety

The default posture is to keep raw sensitive strings out of telemetry. Decision records, lifecycle events, and observability hooks are designed to preserve auditability without copying raw PII or attack payloads into secondary channels.

Service-Level Observability Outputs

  • SQLite-backed lifecycle storage for replay and dashboards
  • SSE event streaming for live request monitoring
  • Structured debug entry capture per request ID
  • Optional OTEL adapters for environments that already run tracing and metrics infrastructure

Open source but Use responsibly 🛡️