{
  "capability_id": "engineering.uncertainty.propagate",
  "tool_id": "uncertainty-propagate",
  "engine": "uncertainty-propagate",
  "calculation_version": "1.4.0",
  "generated_at": "2026-08-10T12:57:35.620Z",
  "engine_build": "2026-08-10",
  "test_count": 51,
  "passed": 51,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "total": 7,
      "passed": 7
    },
    "boundary": {
      "total": 26,
      "passed": 26
    },
    "property": {
      "total": 18,
      "passed": 18
    }
  },
  "engine_tested": true,
  "expert_reviewed": true,
  "internally_reviewed": false,
  "review_kind": "expert",
  "source_checked": true,
  "reviewed_by": "CalculatorX engineering review",
  "reviewer_role": "metrology-engineer",
  "last_reviewed": "2026-08-10",
  "expert_review": {
    "status": "approved",
    "reviewer": {
      "name": "CalculatorX engineering review",
      "role": "metrology-engineer"
    },
    "reviewed_at": "2026-08-10",
    "scope": [
      "formula",
      "input semantics",
      "assumptions",
      "limitations",
      "sources",
      "tests"
    ],
    "kind": "expert"
  },
  "internal_review": {
    "status": "not_applicable",
    "reviewer": null
  },
  "page": "https://www.calculatorx.com/calc/engineering/uncertainty-propagate",
  "api": "https://www.calculatorx.com/api/v1/calc/uncertainty-propagate",
  "schema_input": "https://www.calculatorx.com/schemas/engineering.uncertainty.propagate.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/engineering.uncertainty.propagate.output.json",
  "assumptions": [
    "Default uncorrelated (rho=0); optional correlations when provided.",
    "Linear propagation assumes a local first-order approximation is adequate. For significant model nonlinearity, consider higher-order treatment (JCGM 100:2008/Amd.1:2026) or Monte Carlo propagation (JCGM 101:2008)."
  ],
  "limitations": [
    "Linear (first-order) GUM model; default uncorrelated (rho=0). Optional binary rho or sensitivity correlations[]. For significant nonlinearity see JCGM 100 Amd.1:2026 / Monte Carlo (JCGM 101)",
    "Optional k → U=k·u_c only — not Welch–Satterthwaite νeff / Type A/B budget / Monte Carlo",
    "Product/quotient use absolute first-order forms; quotient rejects b=0 (DIVISION_BY_ZERO); u_rel omitted when y=0",
    "Optional unit_a/unit_b are labels only (sum/difference require match → UNIT_MISMATCH); not a full quantity/SI engine",
    "rho ∉ [-1,1] → VALUE_OUT_OF_RANGE; k≤0 → VALUE_MUST_BE_POSITIVE; RSS rejects correlations; unknown mode → INVALID_MODE"
  ],
  "boundary_conditions": [
    "Missing required fields → MISSING_REQUIRED_INPUT",
    "Negative ua/ub → VALUE_MUST_BE_NON_NEGATIVE",
    "Unknown mode → INVALID_MODE",
    "Quotient with b=0 → DIVISION_BY_ZERO",
    "Product with a=0 or b=0 is allowed (absolute form); u_rel omitted when y=0",
    "sum/difference with unit_a ≠ unit_b → UNIT_MISMATCH",
    "rho ∉ [-1,1] → VALUE_OUT_OF_RANGE; k≤0 → VALUE_MUST_BE_POSITIVE",
    "RSS with correlations → INVALID_INPUT"
  ],
  "sources": [
    "JCGM 100:2008 — Evaluation of measurement data (GUM) — Law of propagation of uncertainty — u_c² = Σ (∂f/∂xᵢ)² u²(xᵢ) for uncorrelated inputs (https://www.bipm.org/en/committees/jc/jcgm/publications)",
    "JCGM 100:2008/Amd.1:2026 — Nonlinearity in measurement models — Amendment 1 — First-order linear propagation may be inadequate when the measurement model is significantly nonlinear (https://www.bipm.org/en/committees/jc/jcgm/publications)",
    "JCGM GUM-6:2020 — Developing and using measurement models — Measurement modelling — Guidance on constructing measurement models for uncertainty evaluation (https://www.bipm.org/en/committees/jc/jcgm/publications)",
    "JCGM 101:2008 — Propagation of distributions using a Monte Carlo method — GUM Supplement 1 — Reference for Monte Carlo propagation when linear approximation is inadequate (out of scope for this calculator) (https://www.bipm.org/en/committees/jc/jcgm/publications)",
    "NIST Technical Note 1297 — Guidelines for evaluating and expressing uncertainty — Combined standard uncertainty practice; reporting of u_c (https://www.nist.gov/pml/nist-technical-note-1297)",
    "NIST Guide to the SI (SP 811) — Expression of uncertainty with SI quantities — Unit-consistent reporting of results and uncertainties (https://www.nist.gov/pml/special-publication-811)"
  ],
  "fingerprint": "sha256:7c3ba12991e28d84b5fa889f0c1b9410756207c7218865fd883bfab4b34ef2e4",
  "tests": [
    {
      "id": "sum-default",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2
      },
      "expect": {
        "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,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.22,
          "y": 150,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "product-default",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "product",
        "a": 10,
        "ua": 0.1,
        "b": 5,
        "ub": 0.05
      },
      "expect": {
        "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,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.71,
          "y": 50,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "sensitivity",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "sensitivity",
        "coefficients": [
          2,
          3
        ],
        "uncertainties": [
          0.1,
          0.2
        ],
        "y": 10
      },
      "expect": {
        "u_c": 0.6324555320336759,
        "u_rel": 0.06324555320336758
      },
      "actual": {
        "mode": "sensitivity",
        "u_c": 0.632455532033676,
        "u_rel": 0.0632455532033676,
        "y": 10,
        "unit": null,
        "terms": 2,
        "correlations": [],
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.63,
          "y": 10,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "rss",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "rss",
        "uncertainties": [
          0.3,
          0.4
        ]
      },
      "expect": {
        "u_c": 0.5
      },
      "actual": {
        "mode": "rss",
        "u_c": 0.5,
        "y": null,
        "unit": null,
        "terms": 2,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.5,
          "y": null,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "product-a-zero",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "product",
        "a": 0,
        "ua": 0.1,
        "b": 5,
        "ub": 0.05
      },
      "expect": {
        "y": 0,
        "u_c": 0.5
      },
      "actual": {
        "mode": "product",
        "y": 0,
        "u_c": 0.5,
        "u_rel": null,
        "a": 0,
        "b": 5,
        "ua": 0.1,
        "ub": 0.05,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.5,
          "y": 0,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "quotient-b-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "quotient",
        "a": 1,
        "ua": 0.1,
        "b": 0,
        "ub": 0.05
      },
      "expectError": "DIVISION_BY_ZERO",
      "code": "DIVISION_BY_ZERO",
      "error": "b must be non-zero for quotient"
    },
    {
      "id": "missing-ua",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 1,
        "b": 2,
        "ub": 0.1
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "ua is required"
    },
    {
      "id": "invalid-mode",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "montecarlo",
        "a": 1,
        "ua": 0.1,
        "b": 2,
        "ub": 0.1
      },
      "expectError": "INVALID_MODE",
      "code": "INVALID_MODE",
      "error": "unsupported uncertainty mode"
    },
    {
      "id": "rho-sum",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2,
        "rho": 1
      },
      "expect": {
        "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,
        "rho": 1,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.3,
          "y": 150,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "k-expanded",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2,
        "k": 2
      },
      "expect": {
        "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,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": 2,
        "U": 0.447213595499958,
        "reported": {
          "u_c": 0.22,
          "y": 150,
          "significant_digits": 2,
          "k": 2,
          "U": 0.45
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-sum",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2
      },
      "expect": {
        "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,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.22,
          "y": 150,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-product-a-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "product",
        "a": 0,
        "ua": 0.1,
        "b": 5,
        "ub": 0.05
      },
      "expect": {
        "y": 0,
        "u_c": 0.5
      },
      "actual": {
        "mode": "product",
        "y": 0,
        "u_c": 0.5,
        "u_rel": null,
        "a": 0,
        "b": 5,
        "ua": 0.1,
        "ub": 0.05,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.5,
          "y": 0,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-product-b-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "product",
        "a": 5,
        "ua": 0.1,
        "b": 0,
        "ub": 0.05
      },
      "expect": {
        "y": 0,
        "u_c": 0.25
      },
      "actual": {
        "mode": "product",
        "y": 0,
        "u_c": 0.25,
        "u_rel": null,
        "a": 5,
        "b": 0,
        "ua": 0.1,
        "ub": 0.05,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.25,
          "y": 0,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-quotient-a-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "quotient",
        "a": 0,
        "ua": 0.1,
        "b": 5,
        "ub": 0.05
      },
      "expect": {
        "y": 0,
        "u_c": 0.02
      },
      "actual": {
        "mode": "quotient",
        "y": 0,
        "u_c": 0.020000000000000004,
        "u_rel": null,
        "a": 0,
        "b": 5,
        "ua": 0.1,
        "ub": 0.05,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.02,
          "y": 0,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-quotient-b-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "quotient",
        "a": 1,
        "ua": 0.1,
        "b": 0,
        "ub": 0.05
      },
      "expectError": "DIVISION_BY_ZERO",
      "code": "DIVISION_BY_ZERO",
      "error": "b must be non-zero for quotient"
    },
    {
      "id": "boundary-sensitivity",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sensitivity",
        "coefficients": [
          2,
          3
        ],
        "uncertainties": [
          0.1,
          0.2
        ],
        "y": 10
      },
      "expect": {
        "u_c": 0.6324555320336759,
        "u_rel": 0.06324555320336758
      },
      "actual": {
        "mode": "sensitivity",
        "u_c": 0.632455532033676,
        "u_rel": 0.0632455532033676,
        "y": 10,
        "unit": null,
        "terms": 2,
        "correlations": [],
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.63,
          "y": 10,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-rss",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "rss",
        "uncertainties": [
          0.3,
          0.4
        ]
      },
      "expect": {
        "u_c": 0.5
      },
      "actual": {
        "mode": "rss",
        "u_c": 0.5,
        "y": null,
        "unit": null,
        "terms": 2,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.5,
          "y": null,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-all-zero-u",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 1,
        "ua": 0,
        "b": 1,
        "ub": 0
      },
      "expect": {
        "y": 2,
        "u_c": 0
      },
      "actual": {
        "mode": "sum",
        "y": 2,
        "u_c": 0,
        "u_rel": 0,
        "a": 1,
        "b": 1,
        "ua": 0,
        "ub": 0,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0,
          "y": 2,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-coeffs-length",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sensitivity",
        "coefficients": [
          1,
          2
        ],
        "uncertainties": [
          0.1
        ]
      },
      "expectError": "INVALID_INPUT",
      "code": "INVALID_INPUT",
      "error": "coefficients must match uncertainties length"
    },
    {
      "id": "boundary-empty-uncertainties",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "rss",
        "uncertainties": []
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "uncertainties array is required"
    },
    {
      "id": "boundary-neg-ua",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 1,
        "ua": -0.1,
        "b": 2,
        "ub": 0.1
      },
      "expectError": "VALUE_MUST_BE_NON_NEGATIVE",
      "code": "VALUE_MUST_BE_NON_NEGATIVE",
      "error": "ua must be ≥ 0"
    },
    {
      "id": "boundary-unit-mismatch",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2,
        "unit_a": "V",
        "unit_b": "A"
      },
      "expectError": "UNIT_MISMATCH",
      "code": "UNIT_MISMATCH",
      "error": "unit_a and unit_b must match for sum/difference"
    },
    {
      "id": "boundary-unit-sum",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2,
        "unit_a": "V",
        "unit_b": "V"
      },
      "expect": {
        "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,
        "rho": 0,
        "unit": "V",
        "unit_a": "V",
        "unit_b": "V",
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.22,
          "y": 150,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-unit-product",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "product",
        "a": 230,
        "ua": 1,
        "b": 12,
        "ub": 0.1,
        "unit_a": "V",
        "unit_b": "A"
      },
      "expect": {
        "y": 2760,
        "unit": "V·A"
      },
      "actual": {
        "mode": "product",
        "y": 2760,
        "u_c": 25.942243542145693,
        "u_rel": 0.0093993636022267,
        "a": 230,
        "b": 12,
        "ua": 1,
        "ub": 0.1,
        "rho": 0,
        "unit": "V·A",
        "unit_a": "V",
        "unit_b": "A",
        "k": null,
        "U": null,
        "reported": {
          "u_c": 26,
          "y": 2760,
          "significant_digits": 2
        }
      },
      "tol": 1e-9
    },
    {
      "id": "boundary-missing-ua",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 1,
        "b": 2,
        "ub": 0.1
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "ua is required"
    },
    {
      "id": "boundary-invalid-mode",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "montecarlo",
        "a": 1,
        "ua": 0.1,
        "b": 2,
        "ub": 0.1
      },
      "expectError": "INVALID_MODE",
      "code": "INVALID_MODE",
      "error": "unsupported uncertainty mode"
    },
    {
      "id": "boundary-rho-sum",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2,
        "rho": 1
      },
      "expect": {
        "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,
        "rho": 1,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.3,
          "y": 150,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-rho-diff",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "difference",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2,
        "rho": 1
      },
      "expect": {
        "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,
        "rho": 1,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.1,
          "y": 50,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-rho-out",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 1,
        "ua": 0.1,
        "b": 2,
        "ub": 0.1,
        "rho": 1.5
      },
      "expectError": "VALUE_OUT_OF_RANGE",
      "code": "VALUE_OUT_OF_RANGE",
      "error": "rho must be in [-1, 1]"
    },
    {
      "id": "boundary-k-expanded",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 100,
        "ua": 0.1,
        "b": 50,
        "ub": 0.2,
        "k": 2
      },
      "expect": {
        "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,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": 2,
        "U": 0.447213595499958,
        "reported": {
          "u_c": 0.22,
          "y": 150,
          "significant_digits": 2,
          "k": 2,
          "U": 0.45
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-k-invalid",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sum",
        "a": 1,
        "ua": 0.1,
        "b": 2,
        "ub": 0.1,
        "k": 0
      },
      "expectError": "VALUE_MUST_BE_POSITIVE",
      "code": "VALUE_MUST_BE_POSITIVE",
      "error": "k must be > 0"
    },
    {
      "id": "boundary-sens-corr",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "sensitivity",
        "coefficients": [
          1,
          1
        ],
        "uncertainties": [
          0.1,
          0.2
        ],
        "correlations": [
          {
            "i": 0,
            "j": 1,
            "rho": 1
          }
        ]
      },
      "expect": {
        "u_c": 0.3
      },
      "actual": {
        "mode": "sensitivity",
        "u_c": 0.30000000000000004,
        "u_rel": null,
        "y": null,
        "unit": null,
        "terms": 2,
        "correlations": [
          {
            "i": 0,
            "j": 1,
            "rho": 1
          }
        ],
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.3,
          "y": null,
          "significant_digits": 2
        }
      },
      "tol": 1e-12
    },
    {
      "id": "boundary-rss-corr-reject",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "rss",
        "uncertainties": [
          0.1,
          0.2
        ],
        "correlations": [
          {
            "i": 0,
            "j": 1,
            "rho": 0.5
          }
        ]
      },
      "expectError": "INVALID_INPUT",
      "code": "INVALID_INPUT",
      "error": "correlations require sensitivity mode"
    },
    {
      "id": "property-sum-y",
      "ok": true,
      "kind": "property",
      "detail": "y=a+b",
      "expect": 150,
      "actual": 150
    },
    {
      "id": "property-sum-u",
      "ok": true,
      "kind": "property",
      "detail": "u=√(ua²+ub²)",
      "expect": 0.22360679774997896,
      "actual": 0.223606797749979
    },
    {
      "id": "property-diff-u",
      "ok": true,
      "kind": "property",
      "detail": "diff shares RSS u",
      "expect": 0.223606797749979,
      "actual": 0.223606797749979
    },
    {
      "id": "property-product",
      "ok": true,
      "kind": "property",
      "detail": "product absolute first-order",
      "expect": {
        "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,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.71,
          "y": 50,
          "significant_digits": 2
        }
      }
    },
    {
      "id": "property-product-a-zero",
      "ok": true,
      "kind": "property",
      "detail": "product a=0 → y=0, u_c=|b|ua, u_rel null",
      "expect": {
        "y": 0,
        "u_c": 0.5,
        "u_rel": null
      },
      "actual": {
        "mode": "product",
        "y": 0,
        "u_c": 0.5,
        "u_rel": null,
        "a": 0,
        "b": 5,
        "ua": 0.1,
        "ub": 0.05,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.5,
          "y": 0,
          "significant_digits": 2
        }
      }
    },
    {
      "id": "property-quotient-a-zero",
      "ok": true,
      "kind": "property",
      "detail": "quotient a=0 → u_c=|ua/b|, u_rel null",
      "expect": {
        "y": 0,
        "u_c": 0.02,
        "u_rel": null
      },
      "actual": {
        "mode": "quotient",
        "y": 0,
        "u_c": 0.020000000000000004,
        "u_rel": null,
        "a": 0,
        "b": 5,
        "ua": 0.1,
        "ub": 0.05,
        "rho": 0,
        "unit": null,
        "unit_a": null,
        "unit_b": null,
        "k": null,
        "U": null,
        "reported": {
          "u_c": 0.02,
          "y": 0,
          "significant_digits": 2
        }
      }
    },
    {
      "id": "property-quotient-b-zero",
      "ok": true,
      "kind": "property",
      "detail": "quotient b=0 → DIVISION_BY_ZERO",
      "expect": "DIVISION_BY_ZERO",
      "actual": true
    },
    {
      "id": "property-sens",
      "ok": true,
      "kind": "property",
      "detail": "√Σ(c·u)²",
      "expect": 0.6324555320336759,
      "actual": 0.632455532033676
    },
    {
      "id": "property-rss",
      "ok": true,
      "kind": "property",
      "detail": "3-4-5 RSS",
      "expect": 0.5,
      "actual": 0.5
    },
    {
      "id": "property-zero-u",
      "ok": true,
      "kind": "property",
      "detail": "all ua=0 → u_c=0",
      "expect": 0,
      "actual": 0
    },
    {
      "id": "property-reported",
      "ok": true,
      "kind": "property",
      "detail": "reported u_c=0.22 (2 sig); raw retained",
      "expect": {
        "reported_u_c": 0.22,
        "raw": 0.22360679774997896
      },
      "actual": {
        "u_c": 0.22,
        "y": 150,
        "significant_digits": 2
      }
    },
    {
      "id": "property-unit-match",
      "ok": true,
      "kind": "property",
      "detail": "matching units → V",
      "expect": "V",
      "actual": "V"
    },
    {
      "id": "property-unit-mismatch",
      "ok": true,
      "kind": "property",
      "detail": "V+A → UNIT_MISMATCH",
      "expect": "UNIT_MISMATCH",
      "actual": true
    },
    {
      "id": "property-unit-product",
      "ok": true,
      "kind": "property",
      "detail": "product units → V·A",
      "expect": "V·A",
      "actual": "V·A"
    },
    {
      "id": "property-rho-perfect",
      "ok": true,
      "kind": "property",
      "detail": "sum ρ=1 → ua+ub",
      "expect": 0.3,
      "actual": 0.30000000000000004
    },
    {
      "id": "property-rho-anti",
      "ok": true,
      "kind": "property",
      "detail": "sum ρ=−1 → |ua−ub|",
      "expect": 0.1,
      "actual": 0.1
    },
    {
      "id": "property-expanded-U",
      "ok": true,
      "kind": "property",
      "detail": "U=k·u_c with reported.U",
      "expect": {
        "U": 0.4472135954999579,
        "reported_U": 0.45
      },
      "actual": {
        "U": 0.447213595499958,
        "reported_U": 0.45
      }
    },
    {
      "id": "property-sens-rho0",
      "ok": true,
      "kind": "property",
      "detail": "sensitivity ρ=0 matches uncorrelated",
      "expect": 0.6324555320336759,
      "actual": 0.632455532033676
    }
  ],
  "tier": "expert_verified"
}
