Skip to main content
RunBook Academy

Git, CI/CD & GitOpsCXVI · Governance Without BureaucracyControls

The control versus the bureaucracy — the trade-off

Advanced⏱ ~22 mingit

What you'll learn

  • Distinguish a control from a bureaucracy by whether feedback changes the system
  • Recognise the trade-off a governance programme makes explicit: loss-prevented versus friction-imposed
  • Identify the failure mode of "control without feedback" as the seed of bureaucracy
  • Apply the control-versus-bureaucracy lens to a change-approval process

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

Not yet marked complete on this device.

A control prevents a loss. A bureaucracy imposes a friction. The trade-off between the two is the central question of governance: every control has a cost, every friction has a reason, and a programme that does not measure both has drifted into ceremony. This lesson frames the trade-off the rest of Part CXVI will use.

What a control is

A control is a mechanism that reduces the probability or the impact of a specific loss, at a specific cost. A review reduces the probability of an unreviewed change reaching production; a policy-as-code check reduces the probability of a misconfigured manifest being deployed; a branch-protection rule reduces the probability of an unsigned commit reaching the default branch. The control names the loss, names the mechanism, and the mechanism is testable: it either prevents the loss or it does not.

flowchart LR
    L["Named loss:\nunreviewed change"] --> C["Mechanism:\nrequired approval"]
    C -->|"prevents"| O["No merge without approver"]
    C -->|"measured"| M["Cost:\nreview time"]
    O --> A["Audit chain:\nwho approved, when, why"]

A control has three parts that must all be present:

  • The named loss. “Unreviewed changes reach production.” Without a named loss, a control is a ritual; with a named loss, the control’s purpose is testable.
  • The mechanism. The concrete check, gate, or approval. The mechanism must be the smallest thing that prevents the loss - bigger is not better.
  • The measured cost. The friction the mechanism imposes on every change that goes through it. A review costs reviewer time; a policy check costs CI seconds; an approval gate costs cycle time.

A control whose mechanism cannot prevent the named loss is theatre. A control whose cost is not measured is a bureaucracy in waiting.

What a bureaucracy is

A bureaucracy is a control whose cost has decoupled from the loss it prevents. The mechanism remains; the named loss has either disappeared, was never named, or is so unlikely that the cost dwarfs the prevented loss. The friction persists because the mechanism persists.

The classic symptoms:

  • The approval no longer prevents anything. The approver rubber-stamps because the change is in a domain the approver cannot meaningfully review.
  • The check has been bypassed in practice. The policy fails for a known-good reason; engineers add exceptions; the exceptions outnumber the original rule.
  • The cost is invisible. Nobody has measured the total reviewer-hours the control costs; nobody has measured the incidents it has prevented; the control has no owner who tracks either number.
  • The control outlives the threat. A check that blocked a 2019 CVE remains in the pipeline long after the CVE is uninteresting; removing it requires paperwork.

A bureaucracy is not “a control I do not like”. A bureaucracy is a control whose cost-benefit ratio has inverted and whose owner does not know it.

The trade-off

Every control imposes a friction. The friction is the right shape only when the loss-prevented exceeds the friction-imposed. The trade-off is not “controls versus no controls”; the trade-off is “controls of the right size, in the right place, against the right losses”.

flowchart TB
    L["Named loss"] --> SIZE["Right-sized mechanism"]
    SIZE --> COST["Measured friction"]
    COST -->|"cost < loss-prevented"| KEEP["Keep control"]
    COST -->|"cost > loss-prevented"| DROP["Drop or shrink"]
    DROP --> RENAME["Re-mechanism against a smaller loss"]

The trade-off is made explicit when the control has an owner who tracks both sides. A policy-as-code check that takes 12 seconds in CI and prevents one misconfiguration per quarter is a control. The same check that takes 12 seconds in CI and prevents no misconfigurations in two years is a bureaucracy. The owner who tracks both numbers is what makes the difference.

Feedback is what keeps a control a control

The single property that separates a control from a bureaucracy is feedback. A control produces a signal that changes the system: a review comment that corrects a future change; a policy failure that causes the engineer to fix the manifest; a rollback that teaches the team a rule. A bureaucracy produces no signal because nothing in the loop is connected to the loss-prevented metric.

Production discipline

  1. Name the loss. Every control exists because a specific loss was named. If the loss cannot be named, the control is a ritual.
  2. Size the mechanism to the loss. The smallest check that prevents the loss is the right check. Bigger mechanisms prevent the loss and more; bigger mechanisms impose more friction.
  3. Measure the friction. Reviewer-hours, CI seconds, cycle-time added. Measured by the owner quarterly.
  4. Drop what does not prevent the named loss. A control whose last prevented incident is two years old and whose cost is visible is a bureaucracy.

Cross-course references

  • This course, Part CXV (OperatingModel) names the roles that own the controls - the reviewer, the approver, the policy owner.
  • This course, Part CVI (ChangeMgmt) is the change record the controls produce.
  • Linux for Production Sysadmins - Part XXXIV (ConfigMgmt) covers the same trade-off at the configuration layer.

Quiz

Knowledge check · 4 questions

  1. Q1. A team has a required three-approval gate on every pull request. The three approvals are routine, identical, and never produce review comments. The gate has blocked zero changes in the last quarter; it has added 18 hours of average cycle time. What is this control?

  2. Q2. A control whose cost-benefit ratio is not measured by an owner is, by definition, a bureaucracy in waiting.

  3. Q3. Name the three parts of a control that must all be present for the control to be a control rather than a bureaucracy.

  4. Q4. Diagnose whether the control is a control or a bureaucracy, and recommend the structural fix.

    Team T runs a policy-as-code check that enforces a list of ten allowed container registries. The list is owned by the security team; the policy has been in place for 18 months. The CI check takes 8 seconds per build. In the last year, the policy has rejected four pulls, all of which were legitimate mirrors of upstream images and all of which were approved by an emergency exception process. The exception count is 4 in 12 months. The security team has no dashboard tracking the loss-prevented or the friction.

Passing score: 75%. Answers are checked in this browser.