Dispatch · delivery-promise error
generated 2026-10-09 18:21 UTC from the warehouse · every figure queried at build time
Actual delivery time minus the time that was promised, averaged per trip. Longer is worse. The dashed line is the pooled average, the single number a report would quote.
5.55 minutes apart. The pooled average sits between the two and describes neither: it reports a formula that is roughly +7.79 minutes optimistic, and hides that it is 2.2 times as wrong at one store as at the other.
Synthetic data. The events come from a seeded generator and defects are injected on purpose. The gap measures the store speeds written into that generator, not a real fleet. What this shows is that the pipeline finds a per-store difference that a single pooled figure would report as one problem.
NORTHGATE breached more often than RIVERSIDE on 14 of 14 days, so the gap holds from day to day rather than coming from one bad afternoon. Each column carries both figures on hover or keyboard focus; the end of each line is labelled regardless.
Every rate carries the trips it was computed from. Click or press Enter on a column heading to sort.
| Store | Trips | Mean signed | MAE | p50 | p90 | Breach |
|---|---|---|---|---|---|---|
| NORTHGATE | 11,083 | +10.16 | 11.20 | +7.08 | +25.22 | 82.5% |
| RIVERSIDE | 8,229 | +4.61 | 7.11 | +2.85 | +15.79 | 66.4% |
What the DAG moved on the run that produced this page.
Kafka is at-least-once, so redeliveries are expected. Collapsing them in silver is deduplication working, not data lost.
99.5% of trips carry a trustworthy duration. The rest are missing an event, and are excluded rather than guessed at.
| State | Trips | Share |
|---|---|---|
| complete | 19,902 | 99.5% |
| broken | 98 | 0.5% |
Each gate runs before the load, not after it. A failure stops the DAG rather than annotating a warehouse that already has the bad rows in it.
| Stage | Check | Verdict | Detail |
|---|---|---|---|
| bronze_to_silver | freshness | PASS | newest event is 1 day, 0:33:18.738184 old (limit 3 days, 0:00:00) |
| bronze_to_silver | reconciliation | PASS | 125264 in = 125264 accepted + 0 quarantined |
| silver_to_gold | fk:driver_id | PASS | all driver_id values resolve in dim_driver |
| silver_to_gold | fk:store_id | PASS | all store_id values resolve in dim_store |
| silver_to_gold | measurable_share | PASS | 19312/20000 trips measurable (96.6%) |
| silver_to_gold | not_null:trip_id | PASS | trip_id has no nulls across 20000 rows |
| silver_to_gold | row_conservation | PASS | fct_trip_x_dim_driver preserved all 20000 left rows |
| silver_to_gold | unique_key | PASS | trip_id unique across 20000 rows |
| silver_to_gold | volume_band | PASS | only 0 baseline day(s) - band not evaluated |