A runbook is a graph, and the graph is enforceable

Distribution of agent procedures is solved. Quality, provenance and safety are not. A runbook here is not a file with a badge — it is a procedure with structure, and because it has structure it can be both a guide and a monitor.

std/k8s-node-not-ready-drain

Drain a node stuck NotReady and reschedule its pods, after establishing whether the kubelet is gone or merely unreachable. Highest risk in this procedure: destructive.

Read it top to bottom. The centre column is the happy path; failure routes and escalations go right, the rollback goes left. Colour carries risk and nothing else — the step that drains the node is the one that needs a human, and the step beside it is how you get back.

The same procedure as a list
  1. start start. Goes next to s1
  2. check Confirm the node is NotReady. Goes on_fail to s9; next to s2
  3. decision Is the kubelet reachable?. Goes if unreachable to s3; if responding to s6; if default to s9
  4. action Cordon the node, RW (reversible-write). Goes next to s4
  5. wait Wait for the node to recover. Goes retry to s6; next to __end_success
  6. escalate Escalate to the cluster owner. Terminal
  7. action Drain the node, DEL (destructive), requires approval. Goes rollback to s5; next to __end_success
  8. action Uncordon the node, RW (reversible-write). Goes next to __end_aborted
  9. end success. Terminal
  10. end aborted. Terminal

Three ways in

What is here

30 records across 2 namespaces: std/, which this catalog writes, and adapted/, which it rewrote from somebody else's documents under their licence. It illustrates the specification and claims no completeness — every level is computed, and handing one to an agent has rules that are yours to enforce, not ours.