fix(health): unconfigured Slack is UNKNOWN, never DOWN #13

Merged
KofTwentyTwo merged 1 commits from fix/health-not-configured into develop 2026-10-15 04:57:12 +00:00
KofTwentyTwo commented 2026-10-15 04:54:41 +00:00 (Migrated from github.com)

This fixes a production finding: the slack health indicator reported an unconfigured Slack app (no SLACK_* secrets) as DOWN. That failed kof22's readiness probe and blocked a deploy; WB#250 added a temporary filter.

Fix

  • No Slack app secrets at all: the app readiness check is now NOT_CONFIGURED. Health reports UNKNOWN, which returns HTTP 200, with configured: false and the message "Slack is not configured". This state still appears in the readiness and central-health views.
  • Readiness not yet run (before the first scheduled check): health is UNKNOWN. It used to be DEGRADED.
  • Configured but broken (some secrets missing, or an invalid token key): health stays DOWN.
  • Configured and working: health is unchanged, UP or DEGRADED.
  • Docs: DESIGN section 8 is updated.

The core health module (RC.7) has no OUT_OF_SERVICE status. Its values are UP, DOWN, DEGRADED and UNKNOWN, and only DOWN maps to a 503, so UNKNOWN is the right status here.

Tests

  • not configured gives UNKNOWN with configured=false;
  • never checked gives UNKNOWN;
  • partially configured gives DOWN;
  • the existing invalid-key test still gives DOWN.

verify is green locally with 178 tests.

🤖 Generated with Claude Code

This fixes a production finding: the `slack` health indicator reported an unconfigured Slack app (no `SLACK_*` secrets) as DOWN. That failed kof22's readiness probe and blocked a deploy; WB#250 added a temporary filter. ## Fix - **No Slack app secrets at all:** the `app` readiness check is now `NOT_CONFIGURED`. Health reports **UNKNOWN**, which returns HTTP 200, with `configured: false` and the message "Slack is not configured". This state still appears in the readiness and central-health views. - **Readiness not yet run** (before the first scheduled check): health is **UNKNOWN**. It used to be DEGRADED. - **Configured but broken** (some secrets missing, or an invalid token key): health stays **DOWN**. - **Configured and working:** health is unchanged, UP or DEGRADED. - **Docs:** DESIGN section 8 is updated. The core health module (RC.7) has no OUT_OF_SERVICE status. Its values are UP, DOWN, DEGRADED and UNKNOWN, and only DOWN maps to a 503, so UNKNOWN is the right status here. ## Tests - not configured gives UNKNOWN with `configured=false`; - never checked gives UNKNOWN; - partially configured gives DOWN; - the existing invalid-key test still gives DOWN. `verify` is green locally with 178 tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.