What's new in v0.8.4
v0.8.4 adds a man subcommand that renders the perf-sentinel manual page to stdout, and seeds every user-facing command's --help with copy-pasteable usage examples. The rest of the release is internal: tightened help wording, a pure and unit-tested refactor of the non-fatal disclosure warnings, a Cargo dependency patch bump, and release-tooling changes. There is no breaking change to the daemon wire protocol, the configuration format, or any existing command. The new subcommand is additive, and the minimum supported Rust version stays 1.96.0.
CLI: man page generation
perf-sentinel man renders the top-level roff manual page to stdout, backed by clap_mangen, mirroring the existing completions subcommand. The page lists the subcommands, the way git.1 does. Redirect it into a man path so man perf-sentinel works:
perf-sentinel man > /usr/local/share/man/man1/perf-sentinel.1CLI: usage examples in help
Every user-facing command (analyze, watch, explain, report, diff, tempo, jaeger-query, calibrate, pg-stat, query, ack, disclose, verify-hash, hash-bake, completions) now carries an Examples: block, shown under both -h and --help. The examples mirror the invocations documented in the CLI reference and the README, and live in one module so they stay in lockstep with the docs.
CLI: help wording
Several command and flag descriptions were tightened. Semicolons were replaced by separate sentences, and the reserved disclose --intent audited value now states plainly that it is reserved for a future release and exits with code 2.
Internal: disclosure warnings refactor
The non-fatal continuity and completeness warnings in disclose were extracted into a pure function that returns the warning lines, which cmd_disclose prints to stderr. The behavior is unchanged. The extraction lowers the cognitive complexity of cmd_disclose, and the pure function is now covered by unit tests.
Release tooling
scripts/release.sh gains a --skip-lab flag that bypasses the simulation-lab validation gate explicitly. It logs a loud audit warning and never writes the validation ledger, so a release validated by other means leaves no false PASS behind. All other pre-checks and the version gate still apply. The public-communication step was removed from the release procedure.
Helm chart
charts/perf-sentinel 0.2.48 to 0.2.49, appVersion 0.8.3 to 0.8.4. Template surface unchanged, additive metadata only.
Operator-visible behavior change
A new man subcommand and richer --help output with usage examples. No detection verdict, daemon route, OTLP wire shape, configuration key, or Prometheus metric changes.
Validation
This CLI and documentation release was validated by the end-to-end test suite. The simulation-lab gate, which exercises detector behavior on a live cluster, was skipped with --skip-lab because nothing in the detection, daemon, or scoring path changed.
Why this is a patch and not a minor
The release is additive and backward compatible. The man subcommand and the help examples extend the existing CLI surface without changing any existing command, flag, output format, daemon route, OTLP wire protocol, configuration key, or Prometheus metric. Output outside --help and the new subcommand is unchanged. The minimum supported Rust version stays 1.96.0.
Verifying this release
# Binary integrity via SLSA Build L3 attestation
gh attestation verify perf-sentinel-linux-amd64 \
--owner robintra --repo perf-sentinel
# A periodic disclosure produced by this binary
perf-sentinel verify-hash --report perf-sentinel-report.json \
--expected-identity "https://github.com/robintra/perf-sentinel/.github/workflows/release.yml@refs/tags/v0.8.4" \
--expected-issuer "https://token.actions.githubusercontent.com"gh CLI 2.49 or newer required for gh attestation verify (unchanged from v0.7.2).
Full Changelog: v0.8.3...v0.8.4