Home Developers Evidence electrical.battery_runtime

Public evidence

electrical.battery_runtime

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

Declared partition coverage
PASS · 3/3 declared partitions (watts, amps, invalid-domain)
Versions
Calculation 1.2.1 · CVP protocol 1.0.0-proposed · Evidence 2026-09-11.schema-coverage-u
Verification revision
2026-09-11.schema-coverage-u · 10/10 property · digest 058cf03cbe19

Verification

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.

    This calculator CURRENT · Public schema 1.2.1 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓

CVP verification suite

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.

  • Golden (oracle-backed) 3 / 3
  • CVP boundary 9 / 9
  • Invalid input 7 / 7
  • Property 10 / 10
  • Cross-interface 1 / 1
  • CVP contract 6 / 6
  • Interfaces PASS · UI (SSR) / REST / MCP
  • Interface claim ui-ssr is query-result HTML, not a live browser session.
  • Assurance Engineering
  • release artifacts aligned PASS
  • schema valid input executes PASS
  • engine success output validates schema PASS
  • schema rejects incomplete input PASS
  • schema coverage requires u PASS
  • schema rejects boundary unc k without u PASS

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.

Build & scope

Engine identity and declared limitations.

Tool
battery-runtime
Engine
battery-runtime
Engine build
2026-09-12
Evidence core
2026-09-12T08:31:40.839Z
Rendered
2026-09-16T22:03:43.711Z
Last reviewed
2026-08-12

Assumptions

  • Constant load; ideal flat voltage until capacity is exhausted.
  • DoD and η are independent planning knobs, not chemistry models.
  • Amps mode I_A is battery-side discharge current; η does not enter t_h.
  • When u_* are set, first-order GUM sensitivity with independent inputs (no ρ on this page).

Limitations

  • Constant-load idealization only — not Peukert, temperature, or BMS cutoffs
  • Not a substitute for manufacturer runtime curves or pack design
  • Amps mode = battery-side discharge current; η does not enter runtime
  • capacity_Ah XOR capacity_mAh; both → INVALID_INPUT
  • Missing capacity → MISSING_REQUIRED_INPUT; P_W/I_A ≤ 0 → LOAD_MUST_BE_POSITIVE
  • dod/eta outside (0,1] → FRACTION_OUT_OF_RANGE
  • mode=watts requires P_W; mode=amps requires I_A
  • Optional u_* use GUM sensitivity only (no MC/ρ/νeff UI); empty u_* preserves nominal-only result
  • Response inputs[] is mode-canonical (capacity_Ah only; amps omits eta)
  • Basic frozen at calculation_version 1.2.1 — Agent schema requires u_* when uncertainty_k/confidence is set; do not stack Peukert/temperature/duty-cycle into this capability

Sources

Standards and references supporting this tool specification. Methods are listed separately — they are algorithms, not bibliographic sources.

Legacy published checks

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.

IDKindStatusDetail
ideal-6hgoldenpassExpected t_h=6 · t_d=0.25 · E_Wh=120 · Actual t_h=6 · t_d=0.25 · E_Wh=120
dod-eta-4.32hgoldenpassExpected t_h=4.32 · E_Wh=86.4 · Actual t_h=4.32 · t_d=0.18000000000000002 · E_Wh=86.4
mah-aliasgoldenpassExpected t_h=18.5 · E_Wh=18.5 · Actual t_h=18.5 · t_d=0.7708333333333334 · E_Wh=18.5
amps-5hgoldenpassExpected t_h=5 · E_Wh=120 · Actual t_h=5 · t_d=0.20833333333333334 · E_Wh=120
amps-eta-ignoredgoldenpassExpected t_h=4 · E_Wh=96 · Actual t_h=4 · t_d=0.16666666666666666 · E_Wh=96
both-capacitiesboundarypassExpected INVALID_INPUT · Actual INVALID_INPUT
missing-capacityboundarypassExpected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT
zero-VboundarypassExpected VOLTAGE_MUST_BE_POSITIVE · Actual VOLTAGE_MUST_BE_POSITIVE
zero-loadboundarypassExpected LOAD_MUST_BE_POSITIVE · Actual LOAD_MUST_BE_POSITIVE
dod-outboundarypassExpected FRACTION_OUT_OF_RANGE · Actual FRACTION_OUT_OF_RANGE
invalid-modeboundarypassExpected INVALID_MODE · Actual INVALID_MODE
boundary-dod-etaboundarypassExpected 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-modeboundarypassExpected t_h=5 · E_Wh=120 · Actual t_h=5 · t_d=0.20833333333333334 · E_Wh=120
boundary-unc-capacityboundarypassExpected 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-uboundarypassExpected INVALID_INPUT · Actual INVALID_INPUT
property-idealpropertypass10Ah·12V·20W → 6h
property-double-loadpropertypass2×P → ½t
property-double-cappropertypass2×Ah → 2×t
property-ampspropertypass10Ah / 2A → 5h
property-amps-eta-ignoredpropertypassamps: η ignored → t=(Ah·DoD)/I
property-mah-aliaspropertypass10000 mAh ≡ 10 Ah
property-dayspropertypasst_d = t_h/24
property-capacity-xorpropertypasscapacity_Ah XOR capacity_mAh
property-uncertainty-composepropertypassu_* → sensitivity U=k·u_c on t_h
property-no-unc-omitpropertypassno u_* → no uncertainty object