Skip to content

Per-provider health status (last search / last successful download / active gate) and a provider test that exercises the download path #185

Description

@Svnow132

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions