Summary
Give the Providers page a live per-provider health rollup — last search, last successful download, and which gate (auth/breaker/budget/pool) is currently blocking it — plus a Test button that performs a real download, not just a search.
What problem does this feature solve?
Provider failures are invisible at the fleet level. On our install (see #NN), searches succeeded for 3 days while every download 401'd on an expired token, and ~20 providers were silently skipped by budget/pool gates — the UI showed nothing wrong anywhere. The per-item decision log is excellent for one item, but there is no rollup answering: "which providers are actually participating right now, and which are gated, and why?"
The search/download split matters specifically: a provider can pass every search while its download path is dead (that asymmetry is #NN Bug 1), so any health signal built only on searches shows green through the failure.
What do you propose?
On the Providers page, per provider:
- last search time and last successful download time as separate columns
- current gate state, live: ok / auth-expired / circuit-breaker open / budget-denied / no-pool-key / rate-limited / auto-disabled
- a Test button that exercises search and a real download of one result (content discarded afterwards, no history written) — a search-only test passes while the download path is dead
The data mostly exists already (provider_stats, circuit breakers, the decision-log skip reasons) — this is a surfacing feature more than a new subsystem.
Alternatives considered
- Per-item decision log ("why was nothing found?") — great forensics, but one item at a time, after the fact; it never shows the fleet.
- Log grepping — how we actually found everything in #NN; requires shell access and knowing which messages to look for (several gates log at DEBUG only).
- External monitoring — can probe the HTTP endpoint but cannot see internal gate states (budget, pool, breaker) at all.
Summary
Give the Providers page a live per-provider health rollup — last search, last successful download, and which gate (auth/breaker/budget/pool) is currently blocking it — plus a Test button that performs a real download, not just a search.
What problem does this feature solve?
Provider failures are invisible at the fleet level. On our install (see #NN), searches succeeded for 3 days while every download 401'd on an expired token, and ~20 providers were silently skipped by budget/pool gates — the UI showed nothing wrong anywhere. The per-item decision log is excellent for one item, but there is no rollup answering: "which providers are actually participating right now, and which are gated, and why?"
The search/download split matters specifically: a provider can pass every search while its download path is dead (that asymmetry is #NN Bug 1), so any health signal built only on searches shows green through the failure.
What do you propose?
On the Providers page, per provider:
The data mostly exists already (provider_stats, circuit breakers, the decision-log skip reasons) — this is a surfacing feature more than a new subsystem.
Alternatives considered