QUIETZ

watching whether the data arrived rather than whether the server answered.

A feed that returns 200 and yesterday's numbers is healthy by every status check ever written, so this watches freshness and completeness instead. Every monitor is a row with an owner, a tolerance and a route, the Prometheus rules are generated from it, and the rules are unit tested in both directions: an alert fires when it should, and stays silent on a healthy feed, which is the half that decides whether anybody keeps reading. One replayed incident turns 24 alert firings into 2 notifications, measured against a real Alertmanager rather than reasoned about from the configuration.

Tests
41
Python
3.11 to 3.13
Release
v0.1.0
Licence
MIT

The demo, as it really ran

$ uv run python examples/what_gets_you_woken.py

4 monitors, and every one of them is a row somebody has to review.

  monitor                           owner           within   complete  goes to
  ecb_reference_rate_freshness      data-platform   1d       100%      oncall
  ecb_reference_rate_completeness   data-platform   2d       98%       data-platform
  ecb_yield_curve_freshness         research        2d       95%       data-platform
  ecb_bank_rates_completeness       research        3d       90%       none

  Only one of them wakes anybody, and the registry refuses to let that change by
  accident: a monitor that pages on a window longer than two trading days is rejected
  in the constructor, because waking somebody for a feed allowed to be three days late
  is how a rota learns to ignore the pager.

The windows are in TRADING days. From Friday 2026-08-28 to Monday 2026-08-31 is
  1 trading day, not 3, so a feed that publishes on business days is not late on a
  Sunday and nobody is woken for a weekend.

And when two of these feeds break and keep breaking:

  24 alert firings
  2 notifications a human receives
    oncall           1
    ticket           1

  The completeness alerts are absent on purpose. A feed that has not delivered at all
  cannot be incomplete in any interesting way, so it is suppressed while the freshness
  alert is firing: the same problem, restated.

Output captured on 2026-08-29. It is committed to the repository and a test fails when it stops matching a live run, so this page cannot quietly drift from the code it describes.

Read it

The rest of the toolset