War Story — Data Engineering

I Found Out Our Pipeline Was Lying to Us for 11 Days

All jobs were green. Tests passed. Dashboards looked healthy. Then we discovered $2.3M in contracts had been auto-renewed based on completely wrong analytics data.

Milo Antaeus · · free tool data quality silent failure

🛑 The silent failure problem: Traditional pipeline monitoring alerts you when a job crashes. It does not alert you when a job succeeds — with the wrong data. And that's the failure mode that costs real money.

It started like most Monday mornings. Green lights across the board. Our Airflow DAGs had been running without a single red X for two weeks straight. Our dbt models compiled clean. Metabase dashboards loaded on time. Everyone was happy.

Then our Head of Revenue asked a simple question: "Why did our enterprise renewal rate jump 34% this quarter?"

We didn't know. We had no answer. And that scared us more than any pipeline error ever had.

The Day the Green Lights Lied

We dug into the data. What we found was a cascade of silent failures that had been compounding quietly since our last successful deploy — 11 days earlier.

Here's what actually happened:

  1. Day 1: Our primary CRM vendor quietly changed the default value for a contract_status field from NULL to "active" in their v3.2 API release notes. We didn't read release notes. Nobody does.
  2. Days 1–4: Our ingestion pipeline kept running. The schema looked the same. The field names were identical. The job succeeded with exit code 0.
  3. Days 5–8: Our transformation layer counted WHERE contract_status = 'active' — catching both genuine renewals and rows that were NULLs silently promoted to "active." Our renewal metric inflated by 34%.
  4. Days 9–11: Executives saw the dashboards. The numbers looked great. Contracts were auto-renewed based on what the data said was a healthy pipeline.
  5. Day 12: We got the question. By then, the wrong data had already driven real business decisions.

The number that haunts me: Enterprises lose an estimated $12.9 million annually from data downtime and quality degradation. Most of it — like ours — comes from silent failures, not crashes. The jobs don't fail. The data does.

What We Should Have Had: A Silent Failure Detector

After that incident, I sat down and built what we needed. Not another dashboard. Not another alert on job completion. Something that watches the data itself for the signs of silent corruption:

The tool I built runs as a lightweight validation layer between your pipeline's output and your warehouse. It takes a sample of your production data state, computes a statistical fingerprint, and alerts you when that fingerprint changes — without waiting for a crash.

data-pipeline-silent-failure-detector
free · open reference · self-hosted

A practical validation layer for data teams who are tired of finding out about pipeline lies from their revenue dashboards.

What it checks: schema drift, null-promotion patterns, row-count anomalies, statistical distribution shifts, and contract violations — on every pipeline run, not just when jobs crash.

What it does when it finds something: alerts you with a plain-English explanation of what changed, what it affects, and what rows are impacted — so you're not debugging blind.

⚡ Try It (Free)

You can run the detector against any dbt project, Airflow DAG output, or raw warehouse table in under five minutes:

  1. Point it at your warehouse connection (BigQuery, Snowflake, Redshift, Postgres) — fingerprint_config.yaml handles the connection
  2. Define the tables and columns you care about — target_models: list in the config
  3. Set your alert channel — Slack webhook, email, or PagerDuty — alert: block in notification.yaml
  4. Run python -m silent_failure_detector --baseline to establish your fingerprint
  5. Run python -m silent_failure_detector --check on every pipeline completion or via cron
  6. When drift is detected, you get a structured alert before the data reaches your dashboards

Why I Built This Instead of Just Fixing the Incident

After the 11-day incident, we did the usual: added more tests, added more monitoring dashboards, scheduled more manual reviews. Three months later, a different silent failure slipped through. Same pattern. Different field. Same silence.

The fundamental problem isn't that pipelines are fragile. It's that success signals are lying to us. An exit code of 0 tells you the code ran. It tells you nothing about whether the data is right.

The only reliable signal for data correctness is the data itself — its shape, its distribution, its relationship to what came before. That's what the silent failure detector watches.

What to Do If You're Reading This After a Similar Incident

  1. Stop trusting green lights. If your pipeline "looks healthy," that's meaningless. Your next action is to validate the data, not the job status.
  2. Check for null-promotion bugs. Run a quick query: SELECT field, COUNT(*) WHERE field IN ('N/A', 'none', 'unknown', 'default') GROUP BY 1 and compare to 30 days ago.
  3. Read your upstream API changelogs. I know. Nobody does this. But the vendors are changing their defaults right now, while you're reading this.
  4. Set up a baseline fingerprint. Take a snapshot of your key metrics' statistical profiles today — before the next silent failure happens to you.

The rule I follow now: A pipeline that completes successfully is a necessary condition for correct data. It is never a sufficient condition. Treat it accordingly.


Want to Build Your Own Silent Failure Detector?

If you're a data engineer or analytics lead who's been burned by this — you already know the cost. The free reference approach above is a starting point. The key principles are:

Need a Fast-Track Build?

If you'd rather have a working silent failure detector built and deployed — rather than building it from scratch — reach out. I've built and battle-tested this pattern across multiple data stacks. First consultation is free.

Talk to Milo →

Silent failures are not a monitoring problem. They're a data quality problem. And data quality problems need data-native solutions — not more dashboard decoration.

The green light isn't the truth. The data is the truth. Start watching the data.