Why data incidents deserve the same discipline as application incidents, and how to bound autonomy safely.
When a software application goes down, someone notices within minutes: a page fails to load, an alert fires, a customer complains. When a data product breaks, the failure is usually silent. A source schema changes upstream, a join starts fanning out, a feature drifts, and the system keeps running, just wrong. The assistant still answers. The agent still acts. Both are now quietly incorrect, and the first sign is often a business decision made on bad numbers, weeks later.
This is why "ship it and walk away" fails for data products in exactly the way it fails for application services, and why treating deployment as the finish line is a mistake regardless of how good the build was.
Application on-call works because someone (or something) is watching for a defined signal, has enough context to diagnose quickly, and has a bounded set of safe actions to take. Data products need the same three things: monitoring that ships with the product from day one, enough lineage and manifest context to diagnose without archaeology, and a clear, bounded answer to "what is this system allowed to do about it."
Full autonomy sounds appealing until you consider what "the system silently rewrote a production pipeline" looks like in a postmortem. The safer default is bounded:
The key word is bounded. Autonomy is scoped to incident classes that have been seen before and validated, not granted as a blanket capability.
A CRM source changes a field name upstream. A freshness check fails against the manifest's SLO. The system traces the failure causally: this pipeline reads that field, the field disappeared at this commit, the join downstream is what broke. A fix is prepared: the mapping is updated, and a new version of the data product is built, not a patch applied in place. That new version runs through the same validation the original build did, the same thresholds, the same checks. Only then does it deploy, and the incident closes with the cause, the fix, and the proof all attached to the record.
The detail that matters most: a fix is never applied in place. It's a new, versioned build that passes the same recipe as the original. That's what keeps production from slowly drifting away from what the manifest says it should be.
Want the full reference, or ready to see it on your own data?
See how operation works