v0.7.0 — source health monitoring
What's new
- Tracked boards now report whether they are actually answering. Every fetch records a per-source status:
ok,empty,slug not found,gated,rate-limited,vendor error,unreachable,unreadable payload. - A "Quiet sources" card at the top of
/companieslists boards that failed three ticks in a row (Failing) or stayed reachable but returned no posting for 14 days (Silent), each with one-click Re-probe to repair — a clean probe clears the streak. - A health dot on every company row, read from the board's raw output rather than from stored jobs, so a strict profile filter never looks like a broken board.
- Optional line in the daily Telegram digest naming sources that went quiet (
/settings→ Notifications → "Source health alerts", default on). - Turning this on immediately surfaced two boards in this deployment that had been failing silently:
GREENHOUSE:pleo(moved to Ashby) andLEVER:plaid.
Schema
20260831170000_add_source_health— additive:Company.lastFetchStatus,Company.consecutiveFailures,Company.lastOkAt,AppSettings.sourceHealthAlerts.
Verification
563 tests pass, tsc --noEmit clean; migration applied in-container; smoke ran a planted bad slug through three ticks (streak 1→2→3, threshold warning fired, row restored); every route 200, screenshots at 1200px and 375px, 0 console errors. npm run test:telegram skipped — escaping covered by unit tests.
References
- ADR 0019 — source health is a per-company streak;
emptyresets it but does not prove health - ADR 0016 — its deferred board-feed-vanish item was designed here and deferred again, with the gate written down
- Plan:
docs/feature-expansion-plan.md§5 (F4) — PR #30