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;
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)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This fixes a production finding: the
slackhealth indicator reported an unconfigured Slack app (noSLACK_*secrets) as DOWN. That failed kof22's readiness probe and blocked a deploy; WB#250 added a temporary filter.Fix
appreadiness check is nowNOT_CONFIGURED. Health reports UNKNOWN, which returns HTTP 200, withconfigured: falseand the message "Slack is not configured". This state still appears in the readiness and central-health views.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
configured=false;verifyis green locally with 178 tests.🤖 Generated with Claude Code