Implement remediation-aware health checks across all Doctor plugin modules (Agent, Attestor, Auth, BinaryAnalysis, Compliance, Crypto, Environment, EvidenceLocker, Notify, Observability, Operations, Policy, Postgres, Release, Scanner, Storage, Vex) and their backing library counterparts (AI, Attestation, Authority, Core, Cryptography, Database, Docker, Integration, Notify, Observability, Security, ServiceGraph, Sources, Verification). Each check now emits structured remediation metadata (severity, category, runbook links, and fix suggestions) consumed by the Doctor dashboard remediation panel. Also adds: - docs/doctor/articles/ knowledge base for check explanations - Advisory AI search seed and allowlist updates for doctor content - Sprint plan for doctor checks documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
checkId, plugin, severity, tags
| checkId | plugin | severity | tags | ||||
|---|---|---|---|---|---|---|---|
| check.notify.slack.connectivity | stellaops.doctor.notify | warn |
|
Slack Connectivity
What It Checks
Verifies that the configured Slack webhook endpoint is reachable. The check:
- Sends an empty-text POST payload to the webhook URL with a 10-second timeout.
- Slack returns
no_textfor empty messages, which proves the endpoint is alive without posting a visible message. - Passes if the response is successful or contains
no_text. - Warns if an unexpected HTTP status is returned (e.g., invalid or revoked webhook).
- Fails on connection timeout or HTTP request exceptions.
The check only runs when Notify:Channels:Slack:WebhookUrl is set and is a valid absolute URL.
Why It Matters
A configured but unreachable Slack webhook means notifications are silently dropped. Teams relying on Slack for release alerts and security findings will miss critical events.
Common Causes
- Invalid or expired webhook URL
- Slack workspace configuration changed
- Webhook URL revoked or regenerated
- Rate limiting by Slack
- Firewall blocking outbound HTTPS to hooks.slack.com
- Proxy configuration required but not set
How to Fix
Docker Compose
Test connectivity from the container:
docker exec <notify-container> curl -v https://hooks.slack.com/
If behind a proxy:
environment:
HTTPS_PROXY: "http://proxy.example.com:8080"
Bare Metal / systemd
curl -v https://hooks.slack.com/
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Doctor test"}' \
'https://hooks.slack.com/services/YOUR/WEBHOOK/URL'
Kubernetes / Helm
kubectl exec -it <notify-pod> -- curl -v https://hooks.slack.com/
If the webhook URL has been revoked, create a new one in the Slack App settings under Incoming Webhooks and update the configuration.
Verification
stella doctor run --check check.notify.slack.connectivity
Related Checks
check.notify.slack.configured— verifies Slack webhook URL is setcheck.notify.queue.health— verifies the notification delivery queue is healthy