Controls
Every check the latest run executed against the warehouse, with what it saw and what it required. Hard controls block the run; soft controls report and let it through.
1 failing
Controls run
34
run 20260827T140302001Z
Hard
25
a failure blocks the run and may trigger a repair
Soft
9
a failure is reported, never automatically acted on
Failing now
1
see below
Source systems
7 feedsStaged rows
what the ingest stage has loaded| stg_appointment | 76,235 |
| stg_payment | 56,501 |
| stg_cancellation_entry | 13,239 |
| stg_cancellation_total | 175 |
| stg_expense | 2,531 |
| stg_vendor_payment | 1,489 |
freshness
A feed that stopped arriving, judged against a per-feed SLA on the business clock.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| freshness.booking_legacy | hard | newest row 2027-12-29 (0h old) | within 26h | pass |
| freshness.booking_acquired | hard | newest row 2027-12-29 (0h old) | within 26h | pass |
| freshness.square_settlements | hard | newest row 2027-12-29 (0h old) | within 26h | pass |
| freshness.stripe_payouts | hard | newest row 2027-12-28 (24h old) | within 26h | pass |
| freshness.expenses | soft | newest row 2027-11-30 (696h old) | within 960h | pass |
| freshness.vendor_payments | soft | newest row 2027-12-29 (0h old) | within 960h | pass |
| freshness.cancellation_log | soft | newest row 2027-12-29 (0h old) | within 960h | pass |
volume
Row count against the trailing median, with a robust band — one spike must not widen it.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| volume.booking_legacy | soft | 46 rows on 2027-12-29, median 53 | within 6 MAD of the trailing median | pass |
| volume.booking_acquired | soft | 32 rows on 2027-12-29, median 40 | within 6 MAD of the trailing median | pass |
| volume.square_settlements | soft | 50 rows on 2027-12-29, median 58 | within 6 MAD of the trailing median | pass |
control total
Typed totals on a sheet against the rows beneath them, and warehouse counts against the ingest log.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| control_total.rows_staged | hard | 150,170 rows staged | 150,170 rows recorded by the loader | pass |
| control_total.fee_plausibility | hard | every processing fee is below the amount that moved | no fee larger than its payment | pass |
| control_total.amount_scale | hard | every charge is within the price list | no single charge above $14,400.00, the priciest package the business sells | pass |
nulls
Required columns arriving empty.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| nulls.stg_appointment | hard | 76,235 rows, no nulls in required columns | no nulls in 7 required columns | pass |
| nulls.stg_payment | hard | 56,501 rows, no nulls in required columns | no nulls in 8 required columns | pass |
| nulls.stg_expense | hard | 2,531 rows, no nulls in required columns | no nulls in 5 required columns | pass |
| nulls.stg_vendor_payment | hard | 1,489 rows, no nulls in required columns | no nulls in 4 required columns | pass |
| nulls.stg_cancellation_entry | hard | 13,239 rows, no nulls in required columns | no nulls in 3 required columns | pass |
duplicate keys
Identifiers that must be unique, and are not.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| duplicate_keys.stg_appointment | hard | appointment_id unique across 76,235 rows | appointment_id unique | pass |
| duplicate_keys.stg_payment | hard | payment_id unique across 56,501 rows | payment_id unique | pass |
| duplicate_keys.stg_expense | hard | expense_id unique across 2,531 rows | expense_id unique | pass |
| duplicate_keys.stg_vendor_payment | hard | payment_ref unique across 1,489 rows | payment_ref unique | pass |
rejects
Rows a parser refused. Every row of every live file must be accounted for.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| rejects.unread_rows | hard | every row of all 385 live files was read | no unreadable rows | pass |
referential
Location, service and GL codes the reference data has never heard of.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| referential.location_id | hard | all recognised | every location_id in the location master | pass |
| referential.service_code | hard | all recognised | every service_code in the service catalogue | pass |
| referential.gl_code | hard | all recognised | every gl_code in the chart of accounts | pass |
ledger
The arithmetic identities the books must satisfy.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| ledger.cash_revenue_identity | hard | $33,349,445.00 cash - $30,674,788.57 revenue = $2,674,656.43 deferred | cash - revenue = deferred liability, to the cent | pass |
| ledger.deferred_roll_forward | hard | 175 clinic-months roll forward exactly | opening + collected - released = closing | pass |
| ledger.recognition_causality | hard | all 13,801 sessions delivered on or after their sale | a session is never delivered before its package is sold | pass |
| ledger.single_recognition_per_visit | hard | 54,552 visits earn revenue exactly once | no visit appears in the ledger twice | pass |
| ledger.tips_excluded | hard | $1,078,100.00 in tips held out of revenue | no recognition includes a tip | pass |
| ledger.unexplained_cash | soft | 7 charge(s), $700.00 (under 0.01% of cash in) | under 1% of cash unexplained | pass |
recon
Whether the amount of disagreement is itself within tolerance.| Check | Severity | Observed | Required | Result |
|---|---|---|---|---|
| recon.contested_share | soft | $3,747,797.50 contested against $30,674,788.57 (12.22%) | under 12% of revenue contested | FAIL |
| recon.vendor_resolution | soft | 1 spelling(s), $443,572.20 (3.01% of supplier spend) | under 5% of supplier spend unattributed | pass |