Skip to content

Choose a tag to compare

@github-actions github-actions released this 21 Jul 23:21
77d84cf

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 for cpulse record -- docker compose up [args]
  • cpulse replay FILE — replay a recorded run.json without Docker
  • Offline doctorcpulse doctor --file / --last / --run with --json, --sarif, --fail-on high|medium|possible, and --annotate for GitHub Actions
  • Diagnosis rule engine — high-confidence rules for config, ports, mounts, images, process exits, healthchecks, localhost-in-container, depends_on races, 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 baselines
  • cpulse report --last --format markdown|json|html|sarif — shareable incident reports (markdown includes rule_id)
  • cpulse test-startup — CI one-shot: record docker 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_yaml is never persisted
  • Fixture corpus under testdata/runs/phase2/ and testdata/scenarios/ for rule regression

Changed

  • README documents the record / diagnose / CI workflow alongside the existing TUI
  • Live TUI usage (cpulse, live cpulse doctor) is unchanged in intent

Fixed

  • No false config.invalid_compose on healthy stacks with long-form Compose ports
  • doctor --file preserves effective config / invocation so rules like race.depends_on_started can fire
  • compare --last successful --db FILE parses correctly
  • test-startup --timeout exits 2 on deadline exceeded (not 3)

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