Public evidence
Machine-checked verification for calculation version 1.9.8 · tier internally_reviewed
CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance · Linear GUM: sum, difference, product, quotient, RSS, sensitivity, budget. Correlation matrices must be PSD (singular PSD allowed). O3 mpmath (80 dps) tabulated linear u_c. Monte Carlo: O2-B seeded mulberry32+Box-Muller replay of y_mean/u_c/percentiles (≤2 ULP) for sum, difference, product, quotient, correlated normal, and budget/rectangular; linear_u_c vs first-order GUM.· All published modes; MC is seeded independent replay plus linear_u_c, not full JCGM 101. O3 covers tabulated linear vectors only. Budget dimensional algebra deferred. · Protocol · Schema · Production report
Legacy regression suite: 88/88 calculation tests · Production surface contract 8/8
Three distinct suites: educational examples on the calculator page, this legacy regression count (88/88 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-16.seeded-mc-o3. Calculation version 1.9.8. CVP 1.0.0-proposed. 18/18 golden · 47/47 CVP boundary · 29/29 invalid · 29/29 property · 10/10 O3 · 6/6 cross-interface · 8/8 CVP contract. digest 77cad1dafb2f. Published modes: linear GUM (sum, difference, product, quotient, RSS, sensitivity, budget) and seeded Monte Carlo replay of y_mean/u_c/percentiles. Not a full JCGM 101 validation procedure. RNG: mulberry32; normal sampler: Box-Muller. ≤2 ULP vs O3 applies only to the published tabulated linear GUM vectors (sum, difference, ρ=1 difference, product, quotient, RSS, sensitivity, 3×3 PSD, singular PSD, budget). It is not a whole-domain guarantee and does not cover Monte Carlo.
Fingerprint sha256:d8cfcf55210b3e57585f02738f49bb344b4c1cc9d6597384fadb8f7da98e3fb8
Input schema sha256:263d0ba0dda3ea81aa635bcd61d0eb9e9e9fc347ab4890b6cc20ccacc3a6843f · Output schema sha256:d1d0c1d06cbe6b38725a8566ba4273291b9558081c5786b8e0b65b862a8e66b1 · 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 |
|---|---|---|---|
sum-default | golden | pass | Expected y=150 · u_c=0.22360679774997896 · Actual mode=sum · y=150 · u_c=0.223606797749979 · u_rel=0.00149071198499986 · a=100 · b=50 · ua=0.1 · ub=0.2 |
product-default | golden | pass | Expected y=50 · u_c=0.7071067811865476 · Actual mode=product · y=50 · u_c=0.7071067811865476 · u_rel=0.01414213562373095 · a=10 · b=5 · ua=0.1 · ub=0.05 |
sensitivity | golden | pass | Expected u_c=0.6324555320336759 · u_rel=0.06324555320336758 · Actual mode=sensitivity · u_c=0.632455532033676 · u_rel=0.0632455532033676 · y=10 · terms=2 · nu_eff_infinite=false |
rss | golden | pass | Expected u_c=0.5 · Actual mode=rss · u_c=0.5 · terms=2 · nu_eff_infinite=false |
product-a-zero | golden | pass | Expected y=0 · u_c=0.5 · Actual mode=product · y=0 · u_c=0.5 · a=0 · b=5 · ua=0.1 · ub=0.05 · rho=0 |
quotient-b-zero | boundary | pass | Expected DIVISION_BY_ZERO · Actual DIVISION_BY_ZERO |
missing-ua | boundary | pass | Expected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT |
invalid-mode | boundary | pass | Expected INVALID_MODE · Actual INVALID_MODE |
rho-sum | golden | pass | Expected y=150 · u_c=0.3 · rho=1 · Actual mode=sum · y=150 · u_c=0.30000000000000004 · u_rel=0.0020000000000000005 · a=100 · b=50 · ua=0.1 · ub=0.2 |
k-expanded | golden | pass | Expected U=0.4472135954999579 · k=2 · Actual mode=sum · y=150 · u_c=0.223606797749979 · u_rel=0.00149071198499986 · a=100 · b=50 · ua=0.1 · ub=0.2 |
nueff-binary | golden | pass | Expected nu_eff=225 · Actual mode=sum · y=150 · u_c=0.223606797749979 · u_rel=0.00149071198499986 · a=100 · b=50 · ua=0.1 · ub=0.2 |
student-t-k | golden | pass | Expected nu_eff=9 · k=2.26215716274 · Actual mode=sum · y=1 · u_c=0.1 · u_rel=0.1 · a=1 · b=0 · ua=0.1 · ub=0 |
budget-basic | golden | pass | Expected y=5 · u_c=0.00223606797749979 · Actual mode=budget · u_c=0.0022360679774997894 · u_rel=0.0004472135954999579 · y=5 · terms=2 · nu_eff_infinite=false |
mc-sum | golden | pass | Expected linear_u_c=0.22360679774997896 · Actual mode=montecarlo · model=sum · a=100 · b=50 · ua=0.1 · ub=0.2 · rho=0 · terms=2 |
boundary-product-b-zero | boundary | pass | Expected y=0 · u_c=0.25 · Actual mode=product · y=0 · u_c=0.25 · a=5 · b=0 · ua=0.1 · ub=0.05 · rho=0 |
boundary-quotient-a-zero | boundary | pass | Expected y=0 · u_c=0.02 · Actual mode=quotient · y=0 · u_c=0.020000000000000004 · a=0 · b=5 · ua=0.1 · ub=0.05 · rho=0 |
boundary-all-zero-u | boundary | pass | Expected y=2 · u_c=0 · Actual mode=sum · y=2 · u_c=0 · u_rel=0 · a=1 · b=1 · ua=0 · ub=0 |
boundary-coeffs-length | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
boundary-empty-uncertainties | boundary | pass | Expected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT |
boundary-neg-ua | boundary | pass | Expected VALUE_MUST_BE_NON_NEGATIVE · Actual VALUE_MUST_BE_NON_NEGATIVE |
boundary-unit-mismatch | boundary | pass | Expected UNIT_MISMATCH · Actual UNIT_MISMATCH |
boundary-unit-sum | boundary | pass | Expected y=150 · u_c=0.22360679774997896 · unit=V · Actual mode=sum · y=150 · u_c=0.223606797749979 · u_rel=0.00149071198499986 · a=100 · b=50 · ua=0.1 · ub=0.2 |
boundary-unit-si-sum | boundary | pass | Expected y=3 · u_c=0.010049875621120889 · unit=V · Actual mode=sum · y=3 · u_c=0.01004987562112089 · u_rel=0.00334995854037363 · a=1000 · b=2 · ua=1 · ub=0.01 |
boundary-unit-product | boundary | pass | Expected y=2760 · unit=VA · Actual mode=product · y=2760 · u_c=25.942243542145693 · u_rel=0.0093993636022267 · a=230 · b=12 · ua=1 · ub=0.1 |
boundary-unit-si-quotient | boundary | pass | Expected y=0.5 · unit=1 · Actual mode=quotient · y=0.5 · u_c=0.0025495097567963926 · u_rel=0.005099019513592785 · a=1000 · b=2 · ua=1 · ub=0.01 |
boundary-unit-ohm | boundary | pass | Expected y=5 · unit=Ω · Actual mode=quotient · y=5 · u_c=0.05590169943749475 · u_rel=0.01118033988749895 · a=10 · b=2 · ua=0.1 · ub=0.01 |
boundary-unit-mv-ma | boundary | pass | Expected y=500 · unit=Ω · Actual mode=quotient · y=500 · u_c=2.5495097567963922 · u_rel=0.005099019513592784 · a=1000 · b=2 · ua=1 · ub=0.01 |
boundary-unit-a-ohm | boundary | pass | Expected y=10 · unit=V · Actual mode=product · y=10 · u_c=0.20615528128088306 · u_rel=0.020615528128088305 · a=2 · b=5 · ua=0.01 · ub=0.1 |
boundary-nua-null-infinite | boundary | pass | Expected y=150 · nu_eff_infinite=true · Actual mode=sum · y=150 · u_c=0.223606797749979 · u_rel=0.00149071198499986 · a=100 · b=50 · ua=0.1 · ub=0.2 |
boundary-mc-sum | boundary | pass | Expected linear_u_c=0.22360679774997896 · Actual mode=montecarlo · model=sum · a=100 · b=50 · ua=0.1 · ub=0.2 · rho=0 · terms=2 |
boundary-mc-N | boundary | pass | Expected VALUE_OUT_OF_RANGE · Actual VALUE_OUT_OF_RANGE |
boundary-mc-budget | boundary | pass | Expected linear_u_c=0.22360679774997896 · Actual mode=montecarlo · model=linear · terms=2 · y=2.9979412161635093 · u_c=0.22221998921316938 · u_rel=0.07412419830484407 · y_mean=2.9979412161635093 · y_median=2.999790879812373 |
boundary-rho-diff | boundary | pass | Expected y=50 · u_c=0.1 · rho=1 · Actual mode=difference · y=50 · u_c=0.1 · u_rel=0.002 · a=100 · b=50 · ua=0.1 · ub=0.2 |
boundary-rho-out | boundary | pass | Expected VALUE_OUT_OF_RANGE · Actual VALUE_OUT_OF_RANGE |
boundary-k-invalid | boundary | pass | Expected VALUE_MUST_BE_POSITIVE · Actual VALUE_MUST_BE_POSITIVE |
boundary-sens-corr | boundary | pass | Expected u_c=0.3 · Actual mode=sensitivity · u_c=0.30000000000000004 · terms=2 · nu_eff_infinite=false |
boundary-rss-corr-reject | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
boundary-contrib-sum | boundary | pass | Expected u_c=0.22360679774997896 · Actual mode=sum · y=150 · u_c=0.223606797749979 · u_rel=0.00149071198499986 · a=100 · b=50 · ua=0.1 · ub=0.2 |
boundary-nueff-sens | boundary | pass | Expected nu_eff=32 · Actual mode=sensitivity · u_c=0.28284271247461906 · terms=2 · nu_eff=32.000000000000014 · nu_eff_infinite=false |
boundary-dof-length | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
boundary-nua-alone | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
boundary-student-t | boundary | pass | Expected nu_eff=9 · k=2.26215716274 · Actual mode=rss · u_c=0.1 · terms=1 · nu_eff=9 · nu_eff_infinite=false · k=2.2621571627981485 · U=0.22621571627981485 · k_source=student_t |
boundary-student-normal | boundary | pass | Expected k=1.95996398454 · Actual mode=sum · y=150 · u_c=0.223606797749979 · u_rel=0.00149071198499986 · a=100 · b=50 · ua=0.1 · ub=0.2 |
boundary-k-and-confidence | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
boundary-confidence-range | boundary | pass | Expected VALUE_OUT_OF_RANGE · Actual VALUE_OUT_OF_RANGE |
boundary-corr-confidence | boundary | pass | Expected CORRELATED_DOF_NOT_SUPPORTED · Actual CORRELATED_DOF_NOT_SUPPORTED |
boundary-corr-confidence-sens | boundary | pass | Expected CORRELATED_DOF_NOT_SUPPORTED · Actual CORRELATED_DOF_NOT_SUPPORTED |
boundary-mc-rect-corr | boundary | pass | Expected CORRELATED_NON_NORMAL_MC_NOT_SUPPORTED · Actual CORRELATED_NON_NORMAL_MC_NOT_SUPPORTED |
boundary-mc-quotient-unstable | boundary | pass | Expected MONTECARLO_UNSTABLE · Actual MONTECARLO_UNSTABLE |
boundary-cov-contrib | boundary | pass | Expected u_c=0.3 · Actual mode=sum · y=150 · u_c=0.30000000000000004 · u_rel=0.0020000000000000005 · a=100 · b=50 · ua=0.1 · ub=0.2 |
boundary-budget | boundary | pass | Expected y=5 · u_c=0.0022360679774997894 · Actual mode=budget · u_c=0.0022360679774997894 · u_rel=0.0004472135954999579 · y=5 · terms=2 · nu_eff_infinite=false |
boundary-budget-named-corr | boundary | pass | Expected u_c=0.3 · Actual mode=budget · u_c=0.30000000000000004 · terms=2 · nu_eff_infinite=false |
boundary-budget-empty | boundary | pass | Expected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT |
boundary-budget-partial-x | boundary | pass | Expected INVALID_INPUT · Actual INVALID_INPUT |
boundary-corr-psd-3x3 | boundary | pass | Expected u_c=0.20493901531919195 · Actual mode=sensitivity · u_c=0.20493901531919198 · terms=3 · nu_eff_infinite=false |
boundary-corr-singular-psd | boundary | pass | Expected u_c=0.3 · Actual mode=sensitivity · u_c=0.30000000000000004 · terms=3 · nu_eff_infinite=false |
boundary-corr-not-psd | boundary | pass | Expected CORRELATION_MATRIX_NOT_PSD · Actual CORRELATION_MATRIX_NOT_PSD |
boundary-corr-duplicate | boundary | pass | Expected DUPLICATE_CORRELATION · Actual DUPLICATE_CORRELATION |
boundary-corr-conflict | boundary | pass | Expected CONFLICTING_CORRELATION · Actual CONFLICTING_CORRELATION |
property-sum-y | property | pass | y=a+b |
property-sum-u | property | pass | u=√(ua²+ub²) |
property-diff-u | property | pass | diff shares RSS u |
property-product | property | pass | product absolute first-order |
property-product-a-zero | property | pass | product a=0 → y=0, u_c=|b|ua, u_rel null |
property-quotient-a-zero | property | pass | quotient a=0 → u_c=|ua/b|, u_rel null |
property-quotient-b-zero | property | pass | quotient b=0 → DIVISION_BY_ZERO |
property-sens | property | pass | √Σ(c·u)² |
property-rss | property | pass | 3-4-5 RSS |
property-zero-u | property | pass | all ua=0 → u_c=0 |
property-reported | property | pass | reported u_c=0.22 (2 sig) with formatted_y=150.00; raw retained |
property-unit-match | property | pass | matching units → V |
property-unit-mismatch | property | pass | V+A → UNIT_MISMATCH |
property-unit-si-prefix | property | pass | 1000 mV + 2 V → 3 V |
property-unit-product | property | pass | product units → VA |
property-unit-ohm | property | pass | V/A → Ω |
property-unit-mv-ma | property | pass | mV/mA → Ω after SI convert |
property-rho-perfect | property | pass | sum ρ=1 → ua+ub |
property-rho-anti | property | pass | sum ρ=−1 → |ua−ub| |
property-expanded-U | property | pass | U=k·u_c with reported.U |
property-sens-rho0 | property | pass | sensitivity ρ=0 matches uncorrelated |
property-contrib | property | pass | ub dominates → 80% |
property-nueff | property | pass | WS νeff with νb→∞ |
property-types | property | pass | Type A/B + labels pass-through |
property-student-t | property | pass | Student-t k(ν=9, p=0.95) |
property-budget | property | pass | budget y=Σx, Vref largest |
property-mc-sum | property | pass | MC sum ≈ linear u_c within 3% |
property-corr-singular-psd | property | pass | all ρ=1 3×3 → u_c=0.3 |
property-corr-not-psd | property | pass | pairwise |ρ|≤1 but non-PSD 3×3 → CORRELATION_MATRIX_NOT_PSD |