{
  "capability_id": "math.ratio",
  "tool_id": "ratio",
  "engine": "ratio",
  "calculation_version": "1.0.2",
  "generated_at": "2026-09-16T22:03:43.772Z",
  "engine_build": "2026-09-16",
  "test_count": 26,
  "passed": 26,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "total": 11,
      "passed": 11
    },
    "boundary": {
      "total": 7,
      "passed": 7
    },
    "property": {
      "total": 8,
      "passed": 8
    }
  },
  "engine_tested": true,
  "expert_reviewed": false,
  "internally_reviewed": false,
  "review_kind": null,
  "source_checked": true,
  "reviewed_by": null,
  "reviewer_role": null,
  "last_reviewed": null,
  "expert_review": {
    "status": "optional_not_performed",
    "reviewer": null,
    "scope": [
      "formula",
      "input semantics",
      "assumptions",
      "limitations",
      "sources",
      "tests"
    ],
    "note": "Domain expert review is optional under CVP (CVP-EXP-01). Absence does not block CVP Verified. See Review policy for supplemental domain assurance."
  },
  "internal_review": {
    "status": "not_applicable",
    "reviewer": null
  },
  "page": "https://www.calculatorx.com/calc/math/ratio",
  "api": "https://www.calculatorx.com/api/v1/calc/ratio",
  "schema_input": "https://www.calculatorx.com/schemas/math.ratio.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/math.ratio.output.json",
  "assumptions": [
    "Finite rationals: integers, terminating decimals, or simple fractions a/b.",
    "Proportion denominators in A/B or C/D must be nonzero when used.",
    "Simplify / proportion / compare allow negative terms. Split does not."
  ],
  "limitations": [
    "Integers, terminating decimals, and simple a/b fractions only (no mixed numbers or scientific notation)",
    "Each term ≤ 48 decimal digits",
    "Simplify / proportion / compare allow negative terms",
    "Split requires every term ≥ 0 and Σ terms > 0 → SPLIT_NEGATIVE_TERM / SPLIT_ZERO_SUM",
    "All-zero simplify → ALL_ZERO",
    "Proportion needs exactly one blank among A,B,C,D → PROPORTION_ONE_BLANK",
    "Expert review pending — L1 engine-tested / source-checked"
  ],
  "boundary_conditions": [
    "Cannot simplify an all-zero ratio → ALL_ZERO",
    "Proportion needs exactly one blank among A,B,C,D → PROPORTION_ONE_BLANK",
    "Split requires every ratio term ≥ 0 → SPLIT_NEGATIVE_TERM",
    "Split requires Σ terms > 0 → SPLIT_ZERO_SUM",
    "Scale divide-by-zero → DIVISION_BY_ZERO"
  ],
  "sources": [
    {
      "title": "OpenStax Prealgebra 2e — Ratios and Rates",
      "section": "5.6 Ratios and rates; writing and simplifying A:B",
      "url": "https://openstax.org/books/prealgebra-2e/pages/5-6-ratios-and-rates",
      "supports": "A ratio compares two quantities; equivalent ratios are found by multiplying or dividing all terms by the same nonzero number; simplify by dividing by the GCF",
      "kind": "reference"
    },
    {
      "title": "OpenStax Prealgebra 2e — Solve Proportions",
      "section": "6.5 Cross-multiply to solve A/B = C/D",
      "url": "https://openstax.org/books/prealgebra-2e/pages/6-5-solve-proportions-and-their-applications",
      "supports": "A proportion is two equal ratios; missing terms are solved by cross-multiplication",
      "kind": "reference"
    },
    {
      "title": "Encyclopedia of Mathematics — Greatest common divisor",
      "section": "Pairwise Euclidean GCF used after clearing denominators",
      "url": "https://encyclopediaofmath.org/wiki/Greatest_common_divisor",
      "supports": "Computation of the GCF of the integerized ratio terms after clearing denominators; multiple-term GCF is obtained iteratively (GCF(a,b,c)=GCF(GCF(a,b),c))",
      "kind": "reference"
    },
    {
      "title": "CalculatorX split convention",
      "section": "Nonnegative parts only",
      "supports": "Split requires every term ≥ 0 and Σ terms > 0, so shares are nonnegative allocations of a total",
      "kind": "definition"
    }
  ],
  "methods": [],
  "fingerprint": "sha256:dac908da70997d5d17219bced551bfbb3489d162043cbc082941e63da82008f4",
  "tests": [
    {
      "id": "simplify-12-18",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "simplify",
        "a": 12,
        "b": 18
      },
      "expect": {
        "value": "2:3",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "calculation_version": "1.0.2",
        "inputs_summary": "12:18",
        "steps": [
          "Given: 12:18",
          "Divide both terms by GCF 6.",
          "Simplified: 2:3"
        ]
      },
      "expectWarning": null,
      "actual": {
        "mode": "simplify",
        "mode_label": "Simplify",
        "calculation_version": "1.0.2",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "heading": "Simplified ratio",
        "value": "2:3",
        "ratio": "2:3",
        "terms": [
          2,
          3
        ],
        "terms_exact": [
          "2",
          "3"
        ],
        "gcf": 6,
        "clearing_factor": 1,
        "inputs_summary": "12:18",
        "explainer": "12:18 → 2:3.",
        "steps": [
          "Given: 12:18",
          "Divide both terms by GCF 6.",
          "Simplified: 2:3"
        ],
        "viz_terms": [
          {
            "value": "2",
            "n": "2",
            "d": "1"
          },
          {
            "value": "3",
            "n": "3",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "simplify-decimal",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "simplify",
        "a": "1.5",
        "b": "2.25"
      },
      "expect": {
        "value": "2:3",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "calculation_version": "1.0.2",
        "inputs_summary": "1.5:2.25",
        "steps": [
          "Given: 1.5:2.25",
          "Exact rationals → multiply both terms by LCM of denominators 4 → 6:9.",
          "GCF = 3",
          "Simplified: 2:3"
        ]
      },
      "expectWarning": null,
      "actual": {
        "mode": "simplify",
        "mode_label": "Simplify",
        "calculation_version": "1.0.2",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "heading": "Simplified ratio",
        "value": "2:3",
        "ratio": "2:3",
        "terms": [
          2,
          3
        ],
        "terms_exact": [
          "2",
          "3"
        ],
        "gcf": 3,
        "clearing_factor": 4,
        "inputs_summary": "1.5:2.25",
        "explainer": "1.5:2.25 → 2:3.",
        "steps": [
          "Given: 1.5:2.25",
          "Exact rationals → multiply both terms by LCM of denominators 4 → 6:9.",
          "GCF = 3",
          "Simplified: 2:3"
        ],
        "viz_terms": [
          {
            "value": "2",
            "n": "2",
            "d": "1"
          },
          {
            "value": "3",
            "n": "3",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "simplify-fraction",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "simplify",
        "a": "3/4",
        "b": "5/6"
      },
      "expect": {
        "value": "9:10",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "calculation_version": "1.0.2",
        "inputs_summary": "0.75:5/6",
        "steps": [
          "Given: 0.75:5/6",
          "Exact rationals → multiply both terms by LCM of denominators 12 → 9:10.",
          "GCF = 1",
          "Simplified: 9:10"
        ]
      },
      "expectWarning": null,
      "actual": {
        "mode": "simplify",
        "mode_label": "Simplify",
        "calculation_version": "1.0.2",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "heading": "Simplified ratio",
        "value": "9:10",
        "ratio": "9:10",
        "terms": [
          9,
          10
        ],
        "terms_exact": [
          "9",
          "10"
        ],
        "gcf": 1,
        "clearing_factor": 12,
        "inputs_summary": "0.75:5/6",
        "explainer": "0.75:5/6 → 9:10.",
        "steps": [
          "Given: 0.75:5/6",
          "Exact rationals → multiply both terms by LCM of denominators 12 → 9:10.",
          "GCF = 1",
          "Simplified: 9:10"
        ],
        "viz_terms": [
          {
            "value": "9",
            "n": "9",
            "d": "1"
          },
          {
            "value": "10",
            "n": "10",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "proportion-missing-c",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "proportion",
        "a": 4,
        "b": 7,
        "d": 21
      },
      "expect": {
        "value": "12",
        "solved_for": "C",
        "formula": "A/B = C/D",
        "calculation_version": "1.0.2"
      },
      "expectWarning": null,
      "actual": {
        "mode": "proportion",
        "mode_label": "Proportion",
        "calculation_version": "1.0.2",
        "formula": "A/B = C/D",
        "heading": "C =",
        "value": "12",
        "solved": 12,
        "solved_for": "C",
        "A": "4",
        "B": "7",
        "C": "12",
        "D": "21",
        "inputs_summary": "4:7 = 12:21",
        "explainer": "C = A·D / B. Full proportion 4:7 = 12:21.",
        "steps": [
          "C = A·D / B = 4·21 / 7 = 12",
          "Check: 4:7 = 12:21",
          "A/B = 4/7,  C/D = 4/7"
        ],
        "viz_terms": [
          {
            "value": "4",
            "n": "4",
            "d": "1"
          },
          {
            "value": "7",
            "n": "7",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "scale-2-5-times-4",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "scale",
        "a": 2,
        "b": 5,
        "k": 4
      },
      "expect": {
        "value": "8:20",
        "formula": "r₁:⋯:rₙ → k·r₁:⋯:k·rₙ",
        "calculation_version": "1.0.2"
      },
      "expectWarning": null,
      "actual": {
        "mode": "scale",
        "mode_label": "Scale",
        "calculation_version": "1.0.2",
        "formula": "r₁:⋯:rₙ → k·r₁:⋯:k·rₙ",
        "heading": "Scaled ratio",
        "value": "8:20",
        "ratio": "8:20",
        "terms": [
          8,
          20
        ],
        "k": "4",
        "scaleOp": "multiply",
        "inputs_summary": "2:5 · k=4",
        "explainer": "2:5 × 4 = 8:20.",
        "steps": [
          "Given: 2:5",
          "Multiply by k = 4",
          "Result: 8:20"
        ],
        "viz_terms": [
          {
            "value": "8",
            "n": "8",
            "d": "1"
          },
          {
            "value": "20",
            "n": "20",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "split-25-by-3-2",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "split",
        "a": 3,
        "b": 2,
        "total": 25
      },
      "expect": {
        "value": "15 : 10",
        "formula": "partᵢ = total × (termᵢ / Σ terms)",
        "calculation_version": "1.0.2"
      },
      "expectWarning": null,
      "actual": {
        "mode": "split",
        "mode_label": "Split",
        "calculation_version": "1.0.2",
        "formula": "partᵢ = total × (termᵢ / Σ terms)",
        "heading": "Shares",
        "value": "15 : 10",
        "shares": [
          15,
          10
        ],
        "inputs_summary": "3:2 · total=25",
        "explainer": "Split 25 by 3:2.",
        "steps": [
          "Ratio: 3:2",
          "Sum of parts Σ = 5",
          "Total = 25",
          "A share = 25 × 3 / 5 = 15",
          "B share = 25 × 2 / 5 = 10"
        ],
        "viz_terms": [
          {
            "value": "3",
            "n": "3",
            "d": "1"
          },
          {
            "value": "2",
            "n": "2",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "compare-equivalent",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "compare",
        "a": 4,
        "b": 6,
        "c": 10,
        "d": 15
      },
      "expect": {
        "equivalent": true,
        "value": "Equivalent",
        "formula": "A/B ? C/D",
        "calculation_version": "1.0.2"
      },
      "expectWarning": null,
      "actual": {
        "mode": "compare",
        "mode_label": "Compare",
        "calculation_version": "1.0.2",
        "formula": "A/B ? C/D",
        "heading": "Comparison",
        "value": "Equivalent",
        "equivalent": true,
        "inputs_summary": "4:6 vs 10:15",
        "explainer": "Both ratios simplify to the same relationship.",
        "steps": [
          "4:6 → 4/6 = 2/3",
          "10:15 → 10/15 = 2/3",
          "Cross products: A·D = 60,  B·C = 60",
          "Ratios are equivalent."
        ],
        "viz_terms": [
          {
            "value": "2",
            "n": "2",
            "d": "1"
          },
          {
            "value": "3",
            "n": "3",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "golden-three-term-simplify",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "simplify",
        "a": 6,
        "b": 9,
        "c": 12
      },
      "expect": {
        "value": "2:3:4",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "calculation_version": "1.0.2",
        "inputs_summary": "6:9:12",
        "steps": [
          "Given: 6:9:12",
          "Divide all terms by GCF 3.",
          "Simplified: 2:3:4"
        ],
        "terms": [
          2,
          3,
          4
        ]
      },
      "expectWarning": null,
      "actual": {
        "mode": "simplify",
        "mode_label": "Simplify",
        "calculation_version": "1.0.2",
        "formula": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)",
        "heading": "Simplified ratio",
        "value": "2:3:4",
        "ratio": "2:3:4",
        "terms": [
          2,
          3,
          4
        ],
        "terms_exact": [
          "2",
          "3",
          "4"
        ],
        "gcf": 3,
        "clearing_factor": 1,
        "inputs_summary": "6:9:12",
        "explainer": "6:9:12 → 2:3:4.",
        "steps": [
          "Given: 6:9:12",
          "Divide all terms by GCF 3.",
          "Simplified: 2:3:4"
        ],
        "viz_terms": [
          {
            "value": "2",
            "n": "2",
            "d": "1"
          },
          {
            "value": "3",
            "n": "3",
            "d": "1"
          },
          {
            "value": "4",
            "n": "4",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B",
          "C"
        ]
      },
      "tol": 0
    },
    {
      "id": "golden-three-term-scale",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "scale",
        "a": 1,
        "b": 2,
        "c": 3,
        "k": 4
      },
      "expect": {
        "value": "4:8:12",
        "formula": "r₁:⋯:rₙ → k·r₁:⋯:k·rₙ",
        "calculation_version": "1.0.2",
        "terms": [
          4,
          8,
          12
        ],
        "steps": [
          "Given: 1:2:3",
          "Multiply by k = 4",
          "Result: 4:8:12"
        ]
      },
      "expectWarning": null,
      "actual": {
        "mode": "scale",
        "mode_label": "Scale",
        "calculation_version": "1.0.2",
        "formula": "r₁:⋯:rₙ → k·r₁:⋯:k·rₙ",
        "heading": "Scaled ratio",
        "value": "4:8:12",
        "ratio": "4:8:12",
        "terms": [
          4,
          8,
          12
        ],
        "k": "4",
        "scaleOp": "multiply",
        "inputs_summary": "1:2:3 · k=4",
        "explainer": "1:2:3 × 4 = 4:8:12.",
        "steps": [
          "Given: 1:2:3",
          "Multiply by k = 4",
          "Result: 4:8:12"
        ],
        "viz_terms": [
          {
            "value": "4",
            "n": "4",
            "d": "1"
          },
          {
            "value": "8",
            "n": "8",
            "d": "1"
          },
          {
            "value": "12",
            "n": "12",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B",
          "C"
        ]
      },
      "tol": 0
    },
    {
      "id": "golden-three-term-split",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "split",
        "a": 1,
        "b": 2,
        "c": 3,
        "total": 30
      },
      "expect": {
        "value": "5 : 10 : 15",
        "formula": "partᵢ = total × (termᵢ / Σ terms)",
        "calculation_version": "1.0.2"
      },
      "expectWarning": null,
      "actual": {
        "mode": "split",
        "mode_label": "Split",
        "calculation_version": "1.0.2",
        "formula": "partᵢ = total × (termᵢ / Σ terms)",
        "heading": "Shares",
        "value": "5 : 10 : 15",
        "shares": [
          5,
          10,
          15
        ],
        "inputs_summary": "1:2:3 · total=30",
        "explainer": "Split 30 by 1:2:3.",
        "steps": [
          "Ratio: 1:2:3",
          "Sum of parts Σ = 6",
          "Total = 30",
          "A share = 30 × 1 / 6 = 5",
          "B share = 30 × 2 / 6 = 10",
          "C share = 30 × 3 / 6 = 15"
        ],
        "viz_terms": [
          {
            "value": "1",
            "n": "1",
            "d": "1"
          },
          {
            "value": "2",
            "n": "2",
            "d": "1"
          },
          {
            "value": "3",
            "n": "3",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B",
          "C"
        ]
      },
      "tol": 0
    },
    {
      "id": "golden-convert",
      "ok": true,
      "kind": "golden",
      "inputs": {
        "mode": "convert",
        "a": 2,
        "b": 3
      },
      "expect": {
        "part_to_part": "2/3",
        "part_of_whole_A": "40",
        "part_of_whole_B": "60",
        "formula": "A:B → fraction / %",
        "calculation_version": "1.0.2"
      },
      "expectWarning": null,
      "actual": {
        "mode": "convert",
        "mode_label": "Convert",
        "calculation_version": "1.0.2",
        "formula": "A:B → fraction / %",
        "heading": "Conversion",
        "value": "2/3 = 2/3",
        "part_to_part": "2/3",
        "part_of_whole_A": "40",
        "part_of_whole_B": "60",
        "simplified": "2:3",
        "inputs_summary": "2:3",
        "explainer": "Of the whole: A 40%, B 60%. 2:3 is part-to-part — not A as a percent of B.",
        "steps": [
          "Ratio: 2:3",
          "Part-to-part as fraction A/B = 2/3",
          "Percent A of B = ≈66.67%  (this is not a part-of-whole percent)",
          "Whole = A+B = 5",
          "A is 2/5 of the whole (40%)",
          "B is 3/5 of the whole (60%)",
          "Simplified: 2:3"
        ],
        "viz_terms": [
          {
            "value": "2",
            "n": "2",
            "d": "1"
          },
          {
            "value": "3",
            "n": "3",
            "d": "1"
          }
        ],
        "viz_labels": [
          "A",
          "B"
        ]
      },
      "tol": 0
    },
    {
      "id": "boundary-all-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "simplify",
        "a": 0,
        "b": 0
      },
      "expectError": "ALL_ZERO",
      "code": "ALL_ZERO",
      "error": "Cannot simplify an all-zero ratio."
    },
    {
      "id": "boundary-missing",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "simplify"
      },
      "expectError": "MISSING_REQUIRED_INPUT",
      "code": "MISSING_REQUIRED_INPUT",
      "error": "Enter A."
    },
    {
      "id": "boundary-split-negative",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "split",
        "a": -2,
        "b": 3,
        "total": 100
      },
      "expectError": "SPLIT_NEGATIVE_TERM",
      "code": "SPLIT_NEGATIVE_TERM",
      "error": "Split requires every ratio term ≥ 0."
    },
    {
      "id": "boundary-split-zero-sum",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "split",
        "a": 0,
        "b": 0,
        "total": 100
      },
      "expectError": "SPLIT_ZERO_SUM",
      "code": "SPLIT_ZERO_SUM",
      "error": "Split requires a positive sum of ratio parts."
    },
    {
      "id": "boundary-proportion-two-blanks",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "proportion",
        "a": 4,
        "b": 7
      },
      "expectError": "PROPORTION_ONE_BLANK",
      "code": "PROPORTION_ONE_BLANK",
      "error": "Leave exactly one of A, B, C, D blank."
    },
    {
      "id": "boundary-proportion-d-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "proportion",
        "b": 7,
        "c": 12,
        "d": 0
      },
      "expectError": "ZERO_DENOMINATOR",
      "code": "ZERO_DENOMINATOR",
      "error": "Cannot solve for A when D = 0."
    },
    {
      "id": "boundary-scale-divide-zero",
      "ok": true,
      "kind": "boundary",
      "inputs": {
        "mode": "scale",
        "a": 2,
        "b": 5,
        "k": 0,
        "scaleOp": "divide"
      },
      "expectError": "DIVISION_BY_ZERO",
      "code": "DIVISION_BY_ZERO",
      "error": "Cannot divide by 0."
    },
    {
      "id": "property-simplify-12-18",
      "ok": true,
      "kind": "property",
      "detail": "12:18 → 2:3",
      "expect": "2:3",
      "actual": "2:3"
    },
    {
      "id": "property-decimal-equals-fraction",
      "ok": true,
      "kind": "property",
      "detail": "1.5:2.25 = 3/2:9/4 = 2:3 with n-term formula",
      "expect": "2:3",
      "actual": "2:3"
    },
    {
      "id": "property-scale-preserves-equivalence",
      "ok": true,
      "kind": "property",
      "detail": "2:3 × 4 is equivalent to 8:12; scale formula is n-term",
      "expect": true,
      "actual": true
    },
    {
      "id": "property-part-of-whole-sums-100",
      "ok": true,
      "kind": "property",
      "detail": "2:3 as parts of the whole is 40% | 60%",
      "expect": "40+60",
      "actual": "40+60"
    },
    {
      "id": "property-negative-simplify",
      "ok": true,
      "kind": "property",
      "detail": "-12:18 → -2:3",
      "expect": "-2:3",
      "actual": "-2:3"
    },
    {
      "id": "property-share-alias",
      "ok": true,
      "kind": "property",
      "detail": "aInput/bInput aliases match a/b",
      "expect": "2:3",
      "actual": "2:3"
    },
    {
      "id": "property-three-term-scale-invariant",
      "ok": true,
      "kind": "property",
      "detail": "simplify(kA:kB:kC) = simplify(A:B:C) with the same n-term formula",
      "expect": "1:2:3",
      "actual": "1:2:3"
    },
    {
      "id": "property-three-term-split-sums-total",
      "ok": true,
      "kind": "property",
      "detail": "Σ share_i = total for A:B:C",
      "expect": 100,
      "actual": 100
    }
  ],
  "tier": "engine_tested",
  "verification": {
    "tests": {
      "passed": 26,
      "total": 26,
      "golden": 11,
      "boundary": 7,
      "property": 8
    },
    "contract_checks": {
      "passed": 8,
      "total": 8
    }
  },
  "evidence_core_generated_at": "2026-09-16T06:41:00.884Z",
  "rendered_at": "2026-09-16T22:03:43.772Z",
  "release_integrity": {
    "status": "verified",
    "scope": "workspace",
    "production_attestation_required": true,
    "calculation_version": "1.0.2",
    "artifacts": {
      "engine": "1.0.2",
      "page": "1.0.2",
      "capability": "1.0.2",
      "evidence": "1.0.2",
      "input_schema": "1.0.2",
      "output_schema": "1.0.2",
      "mcp_contract": "1.0.2"
    },
    "digests": {
      "input_schema_sha256": "f265bc76ddf4ac054863a56d32fe03592f46d7a183cf98ad39c180496f456d46",
      "output_schema_sha256": "a88be281f59641c093c0fb7b28328ac502a4d55a7cda009c4ab75bc5f195a1ca",
      "evidence_sha256": "5cdce80e74111b610debfb27e725527ee782e80d9b2557e4d2590aa9b63ec90b",
      "evidence_core_sha256": "5cdce80e74111b610debfb27e725527ee782e80d9b2557e4d2590aa9b63ec90b",
      "capability_sha256": "2ee99cef720c6abdde68a4a441bc7f12a300383045067304dd848d9bb5ab5db3",
      "engine_sha256": "c8d4ccdbfeaf61d7b024d4e1babb0c2ba3b324c1b37bd0cb456a526d8d2b1bd1",
      "mcp_contract_sha256": "863098b311a7b17dc4b229a6302b90b3545b175f716e5d84772c7be8e9716b86"
    },
    "contract_checks": {
      "total": 8,
      "passed": 8,
      "failed": 0,
      "items": [
        {
          "id": "release-artifacts-aligned",
          "status": "pass",
          "detail": "1.0.2"
        },
        {
          "id": "schema-valid-input-executes",
          "status": "pass"
        },
        {
          "id": "engine-success-output-validates-schema",
          "status": "pass"
        },
        {
          "id": "explanation-formula-n-term",
          "status": "pass",
          "detail": "r₁:⋯:rₙ → (r₁′÷g):⋯:(rₙ′÷g), rᵢ′=L·rᵢ, L=LCM(dᵢ), g=GCF(|rᵢ′|)"
        },
        {
          "id": "explanation-steps-match-result",
          "status": "pass"
        },
        {
          "id": "explanation-inputs-summary",
          "status": "pass"
        },
        {
          "id": "explanation-calculation-version",
          "status": "pass",
          "detail": "1.0.2"
        },
        {
          "id": "explanation-arity",
          "status": "pass"
        }
      ]
    },
    "report": "https://www.calculatorx.com/.well-known/calculatorx-release-integrity.json"
  }
}
