{"abstract":"Colliding keys accumulate instead of cancelling, and queries multiply unsigned cells by a sign.","category":"Probabilistic sketches","checks":7,"contract":"Input {w, d, stream, queries}; stream entries are [key, signed count]. Row r uses bucket ((A_r key + B_r) mod 2^31-1) mod w and sign +1 when ((C_r key + D_r) mod 2^31-1) is odd, else -1, from an independent hash. Updates add sign*count. A query returns the median over rows of sign*cell; for even d the median is the mean of the two middle values. Negative estimates are returned unchanged (turnstile streams).","evaluation_group":"w2-probabilistic_sketches-count-sketch","failed_approach":"Signing the absolute count turns deletions into insertions.","family":"w2-probabilistic_sketches-count-sketch-update-sign","id":"FA-73086","implementations":{"attempt":{"sha256":"1ea8ca2bcf10049d36d75b0ec7ed550356f4b1fc0b36c028e8fd709457c85447","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    w = x['w']\n    d = x['d']\n    P = 2147483647\n    A = [1103515245, 1812433253, 1664525017, 2013265921, 1597334677, 1566083941]\n    B = [12345, 1013904223, 7, 99991, 31337, 424242]\n    C = [2027373281, 1370461471, 1234567891, 1987654321, 1111111121, 1777777777]\n    D = [3, 5, 11, 17, 23, 29]\n    t = [[0] * w for _ in range(d)]\n    def bucket(r, key):\n        return (A[r] * key + B[r]) % P % w\n    def sign(r, key):\n        return 1 if ((C[r] * key + D[r]) % P) & 1 else -1\n    for key, cnt in x['stream']:\n        for r in range(d):\n            t[r][bucket(r, key)] += sign(r, key) * abs(cnt)\n    out = []\n    for key in x['queries']:\n        vals = sorted(sign(r, key) * t[r][bucket(r, key)] for r in range(d))\n        if d % 2:\n            out.append(vals[d // 2])\n        else:\n            out.append((vals[d // 2 - 1] + vals[d // 2]) / 2)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [23, 53, 27, 24, 14, 100],\n    'stream': [[23, -1], [53, 7], [27, 5], [24, -1], [14, 8], [12, 6], [11, 8], [23, 6]],\n    'w': 4},\n   [-1, 9, -3, -9, 9, -6]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [26, 55, 10, 15, 19, 100],\n    'stream': [[26, 5], [55, 1], [10, 6], [15, 5], [19, 8], [8, 9], [59, 0], [26, 6]],\n    'w': 5},\n   [11.5, -2.0, 5.5, 5.0, 8.0, 0.0]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [13, 55, 20, 4, 57, 100],\n    'stream': [[13, 6], [55, 6], [20, 2], [4, 6], [57, -3], [56, 7], [34, 3], [13, 6]],\n    'w': 3},\n   [12, 15, 2, 6, -3, -6]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [52, 50, 14, 47, 13, 100],\n    'stream': [[52, -2], [50, 8], [14, 7], [47, 7], [13, 1], [6, 3], [2, -1], [52, 6]],\n    'w': 6},\n   [4.5, 7.5, 6.5, 9.0, 8.0, -6.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [7, 36, 53, 37, 29, 100],\n    'stream': [[7, 8], [36, 2], [53, 4], [37, 4], [29, -1], [16, -1], [56, -3], [7, 6]],\n    'w': 4},\n   [15.0, 3.5, 5.0, 4.5, 0.5, -2.5]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [2, 31, 48, 20, 24, 100],\n    'stream': [[2, 8], [31, 5], [48, 1], [20, 1], [24, -1], [35, 3], [56, 9], [2, 6]],\n    'w': 2},\n   [12, -2, -12, 2, 12, 2]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -3]], 'w': 3},\n   [0, -3]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [47, 24, 9, 42, 45, 101],\n    'stream': [[47, 5], [24, 3], [9, 3], [42, -1], [45, 0], [39, 9], [50, 1], [47, 7]],\n    'w': 4},\n   [15, 4, 3, 2, -3, 0]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [47, 44, 11, 17, 43, 101],\n    'stream': [[47, 4], [44, 8], [11, 1], [17, 4], [43, -2], [40, 8], [35, 9], [47, 7]],\n    'w': 5},\n   [11.0, 5.0, 9.5, 8.0, -2.5, -1.0]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [50, 54, 17, 44, 8, 101],\n    'stream': [[50, 9], [54, 8], [17, 0], [44, -2], [8, -2], [19, -3], [37, -3], [50, 7]],\n    'w': 3},\n   [13, 6, -3, 1, 0, 5]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [53, 40, 34, 19, 50, 101],\n    'stream': [[53, 0], [40, 6], [34, 5], [19, 9], [50, 3], [41, 4], [16, -3], [53, 7]],\n    'w': 6},\n   [0.0, 2.5, 5.0, 5.0, 2.5, -1.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [37, 49, 24, 52, 33, 101],\n    'stream': [[37, 4], [49, -3], [24, -2], [52, 9], [33, 5], [12, -1], [35, -2], [37, 7]],\n    'w': 4},\n   [10.5, -2.0, -3.0, 7.0, 3.5, -5.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [33, 40, 3, 43, 8, 101],\n    'stream': [[33, 1], [40, 2], [3, 8], [43, 8], [8, 9], [46, 0], [19, -1], [33, 7]],\n    'w': 2},\n   [7, 11, 11, 7, -7, -11]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -4]], 'w': 3},\n   [0, -4]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [26, 43, 31, 44, 30, 102],\n    'stream': [[26, 7], [43, 0], [31, -2], [44, 9], [30, -1], [10, -1], [41, 3], [26, 8]],\n    'w': 4},\n   [12, 1, -2, 7, -1, -12]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [52, 33, 27, 41, 23, 102],\n    'stream': [[52, 6], [33, -2], [27, 7], [41, 8], [23, 4], [10, -1], [17, 2], [52, 8]],\n    'w': 5},\n   [19.0, -11.5, 4.5, 14.0, 4.0, 0.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [30, 59, 54, 34, 46, 102],\n    'stream': [[30, -3], [59, 2], [54, 7], [34, 3], [46, 4], [10, -2], [43, 6], [30, 8]],\n    'w': 3},\n   [12, 6, 12, 1, 3, -6]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [31, 58, 1, 13, 44, 102],\n    'stream': [[31, 6], [58, 9], [1, -3], [13, 8], [44, 7], [24, 0], [32, -3], [31, 8]],\n    'w': 6},\n   [17.5, 10.5, 1.0, 6.5, 15.5, -6.5]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [42, 39, 12, 48, 7, 102],\n    'stream': [[42, 2], [39, 0], [12, 0], [48, 1], [7, 1], [27, 8], [19, 0], [42, 8]],\n    'w': 4},\n   [10.0, 0.5, -0.5, 1.0, 1.0, -1.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [52, 26, 2, 12, 54, 102],\n    'stream': [[52, -2], [26, 1], [2, 9], [12, 1], [54, 4], [19, 1], [29, 4], [52, 8]],\n    'w': 2},\n   [6, -5, 11, 6, 0, -6]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -5]], 'w': 3},\n   [0, -5]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [17, 20, 22, 7, 59, 103],\n    'stream': [[17, -2], [20, 3], [22, 1], [7, 6], [59, 2], [53, 4], [21, -1], [17, 9]],\n    'w': 4},\n   [4, 0, -2, 3, -4, 3]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [38, 14, 1, 21, 19, 103],\n    'stream': [[38, -2], [14, 2], [1, -3], [21, 1], [19, 1], [7, 4], [36, 3], [38, 9]],\n    'w': 5},\n   [5.0, 0.0, -3.0, 1.5, -6.0, 0.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [47, 31, 6, 26, 18, 103],\n    'stream': [[47, -3], [31, 0], [6, 6], [26, 6], [18, 2], [38, 9], [10, 9], [47, 9]],\n    'w': 3},\n   [10, 0, 8, 8, 2, -9]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [2, 8, 16, 10, 59, 103],\n    'stream': [[2, 0], [8, 5], [16, -2], [10, 0], [59, -1], [45, -2], [20, -3], [2, 9]],\n    'w': 6},\n   [9.0, 6.5, -2.0, 0.0, -2.5, -9.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [42, 41, 28, 10, 22, 103],\n    'stream': [[42, 5], [41, 1], [28, 9], [10, 6], [22, -3], [56, 5], [34, 5], [42, 9]],\n    'w': 4},\n   [12.5, -4.0, 8.5, 6.0, -0.5, -0.5]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [27, 30, 53, 34, 37, 103],\n    'stream': [[27, 8], [30, 5], [53, 2], [34, 9], [37, -3], [38, -3], [51, 1], [27, 9]],\n    'w': 2},\n   [12, 14, 10, 14, 12, 12]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -6]], 'w': 3},\n   [0, -6]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [49, 2, 6, 18, 34, 104],\n    'stream': [[49, -1], [2, 7], [6, 0], [18, 7], [34, 7], [8, 5], [1, 3], [49, 10]],\n    'w': 4},\n   [6, 0, 4, 7, 7, -3]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [56, 42, 28, 49, 48, 104],\n    'stream': [[56, -1], [42, -2], [28, 1], [49, -3], [48, 0], [26, 3], [12, 7], [56, 10]],\n    'w': 5},\n   [10.5, -3.5, 2.5, -3.5, -2.0, -3.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [41, 12, 50, 46, 3, 104],\n    'stream': [[41, 0], [12, 1], [50, 3], [46, 1], [3, 4], [30, -2], [32, -3], [41, 10]],\n    'w': 3},\n   [12, 4, 4, 4, 4, -1]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [15, 5, 4, 19, 30, 104],\n    'stream': [[15, 2], [5, -3], [4, 5], [19, -2], [30, -2], [40, -3], [23, 7], [15, 10]],\n    'w': 6},\n   [12.0, -3.0, 1.0, -2.0, -4.5, -2.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [5, 41, 39, 54, 1, 104],\n    'stream': [[5, 0], [41, 5], [39, 2], [54, 1], [1, -2], [52, 7], [13, 5], [5, 10]],\n    'w': 4},\n   [12.0, 4.0, 7.0, -4.0, -1.0, -2.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [57, 35, 2, 54, 27, 104],\n    'stream': [[57, 8], [35, 4], [2, -3], [54, 3], [27, 4], [38, 9], [48, 4], [57, 10]],\n    'w': 2},\n   [22, 22, 3, 23, 22, 4]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -7]], 'w': 3},\n   [0, -7]]]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(args), expected)\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":"ef1ce2ef78a79c6de2953f6a2a0dd2428105d594188f8aedce236b176c5f1377","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    w = x['w']\n    d = x['d']\n    P = 2147483647\n    A = [1103515245, 1812433253, 1664525017, 2013265921, 1597334677, 1566083941]\n    B = [12345, 1013904223, 7, 99991, 31337, 424242]\n    C = [2027373281, 1370461471, 1234567891, 1987654321, 1111111121, 1777777777]\n    D = [3, 5, 11, 17, 23, 29]\n    t = [[0] * w for _ in range(d)]\n    def bucket(r, key):\n        return (A[r] * key + B[r]) % P % w\n    def sign(r, key):\n        return 1 if ((C[r] * key + D[r]) % P) & 1 else -1\n    for key, cnt in x['stream']:\n        for r in range(d):\n            t[r][bucket(r, key)] += cnt\n    out = []\n    for key in x['queries']:\n        vals = sorted(sign(r, key) * t[r][bucket(r, key)] for r in range(d))\n        if d % 2:\n            out.append(vals[d // 2])\n        else:\n            out.append((vals[d // 2 - 1] + vals[d // 2]) / 2)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [23, 53, 27, 24, 14, 100],\n    'stream': [[23, -1], [53, 7], [27, 5], [24, -1], [14, 8], [12, 6], [11, 8], [23, 6]],\n    'w': 4},\n   [-1, 9, -3, -9, 9, -6]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [26, 55, 10, 15, 19, 100],\n    'stream': [[26, 5], [55, 1], [10, 6], [15, 5], [19, 8], [8, 9], [59, 0], [26, 6]],\n    'w': 5},\n   [11.5, -2.0, 5.5, 5.0, 8.0, 0.0]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [13, 55, 20, 4, 57, 100],\n    'stream': [[13, 6], [55, 6], [20, 2], [4, 6], [57, -3], [56, 7], [34, 3], [13, 6]],\n    'w': 3},\n   [12, 15, 2, 6, -3, -6]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [52, 50, 14, 47, 13, 100],\n    'stream': [[52, -2], [50, 8], [14, 7], [47, 7], [13, 1], [6, 3], [2, -1], [52, 6]],\n    'w': 6},\n   [4.5, 7.5, 6.5, 9.0, 8.0, -6.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [7, 36, 53, 37, 29, 100],\n    'stream': [[7, 8], [36, 2], [53, 4], [37, 4], [29, -1], [16, -1], [56, -3], [7, 6]],\n    'w': 4},\n   [15.0, 3.5, 5.0, 4.5, 0.5, -2.5]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [2, 31, 48, 20, 24, 100],\n    'stream': [[2, 8], [31, 5], [48, 1], [20, 1], [24, -1], [35, 3], [56, 9], [2, 6]],\n    'w': 2},\n   [12, -2, -12, 2, 12, 2]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -3]], 'w': 3},\n   [0, -3]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [47, 24, 9, 42, 45, 101],\n    'stream': [[47, 5], [24, 3], [9, 3], [42, -1], [45, 0], [39, 9], [50, 1], [47, 7]],\n    'w': 4},\n   [15, 4, 3, 2, -3, 0]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [47, 44, 11, 17, 43, 101],\n    'stream': [[47, 4], [44, 8], [11, 1], [17, 4], [43, -2], [40, 8], [35, 9], [47, 7]],\n    'w': 5},\n   [11.0, 5.0, 9.5, 8.0, -2.5, -1.0]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [50, 54, 17, 44, 8, 101],\n    'stream': [[50, 9], [54, 8], [17, 0], [44, -2], [8, -2], [19, -3], [37, -3], [50, 7]],\n    'w': 3},\n   [13, 6, -3, 1, 0, 5]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [53, 40, 34, 19, 50, 101],\n    'stream': [[53, 0], [40, 6], [34, 5], [19, 9], [50, 3], [41, 4], [16, -3], [53, 7]],\n    'w': 6},\n   [0.0, 2.5, 5.0, 5.0, 2.5, -1.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [37, 49, 24, 52, 33, 101],\n    'stream': [[37, 4], [49, -3], [24, -2], [52, 9], [33, 5], [12, -1], [35, -2], [37, 7]],\n    'w': 4},\n   [10.5, -2.0, -3.0, 7.0, 3.5, -5.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [33, 40, 3, 43, 8, 101],\n    'stream': [[33, 1], [40, 2], [3, 8], [43, 8], [8, 9], [46, 0], [19, -1], [33, 7]],\n    'w': 2},\n   [7, 11, 11, 7, -7, -11]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -4]], 'w': 3},\n   [0, -4]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [26, 43, 31, 44, 30, 102],\n    'stream': [[26, 7], [43, 0], [31, -2], [44, 9], [30, -1], [10, -1], [41, 3], [26, 8]],\n    'w': 4},\n   [12, 1, -2, 7, -1, -12]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [52, 33, 27, 41, 23, 102],\n    'stream': [[52, 6], [33, -2], [27, 7], [41, 8], [23, 4], [10, -1], [17, 2], [52, 8]],\n    'w': 5},\n   [19.0, -11.5, 4.5, 14.0, 4.0, 0.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [30, 59, 54, 34, 46, 102],\n    'stream': [[30, -3], [59, 2], [54, 7], [34, 3], [46, 4], [10, -2], [43, 6], [30, 8]],\n    'w': 3},\n   [12, 6, 12, 1, 3, -6]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [31, 58, 1, 13, 44, 102],\n    'stream': [[31, 6], [58, 9], [1, -3], [13, 8], [44, 7], [24, 0], [32, -3], [31, 8]],\n    'w': 6},\n   [17.5, 10.5, 1.0, 6.5, 15.5, -6.5]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [42, 39, 12, 48, 7, 102],\n    'stream': [[42, 2], [39, 0], [12, 0], [48, 1], [7, 1], [27, 8], [19, 0], [42, 8]],\n    'w': 4},\n   [10.0, 0.5, -0.5, 1.0, 1.0, -1.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [52, 26, 2, 12, 54, 102],\n    'stream': [[52, -2], [26, 1], [2, 9], [12, 1], [54, 4], [19, 1], [29, 4], [52, 8]],\n    'w': 2},\n   [6, -5, 11, 6, 0, -6]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -5]], 'w': 3},\n   [0, -5]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [17, 20, 22, 7, 59, 103],\n    'stream': [[17, -2], [20, 3], [22, 1], [7, 6], [59, 2], [53, 4], [21, -1], [17, 9]],\n    'w': 4},\n   [4, 0, -2, 3, -4, 3]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [38, 14, 1, 21, 19, 103],\n    'stream': [[38, -2], [14, 2], [1, -3], [21, 1], [19, 1], [7, 4], [36, 3], [38, 9]],\n    'w': 5},\n   [5.0, 0.0, -3.0, 1.5, -6.0, 0.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [47, 31, 6, 26, 18, 103],\n    'stream': [[47, -3], [31, 0], [6, 6], [26, 6], [18, 2], [38, 9], [10, 9], [47, 9]],\n    'w': 3},\n   [10, 0, 8, 8, 2, -9]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [2, 8, 16, 10, 59, 103],\n    'stream': [[2, 0], [8, 5], [16, -2], [10, 0], [59, -1], [45, -2], [20, -3], [2, 9]],\n    'w': 6},\n   [9.0, 6.5, -2.0, 0.0, -2.5, -9.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [42, 41, 28, 10, 22, 103],\n    'stream': [[42, 5], [41, 1], [28, 9], [10, 6], [22, -3], [56, 5], [34, 5], [42, 9]],\n    'w': 4},\n   [12.5, -4.0, 8.5, 6.0, -0.5, -0.5]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [27, 30, 53, 34, 37, 103],\n    'stream': [[27, 8], [30, 5], [53, 2], [34, 9], [37, -3], [38, -3], [51, 1], [27, 9]],\n    'w': 2},\n   [12, 14, 10, 14, 12, 12]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -6]], 'w': 3},\n   [0, -6]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [49, 2, 6, 18, 34, 104],\n    'stream': [[49, -1], [2, 7], [6, 0], [18, 7], [34, 7], [8, 5], [1, 3], [49, 10]],\n    'w': 4},\n   [6, 0, 4, 7, 7, -3]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [56, 42, 28, 49, 48, 104],\n    'stream': [[56, -1], [42, -2], [28, 1], [49, -3], [48, 0], [26, 3], [12, 7], [56, 10]],\n    'w': 5},\n   [10.5, -3.5, 2.5, -3.5, -2.0, -3.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [41, 12, 50, 46, 3, 104],\n    'stream': [[41, 0], [12, 1], [50, 3], [46, 1], [3, 4], [30, -2], [32, -3], [41, 10]],\n    'w': 3},\n   [12, 4, 4, 4, 4, -1]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [15, 5, 4, 19, 30, 104],\n    'stream': [[15, 2], [5, -3], [4, 5], [19, -2], [30, -2], [40, -3], [23, 7], [15, 10]],\n    'w': 6},\n   [12.0, -3.0, 1.0, -2.0, -4.5, -2.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [5, 41, 39, 54, 1, 104],\n    'stream': [[5, 0], [41, 5], [39, 2], [54, 1], [1, -2], [52, 7], [13, 5], [5, 10]],\n    'w': 4},\n   [12.0, 4.0, 7.0, -4.0, -1.0, -2.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [57, 35, 2, 54, 27, 104],\n    'stream': [[57, 8], [35, 4], [2, -3], [54, 3], [27, 4], [38, 9], [48, 4], [57, 10]],\n    'w': 2},\n   [22, 22, 3, 23, 22, 4]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -7]], 'w': 3},\n   [0, -7]]]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(args), expected)\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":"19376c6d27909cad00696319805271bba3cf7d684339aaa6748adc80ba32308d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    w = x['w']\n    d = x['d']\n    P = 2147483647\n    A = [1103515245, 1812433253, 1664525017, 2013265921, 1597334677, 1566083941]\n    B = [12345, 1013904223, 7, 99991, 31337, 424242]\n    C = [2027373281, 1370461471, 1234567891, 1987654321, 1111111121, 1777777777]\n    D = [3, 5, 11, 17, 23, 29]\n    t = [[0] * w for _ in range(d)]\n    def bucket(r, key):\n        return (A[r] * key + B[r]) % P % w\n    def sign(r, key):\n        return 1 if ((C[r] * key + D[r]) % P) & 1 else -1\n    for key, cnt in x['stream']:\n        for r in range(d):\n            t[r][bucket(r, key)] += sign(r, key) * cnt\n    out = []\n    for key in x['queries']:\n        vals = sorted(sign(r, key) * t[r][bucket(r, key)] for r in range(d))\n        if d % 2:\n            out.append(vals[d // 2])\n        else:\n            out.append((vals[d // 2 - 1] + vals[d // 2]) / 2)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [23, 53, 27, 24, 14, 100],\n    'stream': [[23, -1], [53, 7], [27, 5], [24, -1], [14, 8], [12, 6], [11, 8], [23, 6]],\n    'w': 4},\n   [-1, 9, -3, -9, 9, -6]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [26, 55, 10, 15, 19, 100],\n    'stream': [[26, 5], [55, 1], [10, 6], [15, 5], [19, 8], [8, 9], [59, 0], [26, 6]],\n    'w': 5},\n   [11.5, -2.0, 5.5, 5.0, 8.0, 0.0]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [13, 55, 20, 4, 57, 100],\n    'stream': [[13, 6], [55, 6], [20, 2], [4, 6], [57, -3], [56, 7], [34, 3], [13, 6]],\n    'w': 3},\n   [12, 15, 2, 6, -3, -6]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [52, 50, 14, 47, 13, 100],\n    'stream': [[52, -2], [50, 8], [14, 7], [47, 7], [13, 1], [6, 3], [2, -1], [52, 6]],\n    'w': 6},\n   [4.5, 7.5, 6.5, 9.0, 8.0, -6.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [7, 36, 53, 37, 29, 100],\n    'stream': [[7, 8], [36, 2], [53, 4], [37, 4], [29, -1], [16, -1], [56, -3], [7, 6]],\n    'w': 4},\n   [15.0, 3.5, 5.0, 4.5, 0.5, -2.5]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [2, 31, 48, 20, 24, 100],\n    'stream': [[2, 8], [31, 5], [48, 1], [20, 1], [24, -1], [35, 3], [56, 9], [2, 6]],\n    'w': 2},\n   [12, -2, -12, 2, 12, 2]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -3]], 'w': 3},\n   [0, -3]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [47, 24, 9, 42, 45, 101],\n    'stream': [[47, 5], [24, 3], [9, 3], [42, -1], [45, 0], [39, 9], [50, 1], [47, 7]],\n    'w': 4},\n   [15, 4, 3, 2, -3, 0]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [47, 44, 11, 17, 43, 101],\n    'stream': [[47, 4], [44, 8], [11, 1], [17, 4], [43, -2], [40, 8], [35, 9], [47, 7]],\n    'w': 5},\n   [11.0, 5.0, 9.5, 8.0, -2.5, -1.0]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [50, 54, 17, 44, 8, 101],\n    'stream': [[50, 9], [54, 8], [17, 0], [44, -2], [8, -2], [19, -3], [37, -3], [50, 7]],\n    'w': 3},\n   [13, 6, -3, 1, 0, 5]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [53, 40, 34, 19, 50, 101],\n    'stream': [[53, 0], [40, 6], [34, 5], [19, 9], [50, 3], [41, 4], [16, -3], [53, 7]],\n    'w': 6},\n   [0.0, 2.5, 5.0, 5.0, 2.5, -1.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [37, 49, 24, 52, 33, 101],\n    'stream': [[37, 4], [49, -3], [24, -2], [52, 9], [33, 5], [12, -1], [35, -2], [37, 7]],\n    'w': 4},\n   [10.5, -2.0, -3.0, 7.0, 3.5, -5.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [33, 40, 3, 43, 8, 101],\n    'stream': [[33, 1], [40, 2], [3, 8], [43, 8], [8, 9], [46, 0], [19, -1], [33, 7]],\n    'w': 2},\n   [7, 11, 11, 7, -7, -11]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -4]], 'w': 3},\n   [0, -4]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [26, 43, 31, 44, 30, 102],\n    'stream': [[26, 7], [43, 0], [31, -2], [44, 9], [30, -1], [10, -1], [41, 3], [26, 8]],\n    'w': 4},\n   [12, 1, -2, 7, -1, -12]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [52, 33, 27, 41, 23, 102],\n    'stream': [[52, 6], [33, -2], [27, 7], [41, 8], [23, 4], [10, -1], [17, 2], [52, 8]],\n    'w': 5},\n   [19.0, -11.5, 4.5, 14.0, 4.0, 0.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [30, 59, 54, 34, 46, 102],\n    'stream': [[30, -3], [59, 2], [54, 7], [34, 3], [46, 4], [10, -2], [43, 6], [30, 8]],\n    'w': 3},\n   [12, 6, 12, 1, 3, -6]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [31, 58, 1, 13, 44, 102],\n    'stream': [[31, 6], [58, 9], [1, -3], [13, 8], [44, 7], [24, 0], [32, -3], [31, 8]],\n    'w': 6},\n   [17.5, 10.5, 1.0, 6.5, 15.5, -6.5]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [42, 39, 12, 48, 7, 102],\n    'stream': [[42, 2], [39, 0], [12, 0], [48, 1], [7, 1], [27, 8], [19, 0], [42, 8]],\n    'w': 4},\n   [10.0, 0.5, -0.5, 1.0, 1.0, -1.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [52, 26, 2, 12, 54, 102],\n    'stream': [[52, -2], [26, 1], [2, 9], [12, 1], [54, 4], [19, 1], [29, 4], [52, 8]],\n    'w': 2},\n   [6, -5, 11, 6, 0, -6]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -5]], 'w': 3},\n   [0, -5]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [17, 20, 22, 7, 59, 103],\n    'stream': [[17, -2], [20, 3], [22, 1], [7, 6], [59, 2], [53, 4], [21, -1], [17, 9]],\n    'w': 4},\n   [4, 0, -2, 3, -4, 3]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [38, 14, 1, 21, 19, 103],\n    'stream': [[38, -2], [14, 2], [1, -3], [21, 1], [19, 1], [7, 4], [36, 3], [38, 9]],\n    'w': 5},\n   [5.0, 0.0, -3.0, 1.5, -6.0, 0.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [47, 31, 6, 26, 18, 103],\n    'stream': [[47, -3], [31, 0], [6, 6], [26, 6], [18, 2], [38, 9], [10, 9], [47, 9]],\n    'w': 3},\n   [10, 0, 8, 8, 2, -9]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [2, 8, 16, 10, 59, 103],\n    'stream': [[2, 0], [8, 5], [16, -2], [10, 0], [59, -1], [45, -2], [20, -3], [2, 9]],\n    'w': 6},\n   [9.0, 6.5, -2.0, 0.0, -2.5, -9.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [42, 41, 28, 10, 22, 103],\n    'stream': [[42, 5], [41, 1], [28, 9], [10, 6], [22, -3], [56, 5], [34, 5], [42, 9]],\n    'w': 4},\n   [12.5, -4.0, 8.5, 6.0, -0.5, -0.5]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [27, 30, 53, 34, 37, 103],\n    'stream': [[27, 8], [30, 5], [53, 2], [34, 9], [37, -3], [38, -3], [51, 1], [27, 9]],\n    'w': 2},\n   [12, 14, 10, 14, 12, 12]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -6]], 'w': 3},\n   [0, -6]]],\n [['stream 0 w=4 d=3',\n   {'d': 3,\n    'queries': [49, 2, 6, 18, 34, 104],\n    'stream': [[49, -1], [2, 7], [6, 0], [18, 7], [34, 7], [8, 5], [1, 3], [49, 10]],\n    'w': 4},\n   [6, 0, 4, 7, 7, -3]],\n  ['stream 1 w=5 d=4',\n   {'d': 4,\n    'queries': [56, 42, 28, 49, 48, 104],\n    'stream': [[56, -1], [42, -2], [28, 1], [49, -3], [48, 0], [26, 3], [12, 7], [56, 10]],\n    'w': 5},\n   [10.5, -3.5, 2.5, -3.5, -2.0, -3.5]],\n  ['stream 2 w=3 d=5',\n   {'d': 5,\n    'queries': [41, 12, 50, 46, 3, 104],\n    'stream': [[41, 0], [12, 1], [50, 3], [46, 1], [3, 4], [30, -2], [32, -3], [41, 10]],\n    'w': 3},\n   [12, 4, 4, 4, 4, -1]],\n  ['stream 3 w=6 d=2',\n   {'d': 2,\n    'queries': [15, 5, 4, 19, 30, 104],\n    'stream': [[15, 2], [5, -3], [4, 5], [19, -2], [30, -2], [40, -3], [23, 7], [15, 10]],\n    'w': 6},\n   [12.0, -3.0, 1.0, -2.0, -4.5, -2.0]],\n  ['stream 4 w=4 d=6',\n   {'d': 6,\n    'queries': [5, 41, 39, 54, 1, 104],\n    'stream': [[5, 0], [41, 5], [39, 2], [54, 1], [1, -2], [52, 7], [13, 5], [5, 10]],\n    'w': 4},\n   [12.0, 4.0, 7.0, -4.0, -1.0, -2.0]],\n  ['stream 5 w=2 d=3',\n   {'d': 3,\n    'queries': [57, 35, 2, 54, 27, 104],\n    'stream': [[57, 8], [35, 4], [2, -3], [54, 3], [27, 4], [38, 9], [48, 4], [57, 10]],\n    'w': 2},\n   [22, 22, 3, 23, 22, 4]],\n  ['deletions cancel',\n   {'d': 3, 'queries': [7, 8], 'stream': [[7, 4], [7, -4], [8, -7]], 'w': 3},\n   [0, -7]]]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(args), expected)\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":"A deterministic, bounded teaching model with stipulated constants and pre-hashed or explicitly hashed inputs; it is not a production implementation and makes no claim of conformance to any library or paper beyond the stated contract. 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":"w2-probabilistic_sketches-count-sketch-update-sign","generated_at":"2026-09-29T14:48:44.207672+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Count sketches estimate signed frequencies in turnstile streams (inserts and deletes); their unbiasedness depends on independent signs and a median across rows.","repair":"Add sign * count on every update.","root_cause":"Updates add the raw count without multiplying by the key's row sign.","sha256":"2ea27fdc3cf21ca9ccb3ba2e62ee5f2f9555b7102535fed7a7593db614077091","title":"Count sketch frequency estimation: update omits the row sign · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":37.817,"exit_code":1,"observations":[{"actual":[1,8,-3,-7,8,-6],"check":"stream 0 w=4 d=3","expected":[-1,9,-3,-9,9,-6],"passed":false},{"actual":[11.5,-2.0,5.5,5.0,8.0,0.0],"check":"stream 1 w=5 d=4","expected":[11.5,-2.0,5.5,5.0,8.0,0.0],"passed":true},{"actual":[12,15,3,6,3,-6],"check":"stream 2 w=3 d=5","expected":[12,15,2,6,-3,-6],"passed":false},{"actual":[8.5,8.5,7.5,9.0,10.0,-5.0],"check":"stream 3 w=6 d=2","expected":[4.5,7.5,6.5,9.0,8.0,-6.0],"passed":false},{"actual":[16.0,5.0,5.0,4.0,3.0,-3.5],"check":"stream 4 w=4 d=6","expected":[15.0,3.5,5.0,4.5,0.5,-2.5],"passed":false},{"actual":[14,-2,-14,2,14,2],"check":"stream 5 w=2 d=3","expected":[12,-2,-12,2,12,2],"passed":false},{"actual":[8,3],"check":"deletions cancel","expected":[0,-3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stream 0 w=4 d=3\", \"actual\": [1, 8, -3, -7, 8, -6], \"expected\": [-1, 9, -3, -9, 9, -6], \"passed\": false}, {\"check\": \"stream 1 w=5 d=4\", \"actual\": [11.5, -2.0, 5.5, 5.0, 8.0, 0.0], \"expected\": [11.5, -2.0, 5.5, 5.0, 8.0, 0.0], \"passed\": true}, {\"check\": \"stream 2 w=3 d=5\", \"actual\": [12, 15, 3, 6, 3, -6], \"expected\": [12, 15, 2, 6, -3, -6], \"passed\": false}, {\"check\": \"stream 3 w=6 d=2\", \"actual\": [8.5, 8.5, 7.5, 9.0, 10.0, -5.0], \"expected\": [4.5, 7.5, 6.5, 9.0, 8.0, -6.0], \"passed\": false}, {\"check\": \"stream 4 w=4 d=6\", \"actual\": [16.0, 5.0, 5.0, 4.0, 3.0, -3.5], \"expected\": [15.0, 3.5, 5.0, 4.5, 0.5, -2.5], \"passed\": false}, {\"check\": \"stream 5 w=2 d=3\", \"actual\": [14, -2, -14, 2, 14, 2], \"expected\": [12, -2, -12, 2, 12, 2], \"passed\": false}, {\"check\": \"deletions cancel\", \"actual\": [8, 3], \"expected\": [0, -3], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.608,"exit_code":1,"observations":[{"actual":[11,-6,19,-6,13,-6],"check":"stream 0 w=4 d=3","expected":[-1,9,-3,-9,9,-6],"passed":false},{"actual":[12.0,4.0,-6.5,3.0,0.0,0.0],"check":"stream 1 w=5 d=4","expected":[11.5,-2.0,5.5,5.0,8.0,0.0],"passed":false},{"actual":[-12,6,15,6,-12,-5],"check":"stream 2 w=3 d=5","expected":[12,15,2,6,-3,-6],"passed":false},{"actual":[-4.5,-14.5,0.5,-2.0,-8.0,6.0],"check":"stream 3 w=6 d=2","expected":[4.5,7.5,6.5,9.0,8.0,-6.0],"passed":false},{"actual":[-12.5,-1.5,5.0,0.5,0.0,-1.0],"check":"stream 4 w=4 d=6","expected":[15.0,3.5,5.0,4.5,0.5,-2.5],"passed":false},{"actual":[-14,18,-18,18,-2,-14],"check":"stream 5 w=2 d=3","expected":[12,-2,-12,2,12,2],"passed":false},{"actual":[0,3],"check":"deletions cancel","expected":[0,-3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stream 0 w=4 d=3\", \"actual\": [11, -6, 19, -6, 13, -6], \"expected\": [-1, 9, -3, -9, 9, -6], \"passed\": false}, {\"check\": \"stream 1 w=5 d=4\", \"actual\": [12.0, 4.0, -6.5, 3.0, 0.0, 0.0], \"expected\": [11.5, -2.0, 5.5, 5.0, 8.0, 0.0], \"passed\": false}, {\"check\": \"stream 2 w=3 d=5\", \"actual\": [-12, 6, 15, 6, -12, -5], \"expected\": [12, 15, 2, 6, -3, -6], \"passed\": false}, {\"check\": \"stream 3 w=6 d=2\", \"actual\": [-4.5, -14.5, 0.5, -2.0, -8.0, 6.0], \"expected\": [4.5, 7.5, 6.5, 9.0, 8.0, -6.0], \"passed\": false}, {\"check\": \"stream 4 w=4 d=6\", \"actual\": [-12.5, -1.5, 5.0, 0.5, 0.0, -1.0], \"expected\": [15.0, 3.5, 5.0, 4.5, 0.5, -2.5], \"passed\": false}, {\"check\": \"stream 5 w=2 d=3\", \"actual\": [-14, 18, -18, 18, -2, -14], \"expected\": [12, -2, -12, 2, 12, 2], \"passed\": false}, {\"check\": \"deletions cancel\", \"actual\": [0, 3], \"expected\": [0, -3], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.51,"exit_code":0,"observations":[{"actual":[-1,9,-3,-9,9,-6],"check":"stream 0 w=4 d=3","expected":[-1,9,-3,-9,9,-6],"passed":true},{"actual":[11.5,-2.0,5.5,5.0,8.0,0.0],"check":"stream 1 w=5 d=4","expected":[11.5,-2.0,5.5,5.0,8.0,0.0],"passed":true},{"actual":[12,15,2,6,-3,-6],"check":"stream 2 w=3 d=5","expected":[12,15,2,6,-3,-6],"passed":true},{"actual":[4.5,7.5,6.5,9.0,8.0,-6.0],"check":"stream 3 w=6 d=2","expected":[4.5,7.5,6.5,9.0,8.0,-6.0],"passed":true},{"actual":[15.0,3.5,5.0,4.5,0.5,-2.5],"check":"stream 4 w=4 d=6","expected":[15.0,3.5,5.0,4.5,0.5,-2.5],"passed":true},{"actual":[12,-2,-12,2,12,2],"check":"stream 5 w=2 d=3","expected":[12,-2,-12,2,12,2],"passed":true},{"actual":[0,-3],"check":"deletions cancel","expected":[0,-3],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stream 0 w=4 d=3\", \"actual\": [-1, 9, -3, -9, 9, -6], \"expected\": [-1, 9, -3, -9, 9, -6], \"passed\": true}, {\"check\": \"stream 1 w=5 d=4\", \"actual\": [11.5, -2.0, 5.5, 5.0, 8.0, 0.0], \"expected\": [11.5, -2.0, 5.5, 5.0, 8.0, 0.0], \"passed\": true}, {\"check\": \"stream 2 w=3 d=5\", \"actual\": [12, 15, 2, 6, -3, -6], \"expected\": [12, 15, 2, 6, -3, -6], \"passed\": true}, {\"check\": \"stream 3 w=6 d=2\", \"actual\": [4.5, 7.5, 6.5, 9.0, 8.0, -6.0], \"expected\": [4.5, 7.5, 6.5, 9.0, 8.0, -6.0], \"passed\": true}, {\"check\": \"stream 4 w=4 d=6\", \"actual\": [15.0, 3.5, 5.0, 4.5, 0.5, -2.5], \"expected\": [15.0, 3.5, 5.0, 4.5, 0.5, -2.5], \"passed\": true}, {\"check\": \"stream 5 w=2 d=3\", \"actual\": [12, -2, -12, 2, 12, 2], \"expected\": [12, -2, -12, 2, 12, 2], \"passed\": true}, {\"check\": \"deletions cancel\", \"actual\": [0, -3], \"expected\": [0, -3], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}