# Deliver and operate

Publish, promote and apply a change, manage the data that travels with it, and diagnose a failed run.

Source: https://docs.ptah.run/v0.8.0/operate/overview/

import { LinkCard, CardGrid } from '@astrojs/starlight/components';

Delivery work should leave an observable result: a sealed artifact, a recorded
revision, an observation of the target, or a diagnostic tied to a stable error
fragment. Choose the task that owns that result. Proving the change correct
before it gets here is [testing and safety](../../testing/overview/).

## Common tasks

<CardGrid>
  <LinkCard title="Deliver a schema change" href="../deliver/" description="Carry one reviewed change from publish to a verified database." />
  <LinkCard title="Load controlled data" href="../../versioned/reference-data/" description="Reconcile versioned lookup rows separately from ordinary schema changes." />
  <LinkCard title="Reconcile in Kubernetes" href="../kubernetes-operator/" description="What the operator converges, and what it does not deploy." />
  <LinkCard title="Publish an OCI artifact" href="../oci-registry/" description="Package, verify, and distribute migration or schema artifacts through a registry." />
  <LinkCard title="Troubleshoot a failure" href="../troubleshooting/" description="Start from the exact error or symptom and verify the repair." />
</CardGrid>

## Choose the safety boundary

Use a throwaway database for tests, a dev or shadow database for replay and
planning, and a reviewed target URL for a real apply. These roles are not
interchangeable; [database URLs and dev databases](../../concepts/database-urls-and-dev-databases/)
defines each one.

Commands that mutate a database keep their warning and verification step on the
task page where the operation runs.

## Reference

Use [exit codes](../../reference/exit-codes/) for automation contracts and
[test-case reference](../../reference/test-cases/) for the exact case format.
