skip to content

Which catch-up levers should an estate pre-authorise for whoever is on call, and which should still require the stream's owner?

level: principalimportance: should knowfreq 38%

answer

  1. the line is correctness, not danger
  2. cost and latency versus results
  3. decide calmly, apply quickly
  4. per-stream, with the ownership record
  5. permission without headroom is theatre

basics

~20 s

Pre-authorise the levers that change only cost and latency — adding members to the ceiling, enlarging batches within a stated bound. Anything that changes what the system computes, such as waiving in-order handling, needs a per-stream answer recorded by its owner before the incident, not improvised during one.

solid answer

~40 s

The line is correctness, not risk appetite. Adding reader instances and taking more records per request alter throughput, spend and per-record latency; they can be reversed and they change no result, so whoever is on call should be able to pull them without waking anyone. Waiving in-order handling changes what the system computes and depends on whether each stream's handler tolerates it — a question its owner can answer calmly in advance and nobody can answer well at three in the morning. The artefact is a short per-stream statement, kept with the stream's ownership record and reachable from the alert: what may be traded, within what bounds, and what must be put back afterwards. Pre-authorisation is also worthless without reachable capacity, so headroom has to exist or be purchasable at the time.

go deeper

for a junior

Know that some catch-up actions are yours to take and some are not, and that the boundary is whether the action changes results rather than how risky it feels.

for a middle

Be able to sort the levers into the two tiers and justify the sort: throughput and latency on one side, what the system computes on the other. Say where the answer should be written down.

for a senior

Argue from incident time: approval costs minutes a racing drain does not have, so reserve it for decisions that genuinely need the owner's knowledge of what the records mean.

for a principal

Own the estate-wide shape — a consistent per-stream statement, reviewed with ownership, plus the budget call on whether recovery headroom stands by or is bought at the time. Permission without capacity changes nothing.

Every drain is run under time pressure by someone who did not design the stream. The purpose of pre-authorisation is to move the decisions that need thought out of that moment and into a calm one, and the useful dividing line is not how dangerous a lever feels but whether pulling it changes what the system computes. ## Two tiers, drawn on correctness 1. **Reversible and result-neutral — pre-authorised.** Adding reader instances up to the parallelism ceiling, and raising how many records a reader takes per request within a stated bound. These change throughput, spend and per-record latency. They can be undone. No downstream result differs because they were pulled. An operator asking permission for these is wasting the only resource the incident is short of. 2. **Result-changing — the stream owner's call, made in advance.** Waiving in-order handling to unlock parallelism, and diverting records that block progress to a side destination. Whether either is acceptable depends entirely on what the records mean and what the handler does with them, which the on-call engineer usually does not know. The answer can and should be written down long before it is needed. A third category exists and is not a drain lever at all: anything that moves the reader group's recorded read position changes which records are ever handled, and belongs with the stream's owner as a decision in its own right. ## What the artefact looks like A per-stream statement, short enough to be read during an incident and stored where the alert points, not in a design document nobody opens: - **Maximum members** it is worth starting, and whether that is bounded by the stream's shape or by a shared downstream system. - **Batch bound** — the largest records-per-request value that has been tested against the progress deadline, and whether it must be put back afterwards. - **Ordering waiver** — permitted, permitted with conditions, or not permitted, with one sentence of reasoning that survives the person who wrote it. - **The owner to call** when the arithmetic says the backlog cannot be drained intact. - **Expected drain rate per member**, so an on-call engineer can compute the surplus without instrumenting the system first. | Lever | Who decides | When | |---|---|---| | More members to the ceiling | On call | During the incident | | Larger batches within bound | On call | During the incident | | Waiving in-order handling | Stream owner | Recorded in advance | | Diverting blocked records | Stream owner | Recorded in advance | | Moving the recorded read position | Stream owner | Its own decision, never incidental | ## Why this is a principal's problem rather than a runbook's Three reasons the list cannot simply be delegated to each team. - **Consistency across an estate.** If one stream permits an ordering waiver and the next silently does not, on-call engineers rotating across both will eventually apply the wrong default. The shape of the statement has to be the same everywhere even though its contents differ. - **It expires.** A waiver reasoned about a handler that has since been rewritten is worse than no waiver, because it carries authority it no longer deserves. The statement belongs to the stream's ownership record and is reviewed when ownership changes. - **Authorisation without capacity is theatre.** Permission to add members buys nothing if there is no headroom to add them into and no path to purchase it at three in the morning. Deciding whether recovery headroom is a standing cost or an on-demand purchase is a budget decision, and it is the one that actually determines whether the surplus in the arithmetic can be reached. ## The failure this prevents The characteristic bad outcome is not an operator who hesitates; it is an operator who does not. Under pressure, with a gap climbing and a retained window somewhere ahead, the tempting move is the one that unlocks the most parallelism fastest — and on many streams that move quietly changes results in ways nobody notices for weeks. Pre-authorisation is what makes the fast levers genuinely fast and the dangerous one genuinely a decision. It also has a side benefit: writing the statement forces someone to work out whether the stream's handler actually depends on order, and that question has a way of surfacing assumptions that were never true. ## What stays out of it This is a per-stream operating agreement about what may be traded for throughput. How far a gap may grow before anyone is woken, and how much unavailability the service is allowed to accumulate, are different documents owned elsewhere. Mixing them produces a page nobody reads.

  • Why not simply require approval for every lever during an incident?
    Because approval costs the one thing a drain is short of. A gap racing a retained window is a timed problem, and waiting twenty minutes for someone to confirm that starting more readers is acceptable spends budget for no information — nothing about that decision needed the owner's knowledge. Reserve the interrupt for the levers where the owner genuinely knows something the operator does not.
  • How do you keep the per-stream statement from going stale?
    Attach it to the stream's ownership record rather than to a runbook, so it is reviewed whenever ownership changes or the stream is re-registered, and require one sentence of reasoning rather than a bare yes or no. Reasoning that no longer matches the handler is visibly wrong to the next reader; a bare permission is not.
  • What single number makes the statement most useful during an incident?
    The expected drain rate per member. With it, an on-call engineer computes the surplus and the catch-up time in a minute, decides whether the plan closes before the retained window, and knows immediately whether this is a routine drain or a call to the owner. Without it, the first half hour goes into measuring what somebody already knew.

saying these in an interview costs you the question

  • Requires owner approval for every lever, including harmless ones
  • Lets on call waive in-order handling to move faster
  • Writes the policy once and never revisits it after rewrites
  • Grants permission to scale out with no reachable headroom
  • Mixes drain policy with alert thresholds into one unread page
  • Treats moving the recorded read position as just another drain lever