Gate backfills with the safety check hook
Wire the Backfill Safety Check as a pre-run gate that refuses any backfill lacking an explicit date range, a shadow or snapshotted target, and a window clear of the scheduled production run — and watch it block the bare backfill command that would otherwise corrupt the target.
At a glance
| When | Any historical recompute of a production table; A backfill trigger lacks a rollback path or overlaps the daily run |
|---|---|
| Where | Airflow / Orchestration |
| Why | The cheapest backfill incident is the one denied before it starts — a pre-run block costs seconds, a corrupted target costs days. |
Learning objectives
- Install a pre-run gate that intercepts backfill triggers
- State the three requirements the hook enforces before any backfill
- Recognize a denied bare backfill command and what it was missing
What you need
- A scheduler or wrapper that triggers backfills
- The daily production schedule for the target DAG
- A shadow table or snapshot procedure for the target
Steps
- Set the trigger to pre-run so the check intercepts a backfill trigger. (from hook-backfill-safety-check )
- Require an explicit date range. (from hook-backfill-safety-check )
- Require a target that is either a shadow table or snapshotted. (from hook-backfill-safety-check )
- Require a window that does not overlap the scheduled production run. (from hook-backfill-safety-check )
- Deny the trigger otherwise — failure behavior is block. (from hook-backfill-safety-check )
- Confirm the gate: a bare `airflow dags backfill --start-date 2024-01-01` is denied for missing a range and rollback. (from hook-backfill-safety-check )
Check yourself
- A bare `airflow dags backfill --start-date 2024-01-01` is denied for missing a range and rollback.
- A trigger with an explicit range, a snapshotted target and an off-peak window passes the pre-run check.
Worked example
Pre-run gate requirements — from hook-backfill-safety-check
Intercepts a backfill trigger. Requires: an explicit date range, a target that
is either a shadow table or snapshotted, and a window that does not overlap the
scheduled production run. Denies otherwise.
Bare backfill command the gate denies — from hook-backfill-safety-check
airflow dags backfill --start-date 2024-01-01
Compliant trigger with an explicit range — from runbook-backfill-required
airflow dags backfill --start-date YYYY-MM-DD --end-date YYYY-MM-DD --reset-dagruns dag_id
Sourced from
Security scan
Last sweep 2026-10-24: 0 finding(s), 0 marked as examples.
Common gotchas
- Never overlap the production window; never backfill without a rollback path.
- An explicit date range alone is not enough — the target must be a shadow table or snapshotted.
- Passing the gate is not the finish line — backfill in date batches, smallest first, validating a sample after each batch.
Production considerations
- failure_behavior is block — the hook denies the trigger instead of warning.
- Document a backfill runbook per pipeline, with its idle window and resource budget.
Diagram
backfill trigger
|
|- pre-run gate --> explicit date range? --> no --> block
|
|- shadow or snapshotted target? --> no --> block
|
|- window clear of daily run? --> yes --> run batches, validate samples
Registry stats
| Verification | community · Oct 21, 2026 |
|---|---|
| Completeness | 81 |
| Trust multiplier | ×1.25 |
| Composite | 34.15 · adequate |
| Freshness | 3 days since last source check |
| Difficulty | intermediate |
| Version | 0.1.0 |
| License | CC-BY-4.0 |
| Security flags | none |
Did this solve your problem?
Gate backfills with the safety check hook