Public evidence
Machine-checked verification for calculation version 1.1.2 · tier internally_reviewed
CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance· Steady-state thermal; not transient Zth · Protocol · Schema · Production report
Legacy regression suite: 18/18 calculation tests · Production surface contract 14/14
Three distinct suites: educational examples on the calculator page, this legacy regression count (18/18 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. Calculation version 1.1.2. CVP 1.0.0-proposed. 3/3 golden · 8/8 CVP boundary · 6/6 invalid · 5/5 property · 1/1 cross-interface · 14/14 CVP contract. digest 950f87c6bdab.
Fingerprint sha256:d029c5d041be798f8d2b71dbf5075d29c629ca574dba7a49e0019d550e6e8b0e
Input schema sha256:bacbec2deaa82d91b5c2fcf2739bdc94f97e8b6f23cd8352b9b46d77394c1d2d · Output schema sha256:dcdbc531b378ec3e1fa5f3fe4540141378cdacfcff6b8f91e92f0d3ae5220ead · 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 |
|---|---|---|---|
ja-105 | golden | pass | Expected Tj_C=105 · dT_C=80 · margin_C=45 · path=JA · Actual Ta_C=25 · P_W=2 · Rth_C_per_W=40 · path=JA · dT_C=80 · Tj_C=105 · Tj_max_C=150 · margin_C=45 |
jc-ca | golden | pass | Expected Tj_C=35 · dT_C=10 · path=JC+CA · Actual Ta_C=25 · P_W=1 · Rth_C_per_W=10 · path=JC+CA · dT_C=10 · Tj_C=35 · Rth_JC=1.5 · Rth_CA=8.5 |
margin-neg | golden | pass | Expected Tj_C=170 · dT_C=120 · margin_C=-20 · Actual Ta_C=50 · P_W=4 · Rth_C_per_W=30 · path=JA · dT_C=120 · Tj_C=170 · Tj_max_C=150 · margin_C=-20 |
xref-ti-spra953-ja | formula cross-check | pass | Expected Tj_C=75 · dT_C=50 · path=JA · Actual Ta_C=25 · P_W=1 · Rth_C_per_W=50 · path=JA · dT_C=50 · Tj_C=75 · Rth_JA=50 |
xref-onsemi-jc-ca | formula cross-check | pass | Expected Tj_C=35 · dT_C=10 · path=JC+CA · Actual Ta_C=25 · P_W=2 · Rth_C_per_W=5 · path=JC+CA · dT_C=10 · Tj_C=35 · Rth_JC=1 · Rth_CA=4 |
boundary-zero-P | boundary | pass | Expected Tj_C=25 · dT_C=0 · path=JA · Actual Ta_C=25 · P_W=0 · Rth_C_per_W=40 · path=JA · dT_C=0 · Tj_C=25 · Rth_JA=40 |
boundary-neg-P | boundary | pass | Expected VALUE_MUST_BE_NON_NEGATIVE · Actual VALUE_MUST_BE_NON_NEGATIVE |
boundary-neg-rth | boundary | pass | Expected VALUE_MUST_BE_POSITIVE · Actual VALUE_MUST_BE_POSITIVE |
boundary-only-jc | boundary | pass | Expected NEEDS_TWO_INPUTS · Actual NEEDS_TWO_INPUTS |
boundary-only-ca | boundary | pass | Expected NEEDS_TWO_INPUTS · Actual NEEDS_TWO_INPUTS |
boundary-missing-rth | boundary | pass | Expected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT |
boundary-conflict | boundary | pass | Expected CONFLICTING_INPUTS · Actual CONFLICTING_INPUTS |
boundary-at-max | boundary | pass | Expected Tj_C=150 · margin_C=0 · dT_C=125 · Actual Ta_C=25 · P_W=2 · Rth_C_per_W=62.5 · path=JA · dT_C=125 · Tj_C=150 · Tj_max_C=150 · margin_C=0 |
property-dT | property | pass | ΔT=P·Rθ |
property-margin | property | pass | margin=Tjmax−Tj |
property-zero-P | property | pass | P=0 → Tj=Ta |
property-2P | property | pass | 2P → 2ΔT |
property-2Rth | property | pass | 2Rθ → 2ΔT |