feat(health): register assistant provider and model checks with core central health #45

Merged
KofTwentyTwo merged 7 commits from feature/health-checks into develop 2026-10-15 03:08:15 +00:00
KofTwentyTwo commented 2026-10-14 18:40:31 +00:00 (Migrated from github.com)

Summary

Registers one health check per enabled assistant provider and per enabled model. The circuit breaker reuses the central result instead of probing local hosts a second time.

This is the qbit side of QQQ central health monitoring (spec docs/specs/HEALTH.md, QRun-IO/qqq#1199; kernel QRun-IO/qqq#1207).

Checks registered

  • assistant.provider.<id>: DEPENDENCY/AI, every 300s (60s for local hosts: Ollama, LM Studio, vLLM, llama.cpp), using checkHealth. Providers without a probe use the persisted breaker state if it is under 10 minutes old, otherwise UNKNOWN.
  • assistant.model.<id>: DEPENDENCY/AI, every 6h with a 30s timeout. It makes the minimal connection-test call. Usage is recorded as TEST, and the provider cost cap applies (UNKNOWN "skipped: cost cap").

Removed or changed: the home's own provider health and last-test indicators. The home now shows a generic status card that reads central health. The Test connection actions, the lastTest* fields and the breaker are kept. There is also a separate one-line fix: forwarded UI API headers are set instead of appended, which QQQ 4.1 develop requires.

Secrets, credentials, recipients, prompts and PHI never go into details. A sentinel test covers every check's failure paths.

QQQ 4.1.0-RC.8

This PR pins QQQ 4.1.0-RC.8, which ships the central health kernel (QRun-IO/qqq#1207), and merges in develop (help bundles, foreign keys). The merge conflicts are resolved so that both sides are kept.

Tests

12 new health tests; 389 tests in total pass across 7 modules. One pgvector test is skipped because it needs Docker. The repo's existing checkstyle config is unchanged and passes.
Local build: ./mvnw -o verify against RC.8.

Codex implemented this from the spec. I reviewed it and reverted unrelated changes Codex had made to the checkstyle config, the pom and imports.

🤖 Generated with Claude Code

## Summary Registers one health check per enabled assistant provider and per enabled model. The circuit breaker reuses the central result instead of probing local hosts a second time. This is the qbit side of QQQ central health monitoring (spec `docs/specs/HEALTH.md`, QRun-IO/qqq#1199; kernel QRun-IO/qqq#1207). **Checks registered** - `assistant.provider.<id>`: DEPENDENCY/AI, every 300s (60s for local hosts: Ollama, LM Studio, vLLM, llama.cpp), using `checkHealth`. Providers without a probe use the persisted breaker state if it is under 10 minutes old, otherwise UNKNOWN. - `assistant.model.<id>`: DEPENDENCY/AI, every 6h with a 30s timeout. It makes the minimal connection-test call. Usage is recorded as TEST, and the provider cost cap applies (UNKNOWN "skipped: cost cap"). **Removed or changed:** the home's own provider health and last-test indicators. The home now shows a generic status card that reads central health. The Test connection actions, the `lastTest*` fields and the breaker are kept. There is also a separate one-line fix: forwarded UI API headers are set instead of appended, which QQQ 4.1 develop requires. Secrets, credentials, recipients, prompts and PHI never go into details. A sentinel test covers every check's failure paths. ## QQQ 4.1.0-RC.8 This PR pins QQQ 4.1.0-RC.8, which ships the central health kernel (QRun-IO/qqq#1207), and merges in develop (help bundles, foreign keys). The merge conflicts are resolved so that both sides are kept. ## Tests 12 new health tests; 389 tests in total pass across 7 modules. One pgvector test is skipped because it needs Docker. The repo's existing checkstyle config is unchanged and passes. Local build: `./mvnw -o verify ` against RC.8. Codex implemented this from the spec. I reviewed it and reverted unrelated changes Codex had made to the checkstyle config, the pom and imports. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.