{"abstract":"Successfully presented damage remains in the next frame current-damage set.","category":"Raster clipping","checks":11,"contract":"Each frame begins with current damage and backbuffer age. Age zero requires full redraw; age k includes current damage and the last k-1 successfully presented frames. Failed presentation neither stores history nor clears accumulated damage. Bounds are applied before drawing; explicit full damage survives incremental additions.","evaluation_group":"s3-raster-clipping-damage-history-clip","failed_approach":"Clearing only last reconstructed redraw retains damage reported after begin but included in the successful frame.","family":"s3-raster-clipping-damage-history-clip-damage-retained","id":"FA-50661","implementations":{"attempt":{"sha256":"bbcad3e36a8fbfec16774c017462acadca599ee89498d21a5f7d7a293bf4f9d7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    full=set(range(size))\n    history=[]\n    current=set()\n    redraw=set()\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        if op=='damage': current |= set(cmd[1]) & full\n        elif op=='full': current=set(full)\n        elif op=='begin':\n            age=cmd[1]\n            if age==0 or age-1>len(history): redraw=set(full)\n            else:\n                redraw=set(current)\n                for old in history[:age-1]: redraw |= old\n        elif op=='draw': out.append(sorted(redraw))\n        elif op=='present':\n            if cmd[1]:\n                history.insert(0,set(current))\n                history=history[:3]\n                current -= redraw\n        elif op=='resize':\n            full=set(range(cmd[1]))\n            history=[]\n            current=set(full)\n            redraw=set(full)\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([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 4), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 4), [[0, 1, 2, 3], [0, 1, 2, 3]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 4), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 4), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 4), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 4), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 4), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 4), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 4), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 4), [[3]])\nif N == 2:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 5), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 5), [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 5), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 5), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 5), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 5), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 5), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 5), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 5), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 5), [[3]])\nif N == 3:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 6), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 6), [[0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 6), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 6), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 6), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 6), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 6), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 6), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 6), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 6), [[3]])\nif N == 4:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 7), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 7), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 7), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 7), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 7), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 7), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 7), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 7), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 7), [[3]])\nif N == 5:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 8), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 8), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 8), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 8), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 8), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 8), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 8), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 8), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 8), [[3]])\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":"0be62e9ea5a6b598d10c5f17601c73e911bbea2b712917d467808dba1c6b2643","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    full=set(range(size))\n    history=[]\n    current=set()\n    redraw=set()\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        if op=='damage': current |= set(cmd[1]) & full\n        elif op=='full': current=set(full)\n        elif op=='begin':\n            age=cmd[1]\n            if age==0 or age-1>len(history): redraw=set(full)\n            else:\n                redraw=set(current)\n                for old in history[:age-1]: redraw |= old\n        elif op=='draw': out.append(sorted(redraw))\n        elif op=='present':\n            if cmd[1]:\n                history.insert(0,set(current))\n                history=history[:3]\n                pass\n        elif op=='resize':\n            full=set(range(cmd[1]))\n            history=[]\n            current=set(full)\n            redraw=set(full)\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([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 4), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 4), [[0, 1, 2, 3], [0, 1, 2, 3]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 4), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 4), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 4), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 4), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 4), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 4), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 4), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 4), [[3]])\nif N == 2:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 5), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 5), [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 5), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 5), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 5), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 5), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 5), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 5), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 5), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 5), [[3]])\nif N == 3:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 6), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 6), [[0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 6), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 6), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 6), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 6), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 6), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 6), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 6), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 6), [[3]])\nif N == 4:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 7), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 7), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 7), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 7), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 7), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 7), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 7), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 7), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 7), [[3]])\nif N == 5:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 8), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 8), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 8), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 8), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 8), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 8), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 8), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 8), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 8), [[3]])\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"},"fixed":{"sha256":"7ec690be30151a596ece31e87973b4ace88fcb56e8eedaee96039ad3bc7be497","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    full=set(range(size))\n    history=[]\n    current=set()\n    redraw=set()\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        if op=='damage': current |= set(cmd[1]) & full\n        elif op=='full': current=set(full)\n        elif op=='begin':\n            age=cmd[1]\n            if age==0 or age-1>len(history): redraw=set(full)\n            else:\n                redraw=set(current)\n                for old in history[:age-1]: redraw |= old\n        elif op=='draw': out.append(sorted(redraw))\n        elif op=='present':\n            if cmd[1]:\n                history.insert(0,set(current))\n                history=history[:3]\n                current.clear()\n        elif op=='resize':\n            full=set(range(cmd[1]))\n            history=[]\n            current=set(full)\n            redraw=set(full)\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([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 4), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 4), [[0, 1, 2, 3], [0, 1, 2, 3]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 4), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 4), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 4), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 4), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 4), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 4), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 4), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 4), [[3]])\nif N == 2:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 5), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 5), [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 5), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 5), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 5), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 5), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 5), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 5), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 5), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 5), [[3]])\nif N == 3:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 6), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 6), [[0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 6), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 6), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 6), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 6), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 6), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 6), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 6), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 6), [[3]])\nif N == 4:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 7), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 7), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 7), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 7), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 7), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 7), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 7), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 7), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 7), [[3]])\nif N == 5:\n    check('explicit sequence 0', solve([['damage', [0]], ['damage', [1]], ['begin', 1], ['draw']], 8), [[0, 1]])\n    check('explicit sequence 1', solve([['damage', [0]], ['begin', 0], ['draw'], ['begin', 3], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 2', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['begin', 2], ['draw'], ['begin', 3], ['draw']], 8), [[1, 2], [0, 1, 2]])\n    check('explicit sequence 3', solve([['damage', [0]], ['present', True], ['begin', 2], ['draw']], 8), [[0]])\n    check('explicit sequence 4', solve([['damage', [0]], ['present', False], ['begin', 1], ['draw']], 8), [[0]])\n    check('explicit sequence 5', solve([['damage', [0]], ['present', True], ['begin', 1], ['draw']], 8), [[]])\n    check('explicit sequence 6', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['resize', 3], ['present', True], ['begin', 3], ['draw']], 8), [[0, 1, 2]])\n    check('explicit sequence 7', solve([['damage', [0]], ['present', True], ['resize', 3], ['begin', 1], ['draw']], 8), [[0, 1, 2]])\n    check('explicit sequence 8', solve([['damage', [99, -1, 2]], ['begin', 1], ['draw']], 8), [[2]])\n    check('explicit sequence 9', solve([['full'], ['damage', [0]], ['begin', 1], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 10', solve([['damage', [0]], ['present', True], ['damage', [1]], ['present', True], ['damage', [2]], ['present', True], ['damage', [3]], ['present', True], ['begin', 2], ['draw']], 8), [[3]])\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-damage-history-clip-damage-retained","generated_at":"2026-09-29T14:45:11.304753+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.","repair":"Apply the documented state transition at damage retained. Each frame begins with current damage and backbuffer age. Age zero requires full redraw; age k includes current damage and the last k-1 successfully presented frames. Failed presentation neither stores history nor clears accumulated damage. Bounds are applied before drawing; explicit full damage survives incremental additions.","root_cause":"Successfully presented damage remains in the next frame current-damage set.","sha256":"2bb085a6a44db92afbab206abfb59dd454c46cca5768534fe7e076f087862e0c","title":"Damage history clip: damage retained · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.043,"exit_code":1,"observations":[{"actual":[[0,1]],"check":"explicit sequence 0","expected":[[0,1]],"passed":true},{"actual":[[0,1,2,3],[0,1,2,3]],"check":"explicit sequence 1","expected":[[0,1,2,3],[0,1,2,3]],"passed":true},{"actual":[[0,1,2],[0,1,2]],"check":"explicit sequence 2","expected":[[1,2],[0,1,2]],"passed":false},{"actual":[[0]],"check":"explicit sequence 3","expected":[[0]],"passed":true},{"actual":[[0]],"check":"explicit sequence 4","expected":[[0]],"passed":true},{"actual":[[0]],"check":"explicit sequence 5","expected":[[]],"passed":false},{"actual":[[0,1,2]],"check":"explicit sequence 6","expected":[[0,1,2]],"passed":true},{"actual":[[0,1,2]],"check":"explicit sequence 7","expected":[[0,1,2]],"passed":true},{"actual":[[2]],"check":"explicit sequence 8","expected":[[2]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 9","expected":[[0,1,2,3]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 10","expected":[[3]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[0, 1, 2, 3], [0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3], [0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1, 2], [0, 1, 2]], \"expected\": [[1, 2], [0, 1, 2]], \"passed\": false}, {\"check\": \"explicit sequence 3\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[0]], \"expected\": [[]], \"passed\": false}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[2]], \"expected\": [[2]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[3]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.583,"exit_code":1,"observations":[{"actual":[[0,1]],"check":"explicit sequence 0","expected":[[0,1]],"passed":true},{"actual":[[0,1,2,3],[0,1,2,3]],"check":"explicit sequence 1","expected":[[0,1,2,3],[0,1,2,3]],"passed":true},{"actual":[[0,1,2],[0,1,2]],"check":"explicit sequence 2","expected":[[1,2],[0,1,2]],"passed":false},{"actual":[[0]],"check":"explicit sequence 3","expected":[[0]],"passed":true},{"actual":[[0]],"check":"explicit sequence 4","expected":[[0]],"passed":true},{"actual":[[0]],"check":"explicit sequence 5","expected":[[]],"passed":false},{"actual":[[0,1,2]],"check":"explicit sequence 6","expected":[[0,1,2]],"passed":true},{"actual":[[0,1,2]],"check":"explicit sequence 7","expected":[[0,1,2]],"passed":true},{"actual":[[2]],"check":"explicit sequence 8","expected":[[2]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 9","expected":[[0,1,2,3]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 10","expected":[[3]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[0, 1, 2, 3], [0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3], [0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1, 2], [0, 1, 2]], \"expected\": [[1, 2], [0, 1, 2]], \"passed\": false}, {\"check\": \"explicit sequence 3\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[0]], \"expected\": [[]], \"passed\": false}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[2]], \"expected\": [[2]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[3]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.204,"exit_code":0,"observations":[{"actual":[[0,1]],"check":"explicit sequence 0","expected":[[0,1]],"passed":true},{"actual":[[0,1,2,3],[0,1,2,3]],"check":"explicit sequence 1","expected":[[0,1,2,3],[0,1,2,3]],"passed":true},{"actual":[[1,2],[0,1,2]],"check":"explicit sequence 2","expected":[[1,2],[0,1,2]],"passed":true},{"actual":[[0]],"check":"explicit sequence 3","expected":[[0]],"passed":true},{"actual":[[0]],"check":"explicit sequence 4","expected":[[0]],"passed":true},{"actual":[[]],"check":"explicit sequence 5","expected":[[]],"passed":true},{"actual":[[0,1,2]],"check":"explicit sequence 6","expected":[[0,1,2]],"passed":true},{"actual":[[0,1,2]],"check":"explicit sequence 7","expected":[[0,1,2]],"passed":true},{"actual":[[2]],"check":"explicit sequence 8","expected":[[2]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 9","expected":[[0,1,2,3]],"passed":true},{"actual":[[3]],"check":"explicit sequence 10","expected":[[3]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[0, 1, 2, 3], [0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3], [0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[1, 2], [0, 1, 2]], \"expected\": [[1, 2], [0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[2]], \"expected\": [[2]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[3]], \"expected\": [[3]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}