Skip to content

v0.9.6

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Jul 10:13
v0.9.6

What's new in v0.9.6

v0.9.6 is a data-only release: it refreshes the two reference tables embedded in the binary, with no change to detection, the pipeline stages, the CLI surface, the daemon, or any wire format. The carbon-intensity table moves its nationally-gridded rows from Electricity Maps consumption-based means to Ember yearly generation-based national data, and the SPECpower instance table is regenerated from the Cloud Carbon Footprint coefficient CSVs. Carbon and energy figures shift for the affected regions, most visibly on low-carbon grids. The minimum supported Rust version moves to 1.96.1, the version the 0.9.5 builds already pinned.

Score: carbon-intensity table moves to Ember

The nationally-gridded rows of the embedded carbon-intensity table now come from Ember yearly generation-based national data (latest available year per country), replacing the Electricity Maps consumption-based 2023-2024 means. Subnational rows (the North America regions and Brazil BR-CS) stay hand-maintained. Low-carbon grids move the most: Sweden 8 to 35.4, Finland 8 to 57.5, Norway 7 to 28.1 gCO2eq/kWh. That spread is the generation-versus-consumption accounting difference, not a data error, and it is documented in docs/METHODOLOGY.md. The hourly profiles are renormalized to the new annual anchors with their intra-day shapes unchanged.

Score: SPECpower instance table regenerated from CCF coefficients

The embedded SPECpower instance table is now generated by scripts/refresh-instance-power.py from the Cloud Carbon Footprint coefficient CSVs instead of being hand-maintained. The m6a and c6a families align to the CCF EPYC 3rd Gen coefficient (previously kept on SPECpower direct compute, inside the documented 5 percent equivalence), and 26 rows lose hand-rounding slips of at most 0.1 W. SPECPOWER_VINTAGE is unchanged, so an operator TOML pinning specpower_table_version keeps loading as before.

Both tables are now regenerated semiannually through a reviewed pull request, never at runtime: the binary still performs no automatic outbound network call.

Operator-visible behavior change

Reported carbon figures step-change for every region whose national intensity moved, across analyze, the daemon /metrics and /api/energy, the HTML dashboard, and the periodic disclosure reports. A dashboard or alert comparing gCO2eq values across the upgrade boundary will see the shift, most visibly on the Nordic grids. Instance power draw from the cloud_specpower backend moves by at most a few percent on the realigned families and at most 0.1 W elsewhere. No CLI flag, configuration key, output schema, daemon route, or wire shape changes.

Why this is a patch and not a minor

Nothing but embedded reference data changes. The carbon model, the backend precedence chain, the pipeline, and every interface behave identically on the same data, and embedded-table refreshes have always shipped as patches (the SPECpower 2024-2026 refresh in 0.5.27, the carbon primary-source audit in 0.8.7). The minimum supported Rust version moves from 1.96.0 to 1.96.1, matching the toolchain CI has pinned since 0.9.5.

Validation

The simulation-lab release gate passed for v0.9.6 (lab commit ebb7354, 2026-07-06) with zero regression across the full scenario suite. The delta itself was verified differentially: the same input analyzed by the released 0.9.5 binary and the 0.9.6 candidate moves Sweden from 8.0 to 35.4 gCO2eq/kWh end to end (batch JSON, /api/energy, /metrics, disclosure), hourly profiles keep their shape at the new levels with no aberrant values, m6a.large and c6a.large resolve through cloud_specpower with plausible interpolated draw, and a pinned specpower_table_version loads cleanly. CI covers the build, the full test suite (cargo test --workspace), clippy at -D warnings, cargo fmt, and both the default and --no-default-features builds.

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.9.6" \
  --expected-issuer "https://token.actions.githubusercontent.com"

gh CLI 2.49 or newer required for gh attestation verify.

Full Changelog: v0.9.5...v0.9.6