Note 02 / Operational practice
A checklist that closes the loop
The last step is not “run the command.” It is “show that the intended result exists.”
A command list remembers syntax. A useful operational checklist remembers intent, boundaries, and the point at which to stop. The difference matters most when a change appears to succeed but leaves the system in the wrong state.
Write the outcome before the steps
“Update the configuration” describes an action. “The new setting is active, the expected behavior works, and unrelated behavior is unchanged” describes a result you can test.
Make that result specific enough to fail. Name the checks and their acceptable outputs before beginning. If a page must change, check its actual content as well as its response status. A successful response can still contain the wrong page.
A better checklist item: “Request the published page through the normal client path; confirm the expected heading and linked stylesheet load.”
Not enough: “The file copy completed.”
Capture what “before” looks like
Record the current version or configuration revision, the relevant health checks, and the behavior you intend to preserve. This gives you a comparison after the change and helps separate existing problems from new ones.
Keep recovery material outside the area being replaced. Check that it can actually be read and that it represents the current state. For stateful systems, copying a configuration file is not a complete data recovery plan; consistency, restore order, and data written after the copy all matter.
Keep evidence narrow. Record the observations needed for the decision, with timestamps where useful, without copying secrets or unnecessary personal data into a change log.
Add gates, not just more steps
A long checklist can create momentum: each tick makes continuing feel inevitable. Decision gates interrupt that momentum deliberately.
- Before the change: confirm the target, scope, authorization, and prerequisites. If the baseline is already unhealthy in a way that makes the result ambiguous, stop and investigate.
- Before activation: run whatever syntax, consistency, or dry-run checks the tool genuinely supports. A dry run is useful evidence, not a guarantee of runtime behavior.
- After activation: check from the consumer’s path, not only from the process that made the change. Then repeat the baseline checks for behavior that must remain intact.
- On failure: follow a defined recovery decision. Do not silently widen the scope by adding unrelated fixes.
A stop condition needs an action: who decides, what evidence is preserved, and whether to revert or investigate. “If anything looks wrong, be careful” is not an executable decision.
A small, reusable outline
Use this as a planning skeleton, then replace every bracketed item with a concrete fact. An unfilled field is a reason to pause, not a box to tick.
Intent [one observable result]
Scope [what may change; what must not]
Baseline [current revision and recorded checks]
Recovery [restore method and its prerequisites]
Preflight [validation and expected output]
Apply [one bounded action]
Verify [consumer-path and regression checks]
Stop if [failure signal and decision owner]
Observe [time window and signals to watch]
Record [result, evidence, and remaining limits]
Keep the action and its check adjacent in the working procedure. If a step changes permissions, the next check should test the intended access and a relevant denied case. If a step switches a data source, verify a representative read and the write path where applicable—not merely that the process stayed running.
Recovery has to be credible for the type of change. A reversible file replacement and a destructive schema migration do not share the same rollback story. If reverting cannot preserve newly written data, say so before the change and choose an appropriate recovery or forward-fix plan.
Finish with evidence and limits
Choose an observation window that matches the system. A background job may need a complete run; a cached response may need inspection across cache lifetimes. There is no universally safe “wait five minutes.”
Close the change record with what was changed, what was verified, and what remains untested. “The new page and its stylesheet loaded through the normal URL; the scheduled task has not yet run” is more useful than “looks good.”
When a checklist misses something, revise the relevant gate or check. Do not append a paragraph of history to every future run. The goal is a short procedure that makes the next decision easier, especially when attention is scarce.