health: crm.email reports DEGRADED when the transport is not configured; should be UNKNOWN #19

Open
opened 2026-10-15 04:56:15 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-10-15 04:56:15 +00:00 (Migrated from github.com)

Found while fixing QRun-IO/qbit-slack#13. qbit-slack's health indicator reported an unconfigured Slack app as DOWN, which failed kof22's readiness probe.

CrmHealthChecks.email() returns DEGRADED when CrmReadiness.NOT_CONFIGURED. That's not DOWN, so readiness probes are safe (200). But the core HEALTH spec (section 3.2) reserves UNKNOWN for "not configured".

Suggested changes:

  • Return HealthStatus.UNKNOWN with configured=false when the transport isn't configured, and keep DEGRADED or DOWN for real failures.
  • When the central health SPI ships in a QQQ RC, move these indicators to DEPENDENCY checks, so they never run inside a probe.

🤖 Generated with Claude Code

Found while fixing QRun-IO/qbit-slack#13. qbit-slack's health indicator reported an unconfigured Slack app as DOWN, which failed kof22's readiness probe. `CrmHealthChecks.email()` returns **DEGRADED** when `CrmReadiness.NOT_CONFIGURED`. That's not DOWN, so readiness probes are safe (200). But the core HEALTH spec (section 3.2) reserves UNKNOWN for "not configured". Suggested changes: - Return `HealthStatus.UNKNOWN` with `configured=false` when the transport isn't configured, and keep DEGRADED or DOWN for real failures. - When the central health SPI ships in a QQQ RC, move these indicators to DEPENDENCY checks, so they never run inside a probe. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: QRun-IO/qbit-crm#19