Public evidence
Machine-checked verification for calculation version 1.2.1 · tier internally_reviewed
CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance· Constant load; no Peukert / temp; CVP goldens omit u_* GUM path · Protocol · Schema · Production report
Legacy regression suite: 25/25 calculation tests · Production surface contract 6/6
Three distinct suites: educational examples on the calculator page, this legacy regression count (25/25 golden + boundary), and the CVP verification suite below. They are not the same number. Property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the CVP Manifest . SKIP (0/0) means that suite has no published vectors.
Protocol checks from the Evidence Manifest. Distinct from the legacy regression suite above. Verification revision 2026-09-11.schema-coverage-u. Calculation version 1.2.1. CVP 1.0.0-proposed. 3/3 golden · 9/9 CVP boundary · 7/7 invalid · 10/10 property · 1/1 cross-interface · 6/6 CVP contract. digest 058cf03cbe19.
Fingerprint sha256:3b0e76941fc911bb9e5160ec017c84886abbc569b41622121932a6d930cc0583
Input schema sha256:5673a4cc4dd654ce3bdd613dc2174cd5d5591604a43e73681c464862ffec5733 · Output schema sha256:86500ba515b67ff0044fb2eb13ae1eee5034f456be67655a1d650620b5010ee0 · Build-time SHA-256 digests prove published artifacts agree with each other (release_integrity.scope=workspace). Production attestation GETs canonical URLs twice (public/cached view and origin), including Capability HTML, via npm run attest:production --write
(published at /.well-known/calculatorx-production-attestation.json) and fails if the public Capability page advertises a different calculation_version. This is artifact consistency, not an independent immutable release log.
Engine identity and declared limitations.
Standards and references supporting this tool specification. Methods are listed separately — they are algorithms, not bibliographic sources.
Golden and boundary cases from the legacy Evidence JSON. CVP property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the Manifest — including SKIP when a suite has no vectors.
| ID | Kind | Status | Detail |
|---|---|---|---|
ideal-6h | golden | pass | Expected t_h=6 · t_d=0.25 · E_Wh=120 · Actual t_h=6 · t_d=0.25 · E_Wh=120 |
dod-eta-4.32h | golden | pass | Expected t_h=4.32 · E_Wh=86.4 · Actual t_h=4.32 · t_d=0.18000000000000002 · E_Wh=86.4 |
mah-alias | golden | pass | Expected t_h=18.5 · E_Wh=18.5 · Actual t_h=18.5 · t_d=0.7708333333333334 · E_Wh=18.5 |
amps-5h | golden | pass | Expected t_h=5 · E_Wh=120 · Actual t_h=5 · t_d=0.20833333333333334 · E_Wh=120 |
amps-eta-ignored | golden | pass | Expected t_h=4 · E_Wh=96 · Actual t_h=4 · t_d=0.16666666666666666 · E_Wh=96 |
both-capacities | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
missing-capacity | boundary | pass | Expected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT |
zero-V | boundary | pass | Expected VOLTAGE_MUST_BE_POSITIVE · Actual VOLTAGE_MUST_BE_POSITIVE |
zero-load | boundary | pass | Expected LOAD_MUST_BE_POSITIVE · Actual LOAD_MUST_BE_POSITIVE |
dod-out | boundary | pass | Expected FRACTION_OUT_OF_RANGE · Actual FRACTION_OUT_OF_RANGE |
invalid-mode | boundary | pass | Expected INVALID_MODE · Actual INVALID_MODE |
boundary-dod-eta | boundary | pass | Expected t_h=4.32 · t_d=0.18000000000000002 · E_Wh=86.4 · Actual t_h=4.32 · t_d=0.18000000000000002 · E_Wh=86.4 |
boundary-amps-mode | boundary | pass | Expected t_h=5 · E_Wh=120 · Actual t_h=5 · t_d=0.20833333333333334 · E_Wh=120 |
boundary-unc-capacity | boundary | pass | Expected t_h=4.32 · E_Wh=86.4 · Actual t_h=4.32 · t_d=0.18000000000000002 · E_Wh=86.4 |
boundary-unc-k-without-u | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
property-ideal | property | pass | 10Ah·12V·20W → 6h |
property-double-load | property | pass | 2×P → ½t |
property-double-cap | property | pass | 2×Ah → 2×t |
property-amps | property | pass | 10Ah / 2A → 5h |
property-amps-eta-ignored | property | pass | amps: η ignored → t=(Ah·DoD)/I |
property-mah-alias | property | pass | 10000 mAh ≡ 10 Ah |
property-days | property | pass | t_d = t_h/24 |
property-capacity-xor | property | pass | capacity_Ah XOR capacity_mAh |
property-uncertainty-compose | property | pass | u_* → sensitivity U=k·u_c on t_h |
property-no-unc-omit | property | pass | no u_* → no uncertainty object |