cpulse is now a flight recorder and root-cause debugger for Docker Compose, not just a live TUI. Record a startup, diagnose offline with evidence-backed rules, probe dependencies, compare critical paths, emit shareable reports, and fail CI with stable exit codes.
Added
cpulse record -- <cmd>— wrap any Compose invocation; capture events, inspect, logs, and effective config into SQLite (.cpulse/cpulse.db) with optional JSON export (--output)cpulse up [args]— alias forcpulse record -- docker compose up [args]cpulse replay FILE— replay a recordedrun.jsonwithout Docker- Offline doctor —
cpulse doctor --file/--last/--runwith--json,--sarif,--fail-on high|medium|possible, and--annotatefor GitHub Actions - Diagnosis rule engine — high-confidence rules for config, ports, mounts, images, process exits, healthchecks, localhost-in-container,
depends_onraces, OOM, restart loops, and TCP refused cpulse probe <svc> <host:port>— DNS → TCP → optional TLS/HTTP from inside a service's network (--tls,--http)cpulse compare --last successful— critical-path compare against previous successful baselinescpulse report --last --format markdown|json|html|sarif— shareable incident reports (markdown includesrule_id)cpulse test-startup— CI one-shot: recorddocker compose up --wait, diagnose, exit with a stable code contract- GitHub Action (
action.yml) — record + diagnose in PRs; optional HTML artifact upload; smoke workflow included - Secret redaction — env/message redaction before the first SQLite write;
effective_config.raw_yamlis never persisted - Fixture corpus under
testdata/runs/phase2/andtestdata/scenarios/for rule regression
Changed
- README documents the record / diagnose / CI workflow alongside the existing TUI
- Live TUI usage (
cpulse, livecpulse doctor) is unchanged in intent
Fixed
- No false
config.invalid_composeon healthy stacks with long-form Compose ports doctor --filepreserves effective config / invocation so rules likerace.depends_on_startedcan firecompare --last successful --db FILEparses correctlytest-startup --timeoutexits2on deadline exceeded (not3)
Exit codes (test-startup / CI)
| Code | Meaning |
|---|---|
| 0 | Healthy / no findings at or above --fail-on |
| 1 | Confirmed failure(s) at or above threshold |
| 2 | Timeout |
| 3 | Compose failed to launch / record error |
| 4 | Usage error |
Changelog
- e31b691 feat: add flight recorder, offline doctor, probes, reports, and CI action