skip to content

Your gate reads both build-written reports and verified signed statements — how do you set outcomes per class?

level: seniorimportance: should knowfreq 40%

answer

  1. who could have produced this and passed
  2. outcome follows the tier, not the severity
  3. warn where being wrong is cheap
  4. block at the promotion boundary
  5. only blocking tiers are reportable controls

basics

~20 s

Tier the inputs by who could have produced them. Evidence the gated job controls may only warn; evidence from a producer the gated team cannot write to, attributed to an identity policy pinned, may block promotion.

solid answer

~50 s

Classify every input by one question: could the team being gated have produced this and still passed? Class one is anything the gated job authors — files in its workspace, step outputs, exit codes. Those get warnings, annotations and dashboards, never a block, because a block on them is both bypassable and falsely reassuring. Class two is evidence produced by a system the gated team has no write access to, such as a platform-run scan on the published artifact. Class three is a signed statement the gate attributes to a builder identity pinned in policy. Classes two and three may block, and the strongest place to enforce them is the promotion or deploy boundary rather than inside the pipeline the developer can edit. Then be honest downstream: only the blocking classes are reportable as controls that ran. A warn-only check over self-asserted input evidences nothing, and describing it as a control is how paper compliance happens.

go deeper

for a junior

Know that not every check should block, and that the deciding factor is where the evidence came from rather than how serious the finding sounds.

for a middle

Be able to sort concrete inputs into tiers — workspace file, step output, platform-run scan, attributable signed statement — and state the outcome each tier supports.

for a senior

Show the operating judgment: blocking classes enforced at the promotion boundary, warn copies kept in-pipeline for feedback, absent evidence failing closed for blocking tiers, and a clear account of what each tier proves.

for a principal

Own the reporting contract as well as the technical one — which tiers may be presented as controls, how a check is formally promoted from warn to block, and why an overstated control is worse for the organisation than an admitted gap.

## Start from the classification, not the rule Most gate designs go wrong by asking "what should this rule check?" before asking "what am I entitled to conclude from this input?". The organising question for the whole gate is one line: **could the party I am gating have produced this evidence, and still passed?** That sorts every input into tiers, and the tier — not the severity of the finding — decides the outcome the check is allowed to have. | Class | Producer | Outcome it may carry | | --- | --- | --- | | Self-asserted | The gated job itself: workspace files, step and job outputs, exit codes, exported variables | Warn, annotate, dashboard | | Independently produced | A platform system the gated team cannot write to, e.g. a scan run on the published artifact, findings held in a service with no build write access | May block | | Attributable statement | A signed statement whose issuer the gate establishes and compares against an identity pinned in policy | May block at promotion | ## Why the self-asserted tier must not block Two separate reasons, and interviewers want both. **It doesn't work.** A block resting on a value the gated job chose is bypassable by the party it constrains — not necessarily maliciously; a skipped step, a stale file or a scanner exiting zero on findings produces the same green. **It is worse than nothing when it appears to work.** Once a check is labelled "blocking", the organisation stops looking. Risk registers list it, dashboards count it, and an auditor is told the control runs on every build. A control everyone believes in and nobody can rely on is a strictly worse position than an acknowledged gap, because the gap is no longer visible to anyone deciding where to spend effort. So the self-asserted tier keeps its value in the place where being wrong is cheap: fast feedback in the merge request, a signal on a dashboard, an early warning that a team's build is drifting. None of those need to be right every time. ## Placement matters as much as class A check that runs inside the pipeline definition the developer can edit is weaker than the same check at the boundary the artifact must cross to reach production. Two implications: - Put the blocking classes at the **promotion or deploy boundary**, evaluated by a system that is not the build. That boundary sees the artifact as published and can demand evidence about *that* artifact rather than about whatever was in a workspace. - Keep the in-pipeline copy anyway, in warn mode. It gives the developer the answer minutes after they push instead of hours later at promotion, and a team that learns the outcome early rarely reaches the boundary with a surprise. This is also why "we already run the scanner in CI" is not an answer to "what blocks promotion?". Those are different controls at different tiers. ## The absence case For a blocking class, missing evidence has to be a failure, not a pass — otherwise deleting the evidence is the bypass, and the whole classification collapses. For the warn tier, missing evidence is simply a note; nothing rested on it. Say which behaviour you chose and why, because a gate that silently passes when its input is absent is the most common way a tiering scheme is defeated in practice. ## Telling the truth downstream The classification is also a reporting contract. When someone asks which controls ran on a release, only the blocking classes count. A warn-only check over self-asserted input should never appear in that list, no matter how green its history looks, because a check that cannot fail and whose input is authored by the constrained party is not evidence that anything happened. Keeping this line clean is unglamorous and it is the difference between a gate programme and paper compliance. The converse discipline: when a check is promoted from warn to block, that is a real change in what the organisation can claim, and it should be recorded as such rather than slipped in. ## How to talk about it in an interview The strong answer is structural rather than tool-shaped. Name the classification question, put each input in a tier, attach outcomes to tiers rather than to severities, explain that placement at the promotion boundary is what makes the blocking tier enforceable, and close on the honesty point — that only the blocking tiers may be reported as controls. A weak answer argues about which findings deserve a block while never asking where the finding came from.

  • A team argues their self-asserted check is equivalent because their pipeline is well run. How do you answer?
    Concede the intent and hold the class. Ask what has to be true for their check to go green wrongly — a skipped step, a stale file, a scanner exiting zero — and note that none of those require anyone to behave badly. The offer is not to remove their check but to add an independently produced one at promotion, leaving theirs as fast local feedback.
  • Why not simply block on everything and let teams complain?
    Because blocking on evidence the gated party authors buys enforcement you cannot rely on while spending all the political capital of a hard gate. You get the friction of enforcement and the assurance of a warning. Spend the blocking budget where the input can actually carry it.
  • What do you tell someone who wants the warn-tier checks listed as controls?
    That a check which cannot fail, over input written by the party it constrains, does not evidence that anything ran. List the blocking-tier checks, record the warn tier as coverage-in-progress, and give a date for promoting specific checks to blocking rather than relabelling them.

saying these in an interview costs you the question

  • Decides block versus warn from finding severity alone
  • Treats an in-pipeline check as equivalent to a promotion gate
  • Lets a blocking check pass when its evidence is absent
  • Reports warn-only self-asserted checks as controls that ran
  • Removes fast build-local feedback instead of demoting it to warn

context