roofp 0.2.0
Highlights
- Introduces schema-versioned Roofline analysis with explicit dimensional field names and separate evaluations for ideal, measured, and additional roofs.
- Replaces JSON-string MCP parameters with validated structured inputs and structured outputs.
- Separates theoretical hardware capability from per-hardware measured utilization; above-roof measurements are reported but excluded from rankings.
- Adds precision, FLOP-counting, bandwidth-level, sparsity, and measurement-kind metadata with compatibility warnings.
- Makes MCP SVG output opt-in and bounds response sizes.
- Fixes peer comparison plots, removes pyplot global figure state, and keeps SVG/PNG/PDF output support.
- Makes CLI stdout valid JSON, moves status messages to stderr, adds atomic output writes, strict config validation,
--analysis-only, and--version. - Adds Python 3.10–3.14 CI, minimum-dependency checks, wheel-only installation checks, linting, typing, coverage, protocol tests, and distribution validation.
Breaking changes
- MCP
operators_jsonandroofs_jsonstring parameters are replaced by structuredoperators,roofs, andworkloadsarrays. - MCP results are returned as structured content instead of JSON strings.
- Ambiguous 0.1 output aliases such as
compute_flops,roof_performance_flops, andheadroom_ratioare removed. OperatorPointnow acceptsarithmetic_intensitydirectly; achieved bandwidth is derived.compare_rooflinesaccepts optional per-hardware measurements instead of applying one measured performance value to every roof.- SVG is returned from MCP only when
include_svg: trueis requested.
See the updated README and SKILL.md for migration examples.
Validation
- 57 tests pass with warnings treated as errors.
- Branch coverage: 88%.
- Ruff, Ruff formatting, Mypy, compileall, lockfile, and dependency checks pass.
SKILL.mdpasses the Codex skill validator.- The wheel and sdist were built, inspected, and the wheel was installed and exercised in an isolated environment.
SHA256SUMSis attached for the published wheel and sdist.
Commit: 0efb1e0469911eddf9cdc13ddc51f00fabd44558