{
  "capability_id": "electrical.adc.error_budget",
  "calculation_version": "1.0.0",
  "protocol_version": "1.0.0-proposed",
  "protocol_document_status": "proposed",
  "verification_revision": "2026-09-09.o2-reproduce",
  "evidence_digest": "39673b9b9f33d295029becbd03a83491d7c1ae020b2dd0e92a35210fdea1b45c",
  "pack_kind": "public_o2_reproduce",
  "oracle": {
    "class": "O2",
    "module": "adc-error-budget-reference",
    "source": "/developers/cvp/reproduce/adc-error-budget-reference.mjs",
    "checker": "/developers/cvp/reproduce/check-adc-error-budget-o2.mjs",
    "independent_of_iut": true,
    "same_runtime_as_iut": true,
    "precision_bits": 53,
    "oracle_sha256": "1e0a9630cca0a2077ba0d2c425d1d65855ca2acf12c82b8578408450e1dfb3ac",
    "checker_sha256": "cceae43d428ef4b23133886e7f9cbf2f5deff3f4e47ab66c60307f5b85fd29a9",
    "notes": "Distinct module; does not import the production engine. Shares Node/V8 binary64 with the IUT. Expected values are computed by this oracle, not transcribed from IUT output."
  },
  "runtime_lock": {
    "runtime": "node",
    "compatible_execution": {
      "node": ">=18",
      "numeric_model": "IEEE-754 binary64"
    },
    "reference_environment": {
      "runtime": "node",
      "runtime_version": "22.16.0",
      "os": "linux",
      "numeric_model": "IEEE-754 binary64"
    },
    "engines": {
      "node": ">=18",
      "node_pinned": "22.16.0"
    },
    "numeric_model": "IEEE-754 binary64",
    "bit_for_bit": "Bit-for-bit agreement with published expected values is only claimed for the pinned reference_environment. Node >=18 is compatible within the declared ULP contract.",
    "imports": [],
    "files": [
      "adc-error-budget-reference.mjs",
      "check-adc-error-budget-o2.mjs"
    ]
  },
  "claim_scope": "Static DC LSB/V/%FS error-budget vs independent O2 (same V8, ≤2 ULP on err_LSB, LSB_V, err_V, err_pct_FS, codes). Not measured converter accuracy, not datasheet TUE that omits DNL, not O3.",
  "commands": {
    "run_oracle": "node public/developers/cvp/reproduce/check-adc-error-budget-o2.mjs",
    "run_oracle_public": "node check-adc-error-budget-o2.mjs",
    "run_oracle_against": "node check-adc-error-budget-o2.mjs --against reproduce.json",
    "run_pack": "node check-adc-error-budget-o2.mjs --against reproduce.json",
    "run_cvp": "npm run cvp:run -- --capability electrical.adc.error_budget",
    "rest_example": "POST https://www.calculatorx.com/api/v1/calc/adc-error-budget"
  },
  "public_files": {
    "oracle": "/developers/cvp/reproduce/adc-error-budget-reference.mjs",
    "oracle_url": "https://www.calculatorx.com/developers/cvp/reproduce/adc-error-budget-reference.mjs",
    "oracle_sha256": "1e0a9630cca0a2077ba0d2c425d1d65855ca2acf12c82b8578408450e1dfb3ac",
    "checker": "/developers/cvp/reproduce/check-adc-error-budget-o2.mjs",
    "checker_url": "https://www.calculatorx.com/developers/cvp/reproduce/check-adc-error-budget-o2.mjs",
    "checker_sha256": "cceae43d428ef4b23133886e7f9cbf2f5deff3f4e47ab66c60307f5b85fd29a9",
    "bundle": "/evidence/electrical.adc.error_budget/o2-reproduce-pack.zip",
    "bundle_url": "https://www.calculatorx.com/evidence/electrical.adc.error_budget/o2-reproduce-pack.zip",
    "manifest": "/evidence/electrical.adc.error_budget/1.0.0.cvp.json",
    "this_file": "/evidence/electrical.adc.error_budget/reproduce.json",
    "calculator": "/calc/electric/adc-error-budget",
    "bundle_sha256": "12d238483a9bc7930109b38003322f73a11b4a29cce3e517f0fc55901478d594",
    "bundle_size_bytes": 29107
  },
  "result_summary": {
    "passed": 6,
    "total": 6,
    "failed": 0,
    "max_error_ulp": 0,
    "threshold_ulp": 2,
    "evidence_digest": "39673b9b9f33d295029becbd03a83491d7c1ae020b2dd0e92a35210fdea1b45c"
  },
  "vectors": [
    {
      "id": "g-rss-12b",
      "kind": "o2-golden",
      "inputs": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "gain_err_LSB": 1,
        "offset_err_LSB": 0.5,
        "inl_LSB": 1,
        "dnl_LSB": 0.5,
        "combine": "rss"
      },
      "expected": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "codes": 4096,
        "LSB_V": 0.0008056640625,
        "combine": "rss",
        "err_LSB": 1.5811388300841898,
        "err_V": 0.0012738667332221254,
        "err_pct_FS": 0.03860202221885229
      },
      "actual": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "codes": 4096,
        "LSB_V": 0.0008056640625,
        "combine": "rss",
        "err_LSB": 1.5811388300841898,
        "err_V": 0.0012738667332221254,
        "err_pct_FS": 0.03860202221885229
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "g-wca",
      "kind": "o2-golden",
      "inputs": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "gain_err_LSB": 1,
        "offset_err_LSB": 0.5,
        "inl_LSB": 1,
        "dnl_LSB": 0.5,
        "combine": "worst_case"
      },
      "expected": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "codes": 4096,
        "LSB_V": 0.0008056640625,
        "combine": "worst_case",
        "err_LSB": 3,
        "err_V": 0.0024169921874999997,
        "err_pct_FS": 0.07324218749999999
      },
      "actual": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "codes": 4096,
        "LSB_V": 0.0008056640625,
        "combine": "worst_case",
        "err_LSB": 3,
        "err_V": 0.0024169921874999997,
        "err_pct_FS": 0.07324218749999999
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "g-zero",
      "kind": "o2-golden",
      "inputs": {
        "n_bits": 10,
        "FSR_V": 5
      },
      "expected": {
        "n_bits": 10,
        "FSR_V": 5,
        "codes": 1024,
        "LSB_V": 0.0048828125,
        "combine": "rss",
        "err_LSB": 0,
        "err_V": 0,
        "err_pct_FS": 0
      },
      "actual": {
        "n_bits": 10,
        "FSR_V": 5,
        "codes": 1024,
        "LSB_V": 0.0048828125,
        "combine": "rss",
        "err_LSB": 0,
        "err_V": 0,
        "err_pct_FS": 0
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "g-rss-1b",
      "kind": "o2-golden",
      "inputs": {
        "n_bits": 1,
        "FSR_V": 3.3,
        "gain_err_LSB": 1,
        "offset_err_LSB": 0.5,
        "inl_LSB": 1,
        "dnl_LSB": 0.5,
        "combine": "rss"
      },
      "expected": {
        "n_bits": 1,
        "FSR_V": 3.3,
        "codes": 2,
        "LSB_V": 1.65,
        "combine": "rss",
        "err_LSB": 1.5811388300841898,
        "err_V": 2.608879069638913,
        "err_pct_FS": 79.05694150420949
      },
      "actual": {
        "n_bits": 1,
        "FSR_V": 3.3,
        "codes": 2,
        "LSB_V": 1.65,
        "combine": "rss",
        "err_LSB": 1.5811388300841898,
        "err_V": 2.608879069638913,
        "err_pct_FS": 79.05694150420949
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "g-rss-32b",
      "kind": "o2-golden",
      "inputs": {
        "n_bits": 32,
        "FSR_V": 3.3,
        "gain_err_LSB": 1,
        "offset_err_LSB": 0.5,
        "inl_LSB": 1,
        "dnl_LSB": 0.5,
        "combine": "rss"
      },
      "expected": {
        "n_bits": 32,
        "FSR_V": 3.3,
        "codes": 4294967296,
        "LSB_V": 7.683411240577697e-10,
        "combine": "rss",
        "err_LSB": 1.5811388300841898,
        "err_V": 1.2148539859982733e-9,
        "err_pct_FS": 3.681375715146283e-8
      },
      "actual": {
        "n_bits": 32,
        "FSR_V": 3.3,
        "codes": 4294967296,
        "LSB_V": 7.683411240577697e-10,
        "combine": "rss",
        "err_LSB": 1.5811388300841898,
        "err_V": 1.2148539859982733e-9,
        "err_pct_FS": 3.681375715146283e-8
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    },
    {
      "id": "g-single-gain",
      "kind": "o2-golden",
      "inputs": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "gain_err_LSB": 1,
        "offset_err_LSB": 0,
        "inl_LSB": 0,
        "dnl_LSB": 0,
        "combine": "rss"
      },
      "expected": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "codes": 4096,
        "LSB_V": 0.0008056640625,
        "combine": "rss",
        "err_LSB": 1,
        "err_V": 0.0008056640625,
        "err_pct_FS": 0.0244140625
      },
      "actual": {
        "n_bits": 12,
        "FSR_V": 3.3,
        "codes": 4096,
        "LSB_V": 0.0008056640625,
        "combine": "rss",
        "err_LSB": 1,
        "err_V": 0.0008056640625,
        "err_pct_FS": 0.0244140625
      },
      "error_ulp": 0,
      "threshold_ulp": 2,
      "ok": true
    }
  ],
  "metamorphics": [
    {
      "id": "meta-rss-scale-2",
      "kind": "o2-metamorphic",
      "definition_id": "error-scale",
      "inputs": {
        "base": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "rss"
        },
        "follow": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 2,
          "offset_err_LSB": 1,
          "inl_LSB": 2,
          "dnl_LSB": 1,
          "combine": "rss"
        }
      },
      "relation": "err_LSB_ratio",
      "expect": 2
    },
    {
      "id": "meta-wca-scale-2",
      "kind": "o2-metamorphic",
      "definition_id": "error-scale",
      "inputs": {
        "base": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "worst_case"
        },
        "follow": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 2,
          "offset_err_LSB": 1,
          "inl_LSB": 2,
          "dnl_LSB": 1,
          "combine": "worst_case"
        }
      },
      "relation": "err_LSB_ratio",
      "expect": 2
    },
    {
      "id": "meta-fsr-scale-2-lsb",
      "kind": "o2-metamorphic",
      "definition_id": "fsr-scale",
      "inputs": {
        "base": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "rss"
        },
        "follow": {
          "n_bits": 12,
          "FSR_V": 6.6,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "rss"
        }
      },
      "relation": "err_LSB_delta",
      "expect": 0
    },
    {
      "id": "meta-fsr-scale-2-v",
      "kind": "o2-metamorphic",
      "definition_id": "fsr-scale",
      "inputs": {
        "base": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "rss"
        },
        "follow": {
          "n_bits": 12,
          "FSR_V": 6.6,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "rss"
        }
      },
      "relation": "err_V_ratio",
      "expect": 2
    },
    {
      "id": "meta-sign-rss",
      "kind": "o2-metamorphic",
      "definition_id": "error-sign-invariance",
      "inputs": {
        "base": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "rss"
        },
        "follow": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": -1,
          "offset_err_LSB": -0.5,
          "inl_LSB": -1,
          "dnl_LSB": -0.5,
          "combine": "rss"
        }
      },
      "relation": "err_LSB_delta",
      "expect": 0
    },
    {
      "id": "meta-sign-wca",
      "kind": "o2-metamorphic",
      "definition_id": "error-sign-invariance",
      "inputs": {
        "base": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": 1,
          "offset_err_LSB": 0.5,
          "inl_LSB": 1,
          "dnl_LSB": 0.5,
          "combine": "worst_case"
        },
        "follow": {
          "n_bits": 12,
          "FSR_V": 3.3,
          "gain_err_LSB": -1,
          "offset_err_LSB": -0.5,
          "inl_LSB": -1,
          "dnl_LSB": -0.5,
          "combine": "worst_case"
        }
      },
      "relation": "err_LSB_delta",
      "expect": 0
    }
  ],
  "package_files": [
    {
      "path": "adc-error-budget-reference.mjs",
      "sha256": "1e0a9630cca0a2077ba0d2c425d1d65855ca2acf12c82b8578408450e1dfb3ac",
      "role": "oracle"
    },
    {
      "path": "check-adc-error-budget-o2.mjs",
      "sha256": "cceae43d428ef4b23133886e7f9cbf2f5deff3f4e47ab66c60307f5b85fd29a9",
      "role": "checker"
    },
    {
      "path": "README.txt",
      "sha256": "9491e2c497fc6dae5b83fdf054a113f519dafefb0ebbe98a351dab0897b80ced",
      "role": "readme"
    },
    {
      "path": "reproduce.json",
      "sha256": "7140191efcf727179c90e6cbf4f44f5fd9c15e851781365e90714a9e4e34f64f",
      "role": "vectors"
    }
  ],
  "bundle": {
    "url": "https://www.calculatorx.com/evidence/electrical.adc.error_budget/o2-reproduce-pack.zip",
    "path": "/evidence/electrical.adc.error_budget/o2-reproduce-pack.zip",
    "sha256": "12d238483a9bc7930109b38003322f73a11b4a29cce3e517f0fc55901478d594",
    "size_bytes": 29107
  }
}
