feat: implement issue #2160 — GitHub drops about 60% of scheduled ticks here: give the budget poller a second cron slot and a staleness window that matches

Merged
DO
12d ago
+284-25

Problem

GitHub drops about 60% of scheduled ticks here: give the budget poller a second cron slot and a staleness window that matches

From the issue: The dry-run budget poller (.github/workflows/budget-poller.yml, merged in PR 2031) is scheduled hourly (17 * * * *) and is schedule-only by design (no workflow_dispatch, because a manual dispatch could run branch code that receives the Claude token). Its liveness rule warns when no OK record is newer than bp_stale_hours (default 3 hours), and the retry cron (#2139) ignores a record older than that same bound.

Risk

Medium — changes GitHub Actions workflow behavior, which is exercised only post-merge; verify via the affected workflow runs.

Test plan

Tests added/updated: tests/dev-lead/unit/test_budget_poller.bats. Verification: bash scripts/dev-lead-lint.sh (shellcheck --severity=warning) ran pre-commit; the bats suite runs in CI.

Rollback

Revert this PR. No non-revertible side effects (no tags, migrations, or external state).

Monitoring

Watch the affected workflow run(s) in the Actions tab and this PR's Lint check for regressions.

Closes #2160