{
 "about": {
  "method": "a260-a280-ratio",
  "recordedOn": "2026-10-17",
  "script": "pipeline/lab-calculators/a280_reference.py",
  "scriptSha256": "999a2d942ee0c2487e9dd013277be9693dcafdec467324db9d6e19b7489661a7",
  "source": "The CSO's ruling of 17 October 2026 on SCI-149 (docs/board/memos/2026-10-17-cso-a280-ratio-refusals.md): the cases and the order of the refusals; the ratio is an observation, not a purity measurement",
  "tolerances": {
   "values": "within 1e-9 relative",
   "refusals": "exact, by problem code"
  }
 },
 "oracle": {
  "name": "Python fractions and decimal",
  "version": "3.13.16"
 },
 "count": 10,
 "recordedOn": "2026-10-17",
 "cases": [
  {
   "name": "typical",
   "about": "0.9 over 0.5 is 1.8",
   "input": {
    "a260": "0.9",
    "a280": "0.5"
   },
   "expected": {
    "expect": "ok",
    "ratio": 1.8,
    "exact": "9/5"
   }
  },
  {
   "name": "non-terminating",
   "about": "1.0 over 0.6 is 5/3",
   "input": {
    "a260": "1.0",
    "a280": "0.6"
   },
   "expected": {
    "expect": "ok",
    "ratio": 1.6666666666666667,
    "exact": "5/3"
   }
  },
  {
   "name": "refused-a260-zero",
   "about": "An A260 at the blank",
   "input": {
    "a260": 0,
    "a280": "0.5"
   },
   "expected": {
    "expect": "refused",
    "problem": "a260-not-positive"
   }
  },
  {
   "name": "refused-a260-negative",
   "about": "An A260 below the blank",
   "input": {
    "a260": "-0.02",
    "a280": "0.5"
   },
   "expected": {
    "expect": "refused",
    "problem": "a260-not-positive"
   }
  },
  {
   "name": "refused-a260-nan",
   "about": "An A260 that is not a number",
   "input": {
    "a260": "NaN",
    "a280": "0.5"
   },
   "expected": {
    "expect": "refused",
    "problem": "a260-not-finite"
   }
  },
  {
   "name": "refused-a280-zero",
   "about": "An A280 at the blank",
   "input": {
    "a260": "0.9",
    "a280": 0
   },
   "expected": {
    "expect": "refused",
    "problem": "a280-not-positive"
   }
  },
  {
   "name": "refused-a280-infinity",
   "about": "An infinite A280",
   "input": {
    "a260": "0.9",
    "a280": "Infinity"
   },
   "expected": {
    "expect": "refused",
    "problem": "a280-not-finite"
   }
  },
  {
   "name": "refused-a260-minus-infinity",
   "about": "A negative infinite A260",
   "input": {
    "a260": "-Infinity",
    "a280": "0.5"
   },
   "expected": {
    "expect": "refused",
    "problem": "a260-not-finite"
   }
  },
  {
   "name": "refused-a280-negative",
   "about": "An A280 below the blank",
   "input": {
    "a260": "0.9",
    "a280": "-0.01"
   },
   "expected": {
    "expect": "refused",
    "problem": "a280-not-positive"
   }
  },
  {
   "name": "refused-order-a260-first",
   "about": "Both readings refused: the A260 reason comes first",
   "input": {
    "a260": 0,
    "a280": "NaN"
   },
   "expected": {
    "expect": "refused",
    "problem": "a260-not-positive"
   }
  }
 ]
}
