What's new in v0.11.1
A one-line repair to the surface v0.11.0 was about. Findings separate by deployment since that release, but the findings list showed only the service and the endpoint, so the same problem in two namespaces produced two rows that looked identical and a reader had to open each one to tell them apart. The list now names the deployment each row belongs to. The bundled demo dataset carries a grouping attribute, so perf-sentinel demo finally shows the feature it was silent about. Nothing else moves: no CLI flag, no configuration key, no change to any machine output format, the daemon wire protocol, or any Prometheus metric. Acknowledgment signatures are untouched.
The findings list names the deployment
Grouping reached the finding detail, the filters, the CSV export and the acknowledgment dialog in v0.11.0. It did not reach the list itself, which is the first surface a reader looks at and the one place where two deployments have to be distinguishable at a glance. Three rows reading inventory-svc · GET /api/cart/enrich were three separate problems in three separate namespaces, and nothing on the row said so.
The grouping value now sits beside the endpoint, with the full key=value on its tooltip so tenant.id=acme never reads as a namespace. It never ellipsizes: the endpoint gives up its characters first, since the grouping is the only thing telling those rows apart and truncating it would restore exactly the ambiguity this fixes.
The demo shows the feature
perf-sentinel demo runs an embedded dataset that carried no grouping attribute, so every 0.11.0 surface it should have demonstrated, the grouping column, the grouping filters, the recurrence of one signature across traces, rendered empty or absent. The dataset now carries k8s.namespace.name across its services, with the same N+1 recurring in one namespace and appearing again in another. That is the release's headline in one screen: one problem, two deployments, two rows.
This is the dataset behind demo, demo --tui and demo --html. It has no effect on analyze, on any other input, or on the daemon.
Upgrade impact
None. This is a patch release over v0.11.0: no signature changed, no acknowledgment needs re-capturing, no format moved, and a report produced by v0.11.0 renders here unchanged. The two changes are in the HTML report the report and demo subcommands render, and in an embedded fixture. The minimum supported Rust version stays 1.97.1.
If you are still on v0.10.0 or earlier, read the v0.11.0 notes first: that release splits findings by deployment and changes the shape of a report you may know by heart, and it carries a /metrics behaviour change worth checking before you upgrade.
Validation
The full Rust suite passes (3062 tests), clippy is clean at -D warnings across all targets, cargo fmt --check passes, and the default and --no-default-features builds both pass. The browser suite covering the HTML dashboard passes.
The simulation-lab release-gate was not re-run for this release. Both changes are confined to the rendered HTML report and to an embedded fixture, with no daemon, ingest, detection or signature behaviour touched, which is the same reasoning recorded for v0.8.9. The v0.11.0 gate entry remains the current attestation for every surface this binary shares with it.
Verifying this release
# Binary integrity via SLSA Build L3 attestation
gh attestation verify perf-sentinel-linux-amd64 \
--repo robintra/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.11.1" \
--expected-issuer "https://token.actions.githubusercontent.com" \
--verify-binary ./perf-sentinel-linux-amd64gh CLI 2.49 or newer required for gh attestation verify.
Full Changelog: v0.11.0...v0.11.1