Skip to main content

guides/production-hardening.md

# Production Hardening

Use this checklist after the first successful operator session.

## Checklist

- Confirm the host browser pipeline around `/ops/jobs` matches your real auth boundary. The
  native shell assumes the same session/auth posture your operators already use elsewhere in the
  host application.
- Treat `auth_module` as host-owned application logic, not a generated placeholder. The library
  depends on it for current-actor lookup and authorization decisions, but the policy remains your
  responsibility.
- Treat actor/session lookup as a host-owned seam. Verify that the same operator identity reaches
  native pages, LiveView mounts, and any optional bridge request path.
- Treat `display_policy` as a production redaction boundary. It should reflect the data your
  operators may inspect and the fields you need to hide.
- Verify `repo` wiring and process supervision in the same environment where operators work so
  persistence-backed native pages can boot cleanly.
- Decide whether the optional `/ops/jobs/oban` bridge belongs in production at all. If you do
  expose it, keep it aligned with the narrower read-only support posture.
- Review reverse-proxy and WebSocket behavior before rollout. LiveView transport failures at the
  edge will make `/ops/jobs` feel broken even when the library is configured correctly.
- Review telemetry consumers against the public low-cardinality telemetry contract and avoid
  coupling downstream dashboards to private payload details.

## Telemetry

Powertools telemetry is public API. Keep consumers aligned to the published low-cardinality
event families and do not depend on job args, preview tokens, or free-form reasons appearing in
telemetry payloads.

## Policy seams

The host owns authorization, actor identity, display-policy output, the outer router scope, and
the browser pipeline in front of `/ops/jobs`. Do not ship production defaults until those seams
reflect your real operator, redaction, and deployment rules.