Skip to content

Public health report: an unconfigured model estate should read disabled, not unavailable #682

Description

@jrosseel

Context

The public health report from #673 classifies model routing as unavailable when LiteLLM is reachable but has no registered models. A freshly installed silo with no provider credentials is not broken — it is unconfigured, the same state integrations: disabled already expresses.

This matters because the k3d smoke has no provider credentials, so it could never satisfy a gate that required models: available. Two workarounds were tried and rejected:

  • Seeding a placeholder provider key made the server fetch byok-provider-key-openai through the Kubernetes API at startup and exit fatally when that call failed on the loaded CI runner, turning one unavailable probe into a CrashLoopBackOff (evidence: run 32256272448).
  • The smoke now asserts the report as-is and permits models: unavailable, which keeps every other probe strict but leaves model routing uncovered in CI.

What to do

  1. Report disabled when no model is configured at all, distinct from unavailable when a configured estate cannot be reached. LiteLLM answers GET /model/info with 500 on an empty estate, so the probe needs to distinguish "no models registered" from "LiteLLM unhealthy" — likely by treating a reachable LiteLLM with an empty model list as disabled and only a transport/auth failure as unavailable.
  2. Restore the strict status == "ok" assertion in apps/_infra/deploy-k8s/platform/tests/develop-smoke.sh once the report can reach a fully non-degraded state without provider credentials.
  3. Separately: a transient Kubernetes API failure while reading a BYOK Secret at startup should be retried rather than exiting the process. A single API blip currently costs a full pod restart cycle.

Pointers

  • apps/opencrane/src/infra/health/public-health.ts (_CreateModelHealthProbe wiring)
  • apps/opencrane/src/infra/health/public-health-probe.ts (_HttpHealthProbe, _UnavailableHealthProbe)
  • apps/_infra/deploy-k8s/platform/tests/develop-smoke.sh (_assert_ingress_health)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions