# Skill: Observability

> **Atelier source:** `domains/observability/` (first-principles + logging,
> metrics, tracing)
> **Core principles:** C7 Observability
> **BA.A mapping:** basic observability bootstrap
> **Consumer:** read this before any production submission (W3.E requires
> `dashboard` + `oncall` for prod).

## First Principles (citizen-developer-relevant subset)

- **Logs are structured.** JSON with fields, not free-form text. Every
  log line carries a timestamp, level, message, and context fields.
- **Every request has a correlation ID.** A request ID propagates from
  ingress through every downstream call. Logs, metrics, and traces share
  the same ID.
- **No high-cardinality labels in metrics.** User IDs, request IDs, and
  other unbounded values go in logs/traces, not metric labels.
- **Alerts have runbooks.** Every alert links to a runbook
  (`runbook` field in the submission, W3.E prod mandatory) that explains
  what to do when it fires.

## Agent-Checklist Triggers (§ Observability)

- Logs are structured (JSON, fields)
- Every request has a correlation ID
- No high-cardinality labels in metrics
- Alerts have runbooks

## How Nova Uses This

The W3.E per-env mandatory table requires `runbook` + `dashboard` +
`oncall` for `prod` submissions — the submission-readiness gate enforces
this. The observability skill tells you what those artifacts must contain:
structured logs, correlation IDs, bounded metric labels, and runbook-linked
alerts. Nova provides the infrastructure (CloudWatch, the uptime
monitor); you provide the application-level observability (structured
logs, dashboards, runbooks).