skip to content

Your pipeline's four layers share one precondition and delivery refuses a human gate on every deploy - what do you change?

level: principalimportance: nice to knowfreq 29%

answer

  1. buy the least friction that changes the count
  2. put it where consequence is irreversible
  3. approver cannot be the job
  4. break-glass beats a removed gate
  5. name what you are accepting, and who accepted

basics

~20 s

Re-anchor exactly one control, on the highest-consequence step only. Bind the promotion step to an approval from a human who cannot start jobs and did not author the change, leave every other job fast, and state plainly which pipelines are accepted at one precondition.

solid answer

~50 s

Independence costs friction, so buy the least of it that changes the count. Pick the step where the consequence is largest — promotion to production, minting a long-lived credential, publishing an artifact others consume — and put the single independent precondition there: an approval bound to a named human who is not able to start the job and who did not author the change. Everything before that step keeps running at full speed on the existing correlated controls, which is what makes the proposal survivable for the delivery team. Then be explicit about what you have not fixed: the other pipelines still have one precondition, and that is an accepted position with an owner, not an oversight. Add a break-glass path that is expensive and attributable rather than forbidden, because a gate people cannot get past in an outage gets removed entirely. Review the exceptions periodically rather than assuming the gate holds.

go deeper

for a junior

You are not expected to make this call, but know the shape: independence usually means involving a principal the automation cannot be, and that costs time somebody has to agree to spend.

for a middle

Be able to say why a second automated check on the same pipeline definition does not create a layer, and what the approval would have to be bound to instead.

for a senior

Show that you would scope the independent precondition to the highest-consequence steps rather than to every run, and that you would design the break-glass path at the same time as the gate.

for a principal

Own the negotiation and the residual risk: quantify the friction in the delivery team's own terms, name who approves exceptions, and write down which pipelines remain at one precondition and what would change that.

## The situation A build platform's four controls have been shown to rest on one fact — that this is a legitimate pipeline job, started and defined by someone entitled to do both. The technical fix is known: anchor one control on a precondition the job identity cannot inherit, which in practice means a different principal. The obstacle is not technical. The delivery organisation deploys many times a day, a human in the path of every deploy is a real cost they have already refused, and they are not wrong to refuse it. This is the layer of the problem a more senior technical answer cannot reach, and it is what the question is actually testing. ## Place the independence where consequence is, not everywhere Depth is not owed uniformly. Enumerate the steps a pipeline performs and ask which of them are irreversible or far-reaching: promotion into production, publishing an artifact other teams consume, minting or extending a long-lived credential, changing the pipeline's own permissions. Those steps are a small fraction of pipeline activity and they carry nearly all of the consequence. Put exactly one independent precondition on those steps. Every other job — build, test, preview, ephemeral environments — keeps running on the existing correlated controls at full speed. The layer count for the estate's most consequential action goes from one to two; the throughput cost lands on a few percent of runs. That asymmetry is the whole argument, and it is what makes the proposal acceptable rather than merely correct. ## What the independent precondition has to be It must be something the job identity cannot produce. In practice: an approval recorded by a **named human principal** who cannot start the job, plus a separation rule that the approver is not the author of the change. Two properties matter, and both get argued about: - **A different principal.** If the approver is any holder of the same repository role, you have added effort inside the existing precondition, not a new one. The population that may approve must not be the population that may define and start. - **Out of band from the job.** If the approval is recorded by something the pipeline itself drives, the job can produce it, and the inheritance is back. ## Making it survive contact with the organisation Three failure modes kill this control, and all three are organisational: 1. **It becomes a rubber stamp.** If the approver sees a step name and no context, they approve everything and the precondition is nominal. The approval has to show what changed in the definition and what the step will be able to reach. 2. **It cannot be got past during an outage.** A gate with no legitimate override is removed the first time it blocks a fix at three in the morning. Provide a break-glass path that is deliberately expensive and attributable to a person, and treat its use as a normal, occasionally correct outcome rather than a violation. 3. **Nobody owns the exceptions.** Teams will ask to be excluded, and some will deserve it. Someone with the authority to say no must own that list, and it must be re-read on a schedule; an exception granted once and never revisited becomes the estate's default. ## What you tell the delivery team The honest pitch is narrow and quantified in their currency: this applies to promotion only, it affects roughly this many runs a week, the median added wait is this, and here is the override. The wrong pitch is 'we need defence in depth', which invites them to point at four existing controls and ask what is wrong with them. The right pitch is that the four they have are one, that one is held for free by every contributor, and this is the smallest change that makes the number two. ## Say what you are accepting The pipelines that keep a single precondition are an accepted risk, not an unnoticed one. Name them, name who accepted them, and name the condition that would change the decision — a pipeline gaining production reach, or a contributor population growing beyond a size you are willing to trust as one principal. A principal-level answer ends with a written acceptance and a trigger, not with a claim that the estate is now layered. ## Answering it well Lead with the placement decision — one control, one class of step — then the different-principal requirement, then the two organisational conditions that keep it alive, then the explicit acceptance for everything else. If you find yourself proposing a gate on every deploy, you have answered the technical question and lost the negotiation.

  • The delivery team offers a second automated check instead of a human. Do you take it?
    Only if it rests on a principal the job cannot be. Most automated additions read the same pipeline definition or trust the same job identity, so they land inside the existing precondition and change nothing about the count. An automated check anchored on something the definition's author does not control — a state established before the change and outside their reach — can qualify, but the burden is on showing what fact it accepts.
  • How do you stop the approval becoming a rubber stamp?
    Give the approver the diff of the definition and a plain statement of what the step will be able to reach, keep the volume low enough that reading is realistic — which is why it goes only on promotion — and make sure the approver is not the author. If approvals run at hundreds a week, the control has already failed; that is an argument for narrowing its scope, not for adding reminders.
  • What would make you accept a pipeline staying at one precondition?
    When the step's consequence is genuinely contained — an ephemeral environment, an artifact nothing else consumes, no credential that outlives the run — and the contributor population is small and known. Write the acceptance down with an owner and a trigger to revisit it: production reach, a credential gaining a longer life, or the population growing past the point where treating it as one trusted principal is honest.

saying these in an interview costs you the question

  • Proposes a human approval on every deploy and calls the tradeoff someone else's problem
  • Adds a fifth automated check conditioned on the same fact
  • Accepts an approver drawn from the same role as the author
  • Ships a gate with no break-glass path
  • Leaves the excluded pipelines undocumented and unowned

context