krz/omaha-metro-blotter

Archive of police activity and ALPR surveillance across the Omaha metro.

clone: git clone https://gitbay.org/krz/omaha-metro-blotter.git

f5ea97189e452cff008a8ebbf2f8068ada0bbbc1

verified · cmc

author: Christian Cleberg <hello@cleberg.net> · 2026-08-23T21:25:49Z

Scope the staleness check to the live feeds

opd_archive is closed years ending 2021-12-31, so it is permanently
"stale" and failed the pull job on every run — the check still
excluded the old name, opd_csv. The archive published before the check
ran, so nothing was lost, but the site job was skipped.

Switched from an exclusion to an allowlist of the three live feeds:
adding another backfill source can no longer turn this into a standing
failure.
 .github/workflows/daily-pull.yml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/daily-pull.yml b/.github/workflows/daily-pull.yml
index 1d9a963..d53d155 100644
--- a/.github/workflows/daily-pull.yml
+++ b/.github/workflows/daily-pull.yml
@@ -186,9 +186,12 @@ jobs:
       # raise the alarm without also blocking the archive from being published.
       - name: Check the feeds are still moving
         run: |
+          # An allowlist, not an exclusion: naming the live feeds means adding a
+          # backfill source cannot quietly turn this into a permanent failure,
+          # which is exactly what renaming opd_csv to opd_archive did.
           sqlite3 -noheader "$DB" \
             "SELECT source || ' ' || MAX(occurred_at) FROM incidents
-             WHERE source <> 'opd_csv' GROUP BY source
+             WHERE source IN ('opd', 'sarpy', 'cbpd') GROUP BY source
              HAVING MAX(occurred_at) < datetime('now', '-7 days')" > stale.txt
           if [ -s stale.txt ]; then
             while read -r line; do echo "::error::feed is stale: $line"; done < stale.txt