feat(health): register backups SLA and destination checks with core central health #23

Merged
KofTwentyTwo merged 5 commits from feature/health-checks into develop 2026-10-15 03:05:13 +00:00
KofTwentyTwo commented 2026-10-14 20:01:01 +00:00 (Migrated from github.com)

Summary

Registers the backups SLA check and one destination check per active plan with the core health registry. This replaces BackupsHealthIndicator, which plugged into the old qqq-middleware-health SPI.

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

  • backups.sla: DEPENDENCY/STORAGE, 900s. Reads the persisted slaStatus, which backupCheckSla keeps computing as before. A critical plan that is LATE, FAILING or MISSING_IN_STORAGE is DOWN. A non-critical plan in those states is DEGRADED. If the only states are UNVERIFIED or UNKNOWN, the check is UNKNOWN. Details are counts per status.
  • backups.destination.<planId>: DEPENDENCY/STORAGE, daily, 30s timeout, one per active plan. Runs DestinationProbe in read-only list/head mode: no writes, no deletes.

Removed or changed: BackupsHealthIndicator, its test, and the optional qqq-middleware-health dependency.

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

10 new health tests; 170 tests in total pass. Coverage is 87.9% of instructions and 97.1% of classes. The MinIO container tests were excluded locally. Checkstyle reports this repo's existing header-template mismatch, which this PR does not change.
Local build: ./mvnw -o verify -Denforcer.skipRules=requireReleaseDeps against RC.8.

Codex implemented this from the spec. I reviewed it.

🤖 Generated with Claude Code

## Summary Registers the backups SLA check and one destination check per active plan with the core health registry. This replaces `BackupsHealthIndicator`, which plugged into the old `qqq-middleware-health` SPI. 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** - `backups.sla`: DEPENDENCY/STORAGE, 900s. Reads the persisted `slaStatus`, which `backupCheckSla` keeps computing as before. A critical plan that is LATE, FAILING or MISSING_IN_STORAGE is DOWN. A non-critical plan in those states is DEGRADED. If the only states are UNVERIFIED or UNKNOWN, the check is UNKNOWN. Details are counts per status. - `backups.destination.<planId>`: DEPENDENCY/STORAGE, daily, 30s timeout, one per active plan. Runs `DestinationProbe` in read-only list/head mode: no writes, no deletes. **Removed or changed:** `BackupsHealthIndicator`, its test, and the optional `qqq-middleware-health` dependency. 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 10 new health tests; 170 tests in total pass. Coverage is 87.9% of instructions and 97.1% of classes. The MinIO container tests were excluded locally. Checkstyle reports this repo's existing header-template mismatch, which this PR does not change. Local build: `./mvnw -o verify -Denforcer.skipRules=requireReleaseDeps` against RC.8. Codex implemented this from the spec. I reviewed it. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.