---
name: dry_run_culture
description: Build dry-run and rehearsal habits before irreversible actions. Use when an agent is about to run migrations, deploys, mass writes, deletes, publishes, sends, or any change that is hard to undo, and needs pre-flight checklists, faithful staging, verification gates, and explicit go/no-go discipline.
---

# Dry-Run Culture

## Purpose

Irreversible actions should never run blind. This skill turns "just run it and see" into a repeatable habit: map the blast radius, run a faithful preview, rehearse in a mirror of production, and pass an explicit go/no-go gate before the real run. The dry run is part of the work, not a detour around it.

## Workflow

**1. Map the irreversible surface.** Before anything else, list exactly what cannot be undone: data deletes, schema drops, published posts, sent messages, money moved, DNS flips, credential rotations. Write it down. If a step is not in the list, it does not run.

**2. Run the native preview.** Use the tool's own dry-run path, not your imagination:
- `terraform plan` (not apply), then apply the saved plan file so what was approved is exactly what runs
- `ansible-playbook playbook.yml --check --diff` (pair `--syntax-check` first; guard check-unsupported modules with `when: not ansible_check_mode`)
- `kubectl` with `--dry-run=server` before apply/delete
- migration tools' `--dry-run` / "show SQL" and read the generated SQL line by line
- CLIs you write: implement a real `--dry-run` flag that computes the full result, prints `would write <path>`, and writes nothing

**3. Rehearse in a faithful mirror.** Previews catch syntax and shape; rehearsals catch behavior. Run the exact sequence against staging, a scratch copy, or a `publish=false` path that executes everything except the irreversible step (tests, builds, artifact creation still run). If no mirror exists, rehearse the irreversible step on the smallest possible blast radius first: one record, one host, one recipient.

**4. Pass the gate.** Every rehearsal ends in an explicit verdict, not momentum:
- GO: previews clean, rehearsal green, rollback path named and verified
- NO-GO: any unverified step, any diff you cannot explain, any missing rollback
- Gate data: who reviewed, what evidence, what the rollback is, what gets monitored after

A gate decision is recorded. "Nobody objected" is not a decision.

**5. Run, then verify.** Execute exactly what the rehearsal proved, no last-minute edits. Immediately verify: smoke checks with timestamps and evidence, metrics back to baseline, and a post-run scan for residue (temp records, smoke-test data, half-applied state) that gets cleaned up and confirmed gone.

## Output Contract

When this skill is used on a planned irreversible action, produce a Rehearsal Brief with:
- **Blast radius:** each irreversible step, one line each
- **Preview evidence:** commands run, key diff lines, exit codes
- **Rehearsal result:** what ran, where, what passed, what failed
- **Rollback plan:** the exact command or sequence to reverse the run, or an explicit statement that reversal is impossible
- **Gate verdict:** GO or NO-GO, reviewer, evidence cited, monitoring after

## Operating Rules

1. A preview that cannot explain itself is a failure. If the diff shows something unexpected, stop and explain it before proceeding. Surprising diffs are where outages live.
2. Never rehearse against production unless the rehearsal itself is read-only. Preview commands are cheap; a rehearsal that mutates production is just a deploy with a nicer name.
3. The approved artifact is the artifact that runs. Save plans, freeze versions, pin inputs between rehearsal and execution so the two cannot diverge.
4. Rollback is planned before the run, not improvised after the failure. If a step has no reversal path, the brief says so explicitly and the gate treats it as the highest-risk item.
5. One failure ends the rehearsal. Fix it, re-run the whole sequence from the start, and re-gate. Partial reruns teach you that the parts work; only a full rerun teaches you that they work together.
6. Clean up after yourself. Smoke-test data, draft artifacts, rehearsal state: confirm none of it is left behind, and record that confirmation.
7. Never claim a check passed that you did not run. A skipped gate is a recorded skip with a reason, not a silent pass.
