{"abstract":"Integer conversion snaps a crossing intersection to an endpoint.","category":"Raster clipping","checks":12,"contract":"Clip ordered segments in homogeneous (x,w,u) coordinates against requested left x+w>=0, right w-x>=0 and eye w>=1 halfspaces. Interpolate every component at intersections before perspective division; retain endpoint order. Output exact rational strings, or null for rejected segments. The integer surface size scales horizontal halfspaces.","contract_signature":"commands, size","evaluation_group":"s3-raster-clipping-homogeneous-segment-clip","failed_approach":"Rounding still chooses endpoints instead of preserving the fractional crossing parameter.","family":"s3-raster-clipping-homogeneous-segment-clip-intersection-rounding","id":"FA-51006","implementations":{"attempt":{"sha256":"d3b6e59de1f37ce46bac4e328850ee09a1c698c9b0b9d099843a84fd4cb52e85","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    from fractions import Fraction\n    out=[]\n    for first,last,planes in commands:\n        a=list(map(Fraction,first)); b=list(map(Fraction,last))\n        original_a=list(a); original_b=list(b)\n        rejected=False\n        for plane in planes:\n            def distance(p):\n                if plane=='left': return p[0]+size*p[1]\n                if plane=='right': return size*p[1]-p[0]\n                return p[1]-1\n            da=distance(a); db=distance(b)\n            ia=da>=0; ib=db>=0\n            if not ia and not ib: rejected=True; break\n            if ia and ib: continue\n            t=Fraction(round(da/(da-db)))\n            point=[a[i]+t*(b[i]-a[i]) for i in range(3)]\n            if not ia: a=point\n            else: b=point\n        out.append(None if rejected else [[str(v) for v in a],[str(v) for v in b]])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 4), [[['-4', '1', '8'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 4), [[['0', '1', '0'], ['4', '1', '4']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 4), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 4), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 4), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 4), [[['-4', '1', '8'], ['4', '1', '16']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 4), [[['0', '1', '0'], ['4', '1', '4']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 4), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 4), [[['0', '1', '12'], ['6', '3/2', '18']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 4), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 4), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 4), [[['0', '1', '12'], ['40/9', '10/9', '40/3']]])\nif N == 2:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 5), [[['-5', '1', '7'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 5), [[['0', '1', '0'], ['5', '1', '5']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 5), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 5), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 5), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 5), [[['-5', '1', '7'], ['5', '1', '17']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 5), [[['0', '1', '0'], ['5', '1', '5']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 5), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 5), [[['0', '1', '12'], ['60/7', '12/7', '144/7']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 5), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 5), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 5), [[['0', '1', '12'], ['40/7', '8/7', '96/7']]])\nif N == 3:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 6), [[['-6', '1', '6'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 6), [[['0', '1', '0'], ['6', '1', '6']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 6), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 6), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 6), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 6), [[['-6', '1', '6'], ['6', '1', '18']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 6), [[['0', '1', '0'], ['6', '1', '6']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 6), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 6), [[['0', '1', '12'], ['12', '2', '24']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 6), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 6), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 6), [[['0', '1', '12'], ['120/17', '20/17', '240/17']]])\nif N == 4:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 7), [[['-7', '1', '5'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 7), [[['0', '1', '0'], ['7', '1', '7']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 7), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 7), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 7), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 7), [[['-7', '1', '5'], ['7', '1', '19']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 7), [[['0', '1', '0'], ['7', '1', '7']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 7), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 7), [[['0', '1', '12'], ['12', '2', '24']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 7), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 7), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 7), [[['0', '1', '12'], ['280/33', '40/33', '160/11']]])\nif N == 5:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 8), [[['-8', '1', '4'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 8), [[['0', '1', '0'], ['8', '1', '8']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 8), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 8), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 8), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 8), [[['-8', '1', '4'], ['8', '1', '20']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 8), [[['0', '1', '0'], ['8', '1', '8']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 8), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 8), [[['0', '1', '12'], ['12', '2', '24']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 8), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 8), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 8), [[['0', '1', '12'], ['10', '5/4', '15']]])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"ebc81d60086bd6f8a4a2fb417e4126f08650293b506d19be0d57e256b4f7877e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    from fractions import Fraction\n    out=[]\n    for first,last,planes in commands:\n        a=list(map(Fraction,first)); b=list(map(Fraction,last))\n        original_a=list(a); original_b=list(b)\n        rejected=False\n        for plane in planes:\n            def distance(p):\n                if plane=='left': return p[0]+size*p[1]\n                if plane=='right': return size*p[1]-p[0]\n                return p[1]-1\n            da=distance(a); db=distance(b)\n            ia=da>=0; ib=db>=0\n            if not ia and not ib: rejected=True; break\n            if ia and ib: continue\n            t=Fraction(int(da/(da-db)))\n            point=[a[i]+t*(b[i]-a[i]) for i in range(3)]\n            if not ia: a=point\n            else: b=point\n        out.append(None if rejected else [[str(v) for v in a],[str(v) for v in b]])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 4), [[['-4', '1', '8'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 4), [[['0', '1', '0'], ['4', '1', '4']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 4), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 4), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 4), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 4), [[['-4', '1', '8'], ['4', '1', '16']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 4), [[['0', '1', '0'], ['4', '1', '4']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 4), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 4), [[['0', '1', '12'], ['6', '3/2', '18']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 4), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 4), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 4), [[['0', '1', '12'], ['40/9', '10/9', '40/3']]])\nif N == 2:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 5), [[['-5', '1', '7'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 5), [[['0', '1', '0'], ['5', '1', '5']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 5), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 5), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 5), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 5), [[['-5', '1', '7'], ['5', '1', '17']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 5), [[['0', '1', '0'], ['5', '1', '5']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 5), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 5), [[['0', '1', '12'], ['60/7', '12/7', '144/7']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 5), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 5), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 5), [[['0', '1', '12'], ['40/7', '8/7', '96/7']]])\nif N == 3:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 6), [[['-6', '1', '6'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 6), [[['0', '1', '0'], ['6', '1', '6']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 6), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 6), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 6), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 6), [[['-6', '1', '6'], ['6', '1', '18']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 6), [[['0', '1', '0'], ['6', '1', '6']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 6), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 6), [[['0', '1', '12'], ['12', '2', '24']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 6), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 6), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 6), [[['0', '1', '12'], ['120/17', '20/17', '240/17']]])\nif N == 4:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 7), [[['-7', '1', '5'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 7), [[['0', '1', '0'], ['7', '1', '7']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 7), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 7), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 7), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 7), [[['-7', '1', '5'], ['7', '1', '19']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 7), [[['0', '1', '0'], ['7', '1', '7']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 7), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 7), [[['0', '1', '12'], ['12', '2', '24']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 7), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 7), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 7), [[['0', '1', '12'], ['280/33', '40/33', '160/11']]])\nif N == 5:\n    check('explicit sequence 0', solve([[[-12, 1, 0], [0, 1, 12], ['left']]], 8), [[['-8', '1', '4'], ['0', '1', '12']]])\n    check('explicit sequence 1', solve([[[0, 1, 0], [12, 1, 12], ['right']]], 8), [[['0', '1', '0'], ['8', '1', '8']]])\n    check('explicit sequence 2', solve([[[-20, 1, 0], [-15, 1, 5], ['left']]], 8), [None])\n    check('explicit sequence 3', solve([[[-4, 1, 0], [-8, 2, 8], ['left']]], 8), [[['-4', '1', '0'], ['-8', '2', '8']]])\n    check('explicit sequence 4', solve([[[0, 0, 0], [0, 2, 10], ['eye']]], 8), [[['0', '1', '5'], ['0', '2', '10']]])\n    check('explicit sequence 5', solve([[[-12, 1, 0], [12, 1, 24], ['left', 'right']]], 8), [[['-8', '1', '4'], ['8', '1', '20']]])\n    check('explicit sequence 6', solve([[[0, 1, 0], [12, 1, 12], ['left', 'right']]], 8), [[['0', '1', '0'], ['8', '1', '8']]])\n    check('explicit sequence 7', solve([[[0, 1, 0], [1, 1, 1], ['eye', 'left', 'right']]], 8), [[['0', '1', '0'], ['1', '1', '1']]])\n    check('explicit sequence 8', solve([[[-12, 0, 0], [12, 2, 24], ['left', 'right', 'eye']]], 8), [[['0', '1', '12'], ['12', '2', '24']]])\n    check('explicit sequence 9', solve([[[-15, 1, 0], [-20, 1, 5], ['left']]], 8), [None])\n    check('explicit sequence 10', solve([[[0, 0, 0], [0, 1, 1], ['eye']]], 8), [[['0', '1', '1'], ['0', '1', '1']]])\n    check('explicit sequence 11', solve([[[-40, 0, 0], [40, 2, 24], ['right', 'eye']]], 8), [[['0', '1', '12'], ['10', '5/4', '15']]])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Finite one-dimensional integer sample sets model coverage state only; no geometric intersection, memory layout, GPU or graphics-standard conformance is claimed. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-raster-clipping-homogeneous-segment-clip-intersection-rounding","generated_at":"2026-09-29T14:45:14.789030+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Raster clip state can leak coverage across draws even when every individual region is valid.","root_cause":"Integer conversion snaps a crossing intersection to an endpoint.","sha256":"b60921efbcae50df3eb4ee6355614f74896ddc6f9bcd357a9e0b550d55ab4031","title":"Homogeneous segment clip: intersection rounding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":44.862,"exit_code":1,"observations":[{"actual":[[["0","1","12"],["0","1","12"]]],"check":"explicit sequence 0","expected":[[["-4","1","8"],["0","1","12"]]],"passed":false},{"actual":[[["0","1","0"],["0","1","0"]]],"check":"explicit sequence 1","expected":[[["0","1","0"],["4","1","4"]]],"passed":false},{"actual":[null],"check":"explicit sequence 2","expected":[null],"passed":true},{"actual":[[["-4","1","0"],["-8","2","8"]]],"check":"explicit sequence 3","expected":[[["-4","1","0"],["-8","2","8"]]],"passed":true},{"actual":[[["0","0","0"],["0","2","10"]]],"check":"explicit sequence 4","expected":[[["0","1","5"],["0","2","10"]]],"passed":false},{"actual":[[["-12","1","0"],["12","1","24"]]],"check":"explicit sequence 5","expected":[[["-4","1","8"],["4","1","16"]]],"passed":false},{"actual":[[["0","1","0"],["0","1","0"]]],"check":"explicit sequence 6","expected":[[["0","1","0"],["4","1","4"]]],"passed":false},{"actual":[[["0","1","0"],["1","1","1"]]],"check":"explicit sequence 7","expected":[[["0","1","0"],["1","1","1"]]],"passed":true},{"actual":[[["-12","0","0"],["12","2","24"]]],"check":"explicit sequence 8","expected":[[["0","1","12"],["6","3/2","18"]]],"passed":false},{"actual":[null],"check":"explicit sequence 9","expected":[null],"passed":true},{"actual":[[["0","1","1"],["0","1","1"]]],"check":"explicit sequence 10","expected":[[["0","1","1"],["0","1","1"]]],"passed":true},{"actual":[[["-40","0","0"],["40","2","24"]]],"check":"explicit sequence 11","expected":[[["0","1","12"],["40/9","10/9","40/3"]]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[[\"0\", \"1\", \"12\"], [\"0\", \"1\", \"12\"]]], \"expected\": [[[\"-4\", \"1\", \"8\"], [\"0\", \"1\", \"12\"]]], \"passed\": false}, {\"check\": \"explicit sequence 1\", \"actual\": [[[\"0\", \"1\", \"0\"], [\"0\", \"1\", \"0\"]]], \"expected\": [[[\"0\", \"1\", \"0\"], [\"4\", \"1\", \"4\"]]], \"passed\": false}, {\"check\": \"explicit sequence 2\", \"actual\": [null], \"expected\": [null], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[[\"-4\", \"1\", \"0\"], [\"-8\", \"2\", \"8\"]]], \"expected\": [[[\"-4\", \"1\", \"0\"], [\"-8\", \"2\", \"8\"]]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[[\"0\", \"0\", \"0\"], [\"0\", \"2\", \"10\"]]], \"expected\": [[[\"0\", \"1\", \"5\"], [\"0\", \"2\", \"10\"]]], \"passed\": false}, {\"check\": \"explicit sequence 5\", \"actual\": [[[\"-12\", \"1\", \"0\"], [\"12\", \"1\", \"24\"]]], \"expected\": [[[\"-4\", \"1\", \"8\"], [\"4\", \"1\", \"16\"]]], \"passed\": false}, {\"check\": \"explicit sequence 6\", \"actual\": [[[\"0\", \"1\", \"0\"], [\"0\", \"1\", \"0\"]]], \"expected\": [[[\"0\", \"1\", \"0\"], [\"4\", \"1\", \"4\"]]], \"passed\": false}, {\"check\": \"explicit sequence 7\", \"actual\": [[[\"0\", \"1\", \"0\"], [\"1\", \"1\", \"1\"]]], \"expected\": [[[\"0\", \"1\", \"0\"], [\"1\", \"1\", \"1\"]]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[[\"-12\", \"0\", \"0\"], [\"12\", \"2\", \"24\"]]], \"expected\": [[[\"0\", \"1\", \"12\"], [\"6\", \"3/2\", \"18\"]]], \"passed\": false}, {\"check\": \"explicit sequence 9\", \"actual\": [null], \"expected\": [null], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[[\"0\", \"1\", \"1\"], [\"0\", \"1\", \"1\"]]], \"expected\": [[[\"0\", \"1\", \"1\"], [\"0\", \"1\", \"1\"]]], \"passed\": true}, {\"check\": \"explicit sequence 11\", \"actual\": [[[\"-40\", \"0\", \"0\"], [\"40\", \"2\", \"24\"]]], \"expected\": [[[\"0\", \"1\", \"12\"], [\"40/9\", \"10/9\", \"40/3\"]]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.183,"exit_code":1,"observations":[{"actual":[[["-12","1","0"],["0","1","12"]]],"check":"explicit sequence 0","expected":[[["-4","1","8"],["0","1","12"]]],"passed":false},{"actual":[[["0","1","0"],["0","1","0"]]],"check":"explicit sequence 1","expected":[[["0","1","0"],["4","1","4"]]],"passed":false},{"actual":[null],"check":"explicit sequence 2","expected":[null],"passed":true},{"actual":[[["-4","1","0"],["-8","2","8"]]],"check":"explicit sequence 3","expected":[[["-4","1","0"],["-8","2","8"]]],"passed":true},{"actual":[[["0","0","0"],["0","2","10"]]],"check":"explicit sequence 4","expected":[[["0","1","5"],["0","2","10"]]],"passed":false},{"actual":[[["-12","1","0"],["-12","1","0"]]],"check":"explicit sequence 5","expected":[[["-4","1","8"],["4","1","16"]]],"passed":false},{"actual":[[["0","1","0"],["0","1","0"]]],"check":"explicit sequence 6","expected":[[["0","1","0"],["4","1","4"]]],"passed":false},{"actual":[[["0","1","0"],["1","1","1"]]],"check":"explicit sequence 7","expected":[[["0","1","0"],["1","1","1"]]],"passed":true},{"actual":[null],"check":"explicit sequence 8","expected":[[["0","1","12"],["6","3/2","18"]]],"passed":false},{"actual":[null],"check":"explicit sequence 9","expected":[null],"passed":true},{"actual":[[["0","1","1"],["0","1","1"]]],"check":"explicit sequence 10","expected":[[["0","1","1"],["0","1","1"]]],"passed":true},{"actual":[null],"check":"explicit sequence 11","expected":[[["0","1","12"],["40/9","10/9","40/3"]]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[[\"-12\", \"1\", \"0\"], [\"0\", \"1\", \"12\"]]], \"expected\": [[[\"-4\", \"1\", \"8\"], [\"0\", \"1\", \"12\"]]], \"passed\": false}, {\"check\": \"explicit sequence 1\", \"actual\": [[[\"0\", \"1\", \"0\"], [\"0\", \"1\", \"0\"]]], \"expected\": [[[\"0\", \"1\", \"0\"], [\"4\", \"1\", \"4\"]]], \"passed\": false}, {\"check\": \"explicit sequence 2\", \"actual\": [null], \"expected\": [null], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[[\"-4\", \"1\", \"0\"], [\"-8\", \"2\", \"8\"]]], \"expected\": [[[\"-4\", \"1\", \"0\"], [\"-8\", \"2\", \"8\"]]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[[\"0\", \"0\", \"0\"], [\"0\", \"2\", \"10\"]]], \"expected\": [[[\"0\", \"1\", \"5\"], [\"0\", \"2\", \"10\"]]], \"passed\": false}, {\"check\": \"explicit sequence 5\", \"actual\": [[[\"-12\", \"1\", \"0\"], [\"-12\", \"1\", \"0\"]]], \"expected\": [[[\"-4\", \"1\", \"8\"], [\"4\", \"1\", \"16\"]]], \"passed\": false}, {\"check\": \"explicit sequence 6\", \"actual\": [[[\"0\", \"1\", \"0\"], [\"0\", \"1\", \"0\"]]], \"expected\": [[[\"0\", \"1\", \"0\"], [\"4\", \"1\", \"4\"]]], \"passed\": false}, {\"check\": \"explicit sequence 7\", \"actual\": [[[\"0\", \"1\", \"0\"], [\"1\", \"1\", \"1\"]]], \"expected\": [[[\"0\", \"1\", \"0\"], [\"1\", \"1\", \"1\"]]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [null], \"expected\": [[[\"0\", \"1\", \"12\"], [\"6\", \"3/2\", \"18\"]]], \"passed\": false}, {\"check\": \"explicit sequence 9\", \"actual\": [null], \"expected\": [null], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[[\"0\", \"1\", \"1\"], [\"0\", \"1\", \"1\"]]], \"expected\": [[[\"0\", \"1\", \"1\"], [\"0\", \"1\", \"1\"]]], \"passed\": true}, {\"check\": \"explicit sequence 11\", \"actual\": [null], \"expected\": [[[\"0\", \"1\", \"12\"], [\"40/9\", \"10/9\", \"40/3\"]]], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}