Appendix A - 26. Operational playbooks

The Structure of Operational playbooks — its shape at a glance:

Each playbook keys off a triggering situation and gives the ordered response plus the reflexes to avoid; it is reached two ways — from the terse rule index and from the substrate signal that fires the trigger.

flowchart LR
  Signal[/Triggering signal/] --> Book[Situation-keyed playbook]
  Index[Rule index] -->|links to| Book
  Book --> Steps[Ordered response steps]
  Book --> Avoid[Reflexes to avoid]

Accessible description: a triggering signal and the rule index both route to a situation-keyed playbook, which supplies the ordered response steps and the anti-pattern reflexes to avoid, reasoned once when no incident was burning.

Projected from the catalogue entry governance-doc-controls / Operational playbooks.

On this page: Intent · Motivation · Applicability · Structure · Sample Code · Consequences · Example use within DocAble · Related Patterns

Intent

Intent — A library of documented, devops-themed decision procedures (when situation X arises, take these steps in this order) that agents and orchestrators consult instead of reasoning from scratch, so recurring operational situations (a broken deploy, a wedged cron, a stuck worktree, a chicken-and-egg recovery) get a consistent, pre-reasoned, incident-tested response.

Motivation

Operational situations recur: a deploy fails a known way, a cron loop can't self-recover, a worktree is destroyed mid-flight, an alert gate deadlocks. Each time, an agent under incident pressure re-derives a response from first principles and gets the sharp edges wrong: a flailing git reset destroys landed work, a naive cron restart re-enters the same loop, a "cleanup" removes a live worktree. The failure is inconsistent, error-prone operational response that recurs on every incident, and the cost is highest exactly when time is shortest.

Applicability

Structure

The Structure diagram appears at the top of this page.

Sample Code

A playbook is human-authored operational judgment, so there is no executable artifact to show. What a good playbook standardizes is the shape of a recurring procedure, and the sharpest way to teach that shape is to walk one. Here is a config-parameter-space optimization runbook: the situation is "I want to optimize this system over its config knobs, and I have the performance metrics to say whether a setting is better." An agent runs the loop; each pass turns some knobs, measures, and decides what to try next.

A config-optimization runbook with a determinize / judgment / determinize split A lifecycle loop labelled run then measure then assess wraps a three-step spine. Step one, determinize the data space: a mechanical, automatable step that fixes where the metrics live, their schema, and models of normal versus anomalous values. Step two, judgment in reasoning space: the agent reasons over that data to decide which configuration knobs to turn. Step three, determinize again in experiment space: applying the chosen configuration is made mechanical, which lets the step capture and log the reasoning trace, the rationale for why this configuration was chosen. That logged trace feeds two consumers: it becomes an input to the next iteration of the loop, so the optimizer learns from its own recorded reasoning, and it becomes a decision trace a secondary checker reads, which evaluates the choice far better than it could from the raw output alone. run measure assess A determinize → judgment → determinize split Determinize mechanical · automatable data-space Judgment reasoning decides Determinize mechanical · automatable experiment-space Logged reasoning trace why this configuration was chosen captured because step 3 is deterministic (a) Input to the next iteration the loop learns from its own logged reasoning (b) Decision trace for a secondary checker the trace evaluates better than the raw output alone A lifecycle the runbook is anchored to
A config-optimization runbook. A run-measure-assess lifecycle loop wraps a three-step spine: determinize the data space, apply judgment in reasoning space, then determinize the experiment space again. The third, deterministic step logs the reasoning trace for why a configuration was chosen; that trace feeds both the next iteration of the loop and a secondary checker that evaluates the choice.

The runbook is anchored to a lifecycle the reader already knows: run, measure, assess, then around again. Every pass of the loop moves through three steps, and the discipline is in how the steps are typed.

The two mechanical steps bracket the judgment. That is the pattern the slide names a determinize → judgment → determinize split, and it is worth stating plainly why the split pays off. The mechanical steps are cheap, repeatable, and auditable. The judgment step is expensive and variable, so you want as little of the procedure sitting inside it as the problem allows. Determinize everything that does not need to reason, and the reasoning that remains is smaller, sharper, and easier to check.

The determinized third step is where the leverage is. The natural instinct is to treat step 3 as plumbing: the reasoning already happened, so just apply the choice and move on. That undersells it. Because the third step is deterministic, it can capture and log the reasoning trace — the record of why this configuration was chosen — as a first-class output of the pass, not a side effect thrown away when the experiment starts. That logged trace then does two jobs. It becomes an input to the next iteration, so the loop reads back the rationale it recorded last time and reasons from its own history instead of from the raw numbers alone. And it becomes a decision trace for a secondary checker: hand a reviewer only the raw output and it can tell you whether the result looks good; hand it the trace of what was chosen and why and it can tell you whether the reasoning was sound, catch a choice that got a lucky result for a bad reason, and flag a rationale that will not generalize. Determinize the third step because a deterministic step affords a logged reasoning trace, and that trace is what lets the loop learn from itself and lets a second checker judge the decision rather than just the output.

Consequences

Example use within DocAble

Contents
© James C. Davis, 2026–present