Diagnose a failing pipeline¶
Start with the failing command's exit code and stderr. Keep stdout separate so diagnostics do not become downstream evidence.
Check configuration and the route¶
ribbit doctor --json
ribbit route inspect ask --profile local-small --json
ribbit doctor --probe --json
--probe makes explicit provider requests. Confirm the endpoint and exact model identifier before retrying a semantic task. For a local endpoint, check that its server is running and the model is available there.
Capture diagnostics without mixing them into data¶
ribbit ask 'Who owns the fix?' --file meeting.txt --profile local-small \
--stats --error-format json > answer.txt 2> diagnostics.jsonl
Inspect the exit status before accepting answer.txt. A stream may have emitted a valid prefix before a later failure. In Bash, use set -o pipefail when any failed stage must fail a shell pipeline.
| Symptom | Action |
|---|---|
| Exit 2 / records required | Choose --input lines, --input jsonl, or a Ribbit record stream explicitly |
| Exit 3 / missing route or capability | Inspect the profile, provider capabilities, and exact model ID |
| Exit 4 / invalid or truncated semantic output | Inspect the output budget and provider behavior; try a more suitable model rather than accepting partial output |
| Exit 5 / extension failure | Run the extension's check/test commands and inspect trusted source |
| Exit 6 / budget exhausted | Reduce input first; raise only the finite limits appropriate to the job |
| Exit 7 / terminal or filesystem failure | Check path access; interactive pick requires fzf and a controlling terminal |
| Labels disappear downstream | Keep record output; JSONL export and rendering intentionally drop annotations |
| Valid result, wrong answer | Treat it as a semantic failure; preserve the fixture and evaluate another route |
Bound the next attempt¶
ribbit ask 'List the decisions supported by this text.' \
--file meeting.txt --profile local-small \
--max-bytes 65536 --max-requests 2 --request-ms 30000 --total-ms 60000 --stats
These are invocation limits. A provider's context window may be smaller, and missing token usage cannot be enforced as if it were reported. Use limit and error reference for the exact defaults and categories.
For a reproducible bug report, include a sanitized fixture, exact command, version, OS/architecture, exit code, and separate stdout/stderr. For a semantic failure, include the provider/model and whether the problem is formatting or factual content. Use private reporting for vulnerabilities.