Channel Smoke Validation
This playbook defines reproducible, real-world smoke checks for
channel integrations. Use it to produce concrete pass/fail evidence
before upgrading channel claims in docs/feature-status.yaml
and docs/feature-evidence.yaml.
Scope
Priority for current validation wave:
- Signal
- Slack
The smoke report template also supports Telegram and Discord; use the same evidence format.
Preflight
- Record version and OS:
cara version- platform details (
uname -aor Windows equivalent)
- Start Carapace with target channel configured.
- Keep logs open:
cara logs -n 200cara logs prints a recent tail (not a live follow
stream). Re-run it at key steps and after failures to capture relevant
evidence.
Pass Criteria
A channel smoke run is considered pass when all are true:
- Carapace health is good (
cara statushealthy). - Channel registration succeeds at startup (no repeated auth/signature errors).
- One inbound message is received and produces an agent run.
- One outbound reply is delivered back to the same channel.
If any step fails, capture the first failing step and logs.
Signal Smoke
Assumes signal-cli-rest-api is running and configured in
carapace.json5 (see Signal Channel
Setup).
- Start services and verify health:
cara status --port 18789
- Send one test message from another Signal device/account to the configured Signal number.
- Confirm logs show inbound parsing + agent run dispatch from
signal_receive. - Confirm reply is delivered in Signal.
Common failure indicators:
- repeated HTTP errors polling
/v1/receive/{number} - missing/incorrect
signal.phoneNumber - signal-cli service not reachable from Carapace host
Slack Smoke
Assumes Slack bot token and signing secret are configured and Events
API request URL points to /channels/slack/events (see Slack Channel
Setup).
- Verify Slack Events URL challenge succeeds.
- Send one message in a subscribed Slack channel.
- Confirm logs show inbound event parsing and agent run.
- Confirm outbound reply appears in Slack.
Common failure indicators:
X-Slack-Signaturevalidation errors- stale timestamp rejection
- missing bot scopes or channel permissions
Evidence Capture
Open a smoke report with:
- channel name
- pass/fail result
- exact failing step (if fail)
- relevant logs (redacted)
Template: