« Phase 26 README · Warmup · Hitchhiker's · Deep Dive · Principal Deep Dive · Core Contributor
Phase 26 — Staff Engineer Notes: Owning the Model Lifecycle
Anyone can log a run and register a version. The gap between using an MLOps stack and being trusted to own it is judgment about four things nobody hands you a default for: what the promotion gate's thresholds actually are, what counts as drift worth acting on, when to retrain versus investigate, and how to keep a monitoring system from becoming a harassment system. This doc is about that judgment and the signal that proves you have it.
The decisions a staff engineer actually owns here
The gate's thresholds are a risk posture, not a config default. You own the primary-metric margin (too tight and eval noise churns Production weekly; too loose and real regressions slip through), the guardrail tolerances (how much latency, fairness-slice recall, or calibration you will trade for a headline win — the answer is usually none past tolerance), and the required checks list (fairness audit, latency budget, security sign-off). The load-bearing property you enforce: a guardrail regression blocks even when the primary metric improves, and a missing check fails exactly like a failed one. These are the company's risk tolerance encoded as a pure function CI can run — and the gate's output is the sign-off package, because someone will ask, six months later, who promoted what and on what evidence.
Drift thresholds and cooldown are an alerting contract. PSI bands (0.1 investigate, 0.2 act) are the starting point, but you own the window size, the cooldown period, and the per-segment fan-out that keeps aggregate PSI from hiding a drifted subpopulation. The cooldown is not a nicety — it is the four lines that separate one ticket per sustained drift from four hundred pings and a permanently muted channel.
The retraining policy is a judgment about tempo. Scheduled when drift is roughly continuous or labels arrive on a cycle; triggered when you want to react to a threshold breach efficiently; continuous/online almost never, because it trades governance for freshness. And every retrain — no matter how it was triggered — re-enters through the same gate, because CT without a gate is continuous degradation, and retraining triggered by a data bug would otherwise ship the bug.
Tool selection is naming roles, not brands. Four roles — tracker, registry, orchestrator, monitor — and the résumé-checklist of six tools collapses to "which role does each fill." That is the answer that survives the company switching clouds.
The decision framework, out loud
- Alert fired — retrain or investigate? Always investigate first. Drift is a distribution statement, not a quality statement: benign covariate shift fires alarms while accuracy holds, and the "drift" might be your own pipeline sending cents instead of dollars. Check for training-serving skew and upstream data bugs before you trust the retrain.
- Green dashboard, angry customers — what do you check? Concept drift first (
P(y|x)moves with stable inputs; only delayed-label accuracy catches it), then skew (compare served features to training features), then coverage gaps (unmonitored features, segments averaged away, thresholds too loose, a bad re-baseline) — and confirm it isn't operational (Phase 14's territory) before blaming the model. - Is this a Phase 14 problem or a Phase 26 problem? Runtime health (tokens, latency, traces) is Phase 14; model correctness (versions, gates, distributions, realized quality) is here. A healthy service can serve a wrong model.
Naming the axis — distribution vs quality, world-moved vs pipeline-bug, service vs model — is the signal. "The dashboard is green so we're fine" is the anti-signal.
Code-review red flags
- A gate with no margin. Congratulations, you now promote noise weekly.
- Guardrails skipped because "AUC went up." That is how a 2× latency regression ships.
- A required check that passes because it never ran. Missing must fail like false.
- Monitoring inputs only. Concept drift walks straight past input monitoring; you need delayed-label quality tracking too.
- Auto-retrain wired directly to a drift threshold with no skew/data-bug interlock. One bad feed and you've baked the corruption in.
- A drift monitor with no cooldown. The channel gets muted, then the real incident is missed.
- Calling S3 a model registry. No stages, no invariant, no rollback, no registry.
- Re-baseline forgotten after promoting the retrained model. The monitor now forever compares live traffic to a reference the new model no longer represents.
- Logging only final metrics instead of the step history — the learning curve is half the diagnostic value.
War stories worth carrying
- The model "fine" for five months. All-green ops dashboards, rising complaints, no input drift — pure concept drift, fraudsters adapting to the model. Only the delayed-label accuracy tracker caught it. Input monitoring is necessary, never sufficient.
- The retrain that made everything worse. Distributions shifted, auto-retrain fired, quality dropped further — an upstream job had started writing cents instead of dollars, and retraining baked the bug in. The fix was a schema/range check that should have halted the pipeline.
- The alert channel everyone muted. No cooldown, 400+ pings in three days on the same sustained shift; team muted it; real incident missed two weeks later. One sustained drift, one ticket.
- The 40-minute rollback that should have been 40 seconds. No registry — "rollback" meant finding last quarter's artifact on someone's laptop. A registry makes rollback a pointer move.
The interview / architecture-review signal
What a reviewer listens for: do you keep the axes and the boundaries straight? ML changes on
three axes (code, data, model); the loop is monitor → trigger → retrain → track → register → gate →
promote → re-baseline. Can you write PSI from memory and state the 0.1/0.2 bands, explain why a
guardrail regression blocks despite a primary-metric win, define the four drift types by which
factor of P(x)P(y|x) moved and which need labels, distinguish drift from skew (and give the
opposite fixes), and draw the closed loop on a whiteboard? Candidates who can define a term are
common; the person who draws all the boxes and the arrows — and knows the sign-off package is what
the 2 a.m. investigation reads — is who gets handed "own our production ML" instead of "train models
and hand them over the wall."
Closing takeaways
- ML changes on three axes; app CI covers one. That gap is the entire reason MLOps exists.
- The gate is enforcement, not bookkeeping — margin, guardrail non-regression, required checks, all mandatory — and its output is the sign-off package.
- Drift is measured, not noticed, and drift ≠ damage. Investigate before you retrain; the cooldown is what keeps monitoring from becoming noise.
- The registry is a control system, not storage — versions, stages, the single-Production invariant, and rollback as a pointer move.
- Phase 14 says the service is healthy; this phase says the model is still right. Different failure modes, both mandatory. That is the staff signal.