Git, CI/CD & GitOpsCVI · Change ManagementTheQuestion
The change question — six questions a change must answer before it is applied
What you'll learn
- Identify the six questions a change record must answer: what, why, when, who, where, how
- Distinguish the five-question audit from the six-question change
- Recognise why "how" is the operational question the audit does not capture
- Translate the six questions into a pull request template that enforces audit-grade answers
Prerequisites
Verified against Git 2.55.x teaching target; 2.40+ minimum · GitHub Actions continuous service; Aug 2026 documentation baseline · Argo CD v3.5.x teaching target; v3.0+ minimum · Flux v2.9.x · Sigstore Cosign v3.1.x · SLSA v1.2 · OCI Distribution Specification v1.1 · Git LFS v3.7.1 · Kubernetes (cross-course target) 1.36.x
A change begins as six questions, not as a commit. Before the commit, the pull request, the deploy, an engineer or a change-advisory board answers what, why, when, who, where, and how. The five questions from Part LXIV answer the auditor: “show me the audit trail of this change”. The sixth question (how) answers the operator: “show me the runbook”. A change record that omits “how” is a change record whose operator wing is flying blind.
The six questions
Every change submitted to a production repository answers six questions. The questions are answered in different places and by different people, but a change is not auditable until each has a machine-readable or human-readable record.
flowchart LR
C["Change request"]
C --> Q1["What: artefact identity"]
C --> Q2["Why: rationale"]
C --> Q3["When: window"]
C --> Q4["Who: author and approver"]
C --> Q5["Where: environment"]
C --> Q6["How: procedure and rollback"]
Q1 -.->|"image digest"| REG["Registry"]
Q2 -.->|"PR description"| PR["Git"]
Q3 -.->|"deploy window"| CAL["Calendar"]
Q4 -.->|"CODEOWNERS"| OWN["Owners"]
Q5 -.->|"cluster, namespace"| K8S["Cluster"]
Q6 -.->|"runbook, revert"| RB["Repo"]
- What. The artefact identity. Image digest, Terraform plan checksum, manifest set.
- Why. The rationale. Lives in the PR description.
- When. The deploy window. A maintenance window, a change-advisory-board slot, a freeze exception.
- Who. The author and the approver. Two distinct identities; conflated, the audit is broken.
- Where. The environment. Cluster, namespace, account, region.
- How. The procedure and the rollback. The runbook the operator will execute and the revert the operator will execute if it goes wrong.
The five-question audit answers the auditor. The sixth question (how) answers the operator who, at 02:00, must execute the change with a runbook that fits on one screen.
Why “how” is the new question
LXIV-03 establishes the five-question audit. The auditor asks who, what, why, when, where, and the answer lives in the deployment record. The operator asks an additional question: how do I do this, and how do I undo it?
The “how” question is operational context the audit record does not capture: the order of steps, the dependencies between steps, the verification at each step, the rollback path. A change record that answers the five audit questions but not the how question has answered the auditor’s questions and left the operator’s questions to a wiki page that has drifted.
From question to pull request
The six questions translate into a pull request template. The template enforces the questions at submission time, so the author answers them before the approver is asked to sign off.
TITLE="Increase checkout replica count to handle peak"
BODY=$(cat <<'EOF'
## What
Image digest sha256:abc123...
## Why
Peak traffic on 2026-08-21; current replica count
saturates at 1.4k RPS; target is 2.5k RPS.
## When
Window: 2026-08-22 02:00-04:00 UTC; freeze exception
logged in CHANGE-2026-118.
## Who
Author: alice; Approver: bob (platform-team on-call).
## Where
Cluster: payments-prod; namespace: checkout; region:
us-east-1.
## How
Apply HPA + Deployment bump; verify pod count via
kubectl; rollback via revert PR if 5xx rate > 0.5%.
Refs: #1234
EOF
)
gh pr create \
--title "$TITLE" \
--body "$BODY" \
--base main \
--head feat/checkout-hpa \
--reviewer bob,carol \
--label "change,production,freeze-exception"
A template that enforces the six sections turns the six questions from a discipline into a checklist.
Production discipline
- The PR template is the gate. A pull request without all six sections is a pull request that does not merge. Branch protection enforces the template.
- The “how” question is non-negotiable. A change with a runbook but no rollback plan is a change that will be reverted in panic. The rollback is part of the how, not a separate question.
- The window is recorded in the pull request, not in chat. A change window in a Slack channel is invisible to the audit; a window in the PR body is part of the record.
Cross-course references
- This course, Part LXIV (Auditability) - the five-question audit this lesson extends.
- Linux for Production Sysadmins - Parts XXXIII (ChangeMgmt) cover the change-management process from the operating-system side, the analogue of the decision-identity field.
Quiz
Knowledge check · 4 questions
Q1. A change record answers the five audit questions perfectly. The PR template does not have a section for procedure and rollback. What is the gap?
Q2. The change window is part of the change record and should be recorded in the pull request, not in a Slack channel.
Q3. Name the six questions of the change question, and identify the one the five-question audit does not capture.
Q4. Apply the six questions to a change and identify which are answered and which are missing.
An on-call engineer has merged a pull request that increases the replica count of the checkout service. The PR description contains the new replica count and a link to the linked ticket. The PR has no template sections; the approver approved without comment. The deploy pipeline ran at 14:23 UTC and is now serving 5xx errors at 1.2%. The engineer is on call and must roll back; there is no revert PR.
Passing score: 75%. Answers are checked in this browser.