Git, CI/CD & GitOpsLX · Forward Fix versus RollbackPostRollback
Post-rollback investigation — the audit trail, the fix-forward, and the lesson
What you'll learn
- Conduct a post-rollback investigation that produces an audit trail the team can search
- Write a fix-forward that prevents recurrence and is pre-staged for the next rollout
- Run a post-mortem that documents the lesson without blaming the on-call engineer
- Close the loop between the incident, the investigation, and the next change
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 rollback or forward-fix that is not investigated is an incident the team will repeat. The investigation turns the incident response into an organisational lesson. Part LX-06 establishes the three deliverables: the audit trail, the fix-forward, and the post-mortem.
The audit trail
The audit trail is the time-ordered record: what changed, when, who approved it, what was detected, how the on-call engineer responded, what the rollback or forward-fix did, what the verification confirmed. It is the deliverable the team searches when the next incident recurs; the security team reads it; the auditor reviews it.
Content:
- The change. Commit hash, PR number, reviewer, CI run, artifact digest, deploy timestamp, classification by the four properties.
- The detection. The alert that fired, the dashboard, the user report. Detection latency from deploy to alert.
- The response. The on-call engineer’s actions, commands run, classification confirmed, rollback or forward-fix applied, time per step, MTTR budget consumed.
- The verification. Post-rollback or post-forward-fix health check, cluster resource verification, data integrity check.
- The closure. Resolution timestamp, customer impact, error budget consumed.
kubectl rollout undo deployment/$NAME --to-revision=$N
argocd app rollback $APP_NAME
The commands the on-call engineer ran are part of the audit trail. Shell history is the raw record; the incident record is the curated version.
The fix-forward
The fix-forward is the change that prevents recurrence. It goes through pull-request review, CI, and the deploy pipeline - the regular process applied to a change whose origin is an incident.
Content:
- The trigger. The incident record that identified the gap; the audit trail’s specific evidence.
- The change. The PR that closes the gap: the new CI check, the new review question, the new deploy annotation, the new pre-staged branch.
- The verification. The test that proves the fix-forward prevents recurrence. Added to the regression suite; required for the fix-forward to merge.
- The deployment. Staging, then production, with the same promotion discipline as any other change.
A fix-forward without a verification test is a wish. A team that ships the fix-forward without the test has shipped a change they hope works; with the test, they know it works.
The post-mortem
The post-mortem is not the audit trail; it is the narrative: what happened, why, what we learned, what we will change.
Structure:
- Summary. What happened in two sentences.
- Timeline. The chronology with timestamps. The audit trail feeds the timeline.
- Root cause. The chain of events that produced the incident. Not the on-call engineer’s action; the gap in the system that made the action possible.
- What went well. The things the team did correctly.
- What went wrong. The gaps the incident revealed. The fix-forward’s inputs.
- Action items. The fix-forward PRs, CI checks, runbook updates. Each has an owner and a date.
- Lessons. The generalisable lesson. What goes in the runbook for the next on-call engineer.
Closing the loop
The loop closes when the fix-forward deploys to production. Until then, the incident is open; the team has paid the cost without earning the lesson.
flowchart LR
A["Incident"] --> B["Audit trail"]
B --> C["Fix-forward"]
C --> D["Post-mortem"]
D --> E["Next change"]
E -- "recurrence detected" --> A
The loop’s output is the next change’s classification. A team that has fixed the gap from incident N produces a change for incident N+1 with the classification documented, the cascade recognised, and the forward-fix pre-staged. The loop’s speed is the team’s maturity.
Production discipline
- Write the audit trail within 24 hours. Memory is fresh; shell history complete.
- Open the fix-forward within 48 hours. The sooner it opens, the sooner the gap closes.
- Run the post-mortem within a week. Blameless; action items have owners and dates.
- Track every open incident’s fix-forward. The weekly meeting reviews them.
- Review the loop’s speed in the quarterly retrospective.
Cross-course references
- This course, Part LIX (Rollback) - the investigation feeds back into the mechanisms.
- Linux for Production Sysadmins - Part XXXIII covers incident response.
- Google SRE Book - the postmortem culture section is the source for the blameless framework.
Quiz
Knowledge check · 4 questions
Q1. A team rolls back a Deployment after a production incident caused by a missing readiness probe path. Within a week, the team has written the audit trail and the post-mortem but has not opened a fix-forward PR. What is the missing deliverable?
Q2. A blameless post-mortem is one where the team agrees not to identify the on-call engineer who made the wrong decision during the incident.
Q3. Name the three deliverables of the post-rollback investigation, and identify the deliverable that closes the loop between the incident and the next change.
Q4. Diagnose why a team repeated a production incident three months after the first occurrence, and identify the missing deliverable from the first investigation.
A team rolls back a Deployment after a production incident caused by a missing readiness probe path. The audit trail and post-mortem are written. The post-mortem's action items include 'add a CI check that validates the readiness probe path matches a route the application serves'. Three months later, a similar change deploys and the same incident occurs: the readiness probe path is wrong, pods do not become ready, the application is unavailable. The rollback runs again; the same fix is identified again.
Passing score: 75%. Answers are checked in this browser.