SPEC §5.1 grades rung 5 as wall time × a HOST-CALIBRATED active power
(ModelBased) and rung 6 as an estimate. jcp-energy's ladder fell to
Meter::TimePower at DEFAULT_ACTIVE_MILLIWATTS (15 W, an assumed figure no
host measured) and every counter rung's span degraded to the same 15 W
figure, all graded ModelBased: better provenance than how the figure was
obtained. The power is the whole of that model, so a default power is a
constant scaled by time, an estimate.
- Meter::UncalibratedTimePower { milliwatts } and Rung::UncalibratedTimePower
(Estimator), built by Meter::uncalibrated_time_power; detect() falls to
it, so Detection.selected, rung() and provenance() all say estimate.
- Meter::TimePower / Meter::time_power stay ModelBased, documented as a
power calibrated on this host.
- counter_span / ioreport_span / process_span degrade to the new
uncalibrated_span (Estimator) instead of Energy::modeled.
- Tests that pinned the over-claim now pin Estimator: the RAPL/NVML/
per-process/IOReport fallback-span tests, the declined-IOReport meter
test, and the detect_with selection tests. New tests: a host-calibrated
power stays ModelBased while the default is Estimator, detect() falls to
the estimate, and the fallback span helper.
- jcp-conformance C9 now checks both grades.
- SPEC §5 / §5.1 rungs 5-6, jcp-schema's Provenance docs and the README
say a default or assumed power is rung 6. No vector changes (jcp
gen-vectors output is byte-identical; no jcp vector carries ModelBased).
Co-Authored-By: Claude Opus 5.5 <[email protected]>