# Operations Procedure (docs/operations/{procedure}.md)

Truth document. Use for: any **recurring** procedure — setup, development, deployment, maintenance. A procedure is consulted mid-task, not read: exact commands, copy-paste runnable, no narrative. Updated in place whenever the workflow changes.

A **one-shot** procedure (a migration, an upgrade, an incident response executed once) is not an operations doc — it is a **Migration Runbook** (record, below). The test: will someone run this again next month? Yes → operations. No → runbook.

Required: **Goal**, **Steps**, **Verification**. Optional: Preconditions, Troubleshooting, Rollback — include only when they carry real content.

If a procedure is a deterministic command list run frequently, script it and have the doc point at the script — a doc should carry judgment (when, why, what to check), not replace automation.

```
# {Procedure Name}

**Goal:** What this procedure accomplishes, one line.

## Preconditions

- Access, tools, or state required before starting — exact versions, env vars, credentials location

## Steps

1. One action per step, exact command in a code block
2. Note expected output where it disambiguates success from failure

## Verification

- The observable end state that confirms it worked — exact check commands, not "it should work now"

## Troubleshooting

- Symptom → cause → fix (append entries as failures are root-caused)

## Rollback

- How to undo, and when undo stops being possible
```
