{
  "capability_id": "engineering.uncertainty.type_b_nu",
  "calculation_version": "1.0.0",
  "protocol_version": "1.0.0-proposed",
  "protocol_document_status": "proposed",
  "verification_revision": "2026-09-16.o2-o3",
  "oracle": {
    "class": "O3",
    "library": "mpmath 1.4.1",
    "mpmath_dps": 80,
    "backend": null,
    "rounding": null,
    "generator_id": "type-b-nu-mpmath-o3",
    "generator_version": "1.0.0",
    "generator_sha256": "22045c453cab09f2f9ead5cf4a487b9d6ec06bba64a740def78bb76651658592",
    "table_sha256": "5df02b81ce3ba86dff9a8c8250667e83c67340870bd77a6a28eddfc632cfda7a",
    "seed": "20260916.type-b-nu-o3",
    "independent_of_iut": true
  },
  "claim_scope": "O2: GUM G.4.2 ν = ½(u/σ(u))² vs separate-module identities (≤2 ULP). Not Type B u_B, not Welch ν_eff, not U=k·u_c. ≤2 ULP vs O3 applies only to the published tabulated G.4.2 vectors (GUM 25%, infinite, 10%, aliases, scale, σ(u)/u=0.5). It is not a whole-domain guarantee and does not cover Welch ν_eff or U=k·u_c.",
  "commands": {
    "regenerate_table": "python3 generate-type-b-nu-o3.py",
    "regenerate_table_repo": "python3 scripts/lib/cvp/oracles/generate-type-b-nu-o3.py",
    "independent_rest": "Compare POST /api/v1/calc/type-b-nu against /developers/cvp/reproduce/type-b-nu-o3-tables.json",
    "run_cvp": "npm run cvp:run -- --capability engineering.uncertainty.type_b_nu",
    "rest_example": "POST https://www.calculatorx.com/api/v1/calc/type-b-nu"
  },
  "public_files": {
    "table": "/developers/cvp/reproduce/type-b-nu-o3-tables.json",
    "table_url": "https://www.calculatorx.com/developers/cvp/reproduce/type-b-nu-o3-tables.json",
    "generator": "/developers/cvp/reproduce/generate-type-b-nu-o3.py",
    "generator_url": "https://www.calculatorx.com/developers/cvp/reproduce/generate-type-b-nu-o3.py",
    "checker": "/developers/cvp/reproduce/check-math-o3-rest.py",
    "checker_url": "https://www.calculatorx.com/developers/cvp/reproduce/check-math-o3-rest.py",
    "manifest": "/evidence/engineering.uncertainty.type_b_nu/1.0.0.cvp.json",
    "this_file": "/evidence/engineering.uncertainty.type_b_nu/reproduce.json"
  },
  "result_summary": {
    "passed": 8,
    "total": 8,
    "failed": 0,
    "max_error_ulp": 1,
    "threshold_ulp": 2,
    "max_threshold_ulp": 2
  },
  "vectors": [
    {
      "id": "o3-gum25",
      "kind": "finite",
      "inputs": {
        "u": 2,
        "sigma_u": 0.5
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": false,
        "nu": 8,
        "rel": 0.25
      },
      "actual": {
        "nu": 8,
        "rel": 0.25,
        "u": 2,
        "sigma_u": 0.5,
        "infinite": false
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-inf",
      "kind": "infinite",
      "inputs": {
        "u": 1,
        "sigma_u": 0
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": true,
        "nu": null,
        "rel": 0
      },
      "actual": {
        "nu": null,
        "rel": 0,
        "u": 1,
        "sigma_u": 0,
        "infinite": true
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-10pct",
      "kind": "finite",
      "inputs": {
        "u": 1,
        "sigma_u": 0.1
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": false,
        "nu": 50,
        "rel": 0.1
      },
      "actual": {
        "nu": 49.99999999999999,
        "rel": 0.1,
        "u": 1,
        "sigma_u": 0.1,
        "infinite": false
      },
      "error_ulp": 1,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-alias",
      "kind": "alias",
      "inputs": {
        "u_B": 2,
        "su": 0.5
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": false,
        "nu": 8,
        "rel": 0.25
      },
      "actual": {
        "nu": 8,
        "rel": 0.25,
        "u": 2,
        "sigma_u": 0.5,
        "infinite": false
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-scale",
      "kind": "finite",
      "inputs": {
        "u": 4,
        "sigma_u": 1
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": false,
        "nu": 8,
        "rel": 0.25
      },
      "actual": {
        "nu": 8,
        "rel": 0.25,
        "u": 4,
        "sigma_u": 1,
        "infinite": false
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-half",
      "kind": "finite",
      "inputs": {
        "u": 2,
        "sigma_u": 1
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": false,
        "nu": 2,
        "rel": 0.5
      },
      "actual": {
        "nu": 2,
        "rel": 0.5,
        "u": 2,
        "sigma_u": 1,
        "infinite": false
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-ui",
      "kind": "alias",
      "inputs": {
        "u_i": 2,
        "delta_u": 0.5
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": false,
        "nu": 8,
        "rel": 0.25
      },
      "actual": {
        "nu": 8,
        "rel": 0.25,
        "u": 2,
        "sigma_u": 0.5,
        "infinite": false
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "o3-tight",
      "kind": "finite",
      "inputs": {
        "u": 10,
        "sigma_u": 0.05
      },
      "expected_f64": {
        "oracle_layer": "analytic",
        "infinite": false,
        "nu": 20000,
        "rel": 0.005
      },
      "actual": {
        "nu": 20000,
        "rel": 0.005,
        "u": 10,
        "sigma_u": 0.05,
        "infinite": false
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    }
  ]
}
