{"abstract":"An item whose stride wraps onto an earlier position inflates that counter, and later removals leave residue or drain other items.","category":"Probabilistic sketches","checks":9,"contract":"Input {m, k, ops}; items are pre-hashed non-negative integers. Positions are the distinct values of (h1 + i*h2) mod m for i in 0..k-1 with h1 = item mod m and h2 = 1 + (item div m) mod (m-1), in first-seen order. add increments each distinct position once, saturating at 15. A saturated counter is sticky: remove never decrements it. remove is atomic: if any position is zero the result is \"absent\" and nothing changes; otherwise it decrements every non-saturated position. has requires every position to be positive. Return [results, counters].","evaluation_group":"w2-probabilistic_sketches-counting-bloom","failed_approach":"De-duplicating only for add still decrements a repeated position twice on remove, leaving the filter inconsistent.","family":"w2-probabilistic_sketches-counting-bloom-distinct-positions","id":"FA-72926","implementations":{"attempt":{"sha256":"038819c8d77ebb7f57ca5517598c4de0510393754d5a07472b1989a471d1abbf","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    m = x['m']\n    k = x['k']\n    c = [0] * m\n    def positions(item):\n        h1 = item % m\n        h2 = 1 + (item // m) % (m - 1)\n        out = []\n        for i in range(k):\n            p = (h1 + i * h2) % m\n            if p not in out or op == 'remove':\n                out.append(p)\n        return out\n    res = []\n    for op, item in x['ops']:\n        pos = positions(item)\n        if op == 'add':\n            for p in pos:\n                if c[p] < 15:\n                    c[p] = c[p] + 1\n            res.append('added')\n        elif op == 'remove':\n            if any(c[p] == 0 for p in pos):\n                res.append('absent')\n                continue\n            for p in pos:\n                if c[p] < 15:\n                    c[p] = c[p] - 1\n            res.append('removed')\n        else:\n            res.append(all(c[p] > 0 for p in pos))\n    return [res, c]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['duplicate probe positions',\n   {'k': 4,\n    'm': 12,\n    'ops': [['add', 63], ['add', 1], ['has', 63], ['remove', 63], ['has', 63], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 12,\n    'ops': [['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['has', 63]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 12, 'ops': [['add', 137], ['add', 8], ['has', 137], ['remove', 8]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 12,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 12, 'ops': [['add', 6], ['remove', 42], ['has', 6]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 12, 'ops': [['add', 2], ['add', 14], ['has', 26], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 12, 'ops': [['add', 31], ['add', 32], ['remove', 31], ['has', 31], ['has', 32]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 12, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 12,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 14,\n    'ops': [['add', 87], ['add', 1], ['has', 87], ['remove', 87], ['has', 87], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 14,\n    'ops': [['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['has', 87]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 14, 'ops': [['add', 187], ['add', 9], ['has', 187], ['remove', 9]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 14,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 14, 'ops': [['add', 7], ['remove', 49], ['has', 7]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 14, 'ops': [['add', 2], ['add', 16], ['has', 30], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 14, 'ops': [['add', 32], ['add', 33], ['remove', 32], ['has', 32], ['has', 33]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 14, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 14,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 15,\n    'ops': [['add', 63], ['add', 1], ['has', 63], ['remove', 63], ['has', 63], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 15,\n    'ops': [['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['has', 63]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 15, 'ops': [['add', 215], ['add', 10], ['has', 215], ['remove', 10]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 15,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 15, 'ops': [['add', 8], ['remove', 53], ['has', 8]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 15, 'ops': [['add', 2], ['add', 17], ['has', 32], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 15, 'ops': [['add', 33], ['add', 34], ['remove', 33], ['has', 33], ['has', 34]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 15, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 15,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 16,\n    'ops': [['add', 115], ['add', 1], ['has', 115], ['remove', 115], ['has', 115], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 16,\n    'ops': [['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['has', 115]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 16, 'ops': [['add', 245], ['add', 11], ['has', 245], ['remove', 11]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 16,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 16, 'ops': [['add', 9], ['remove', 57], ['has', 9]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 16, 'ops': [['add', 2], ['add', 18], ['has', 34], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 16, 'ops': [['add', 34], ['add', 35], ['remove', 34], ['has', 34], ['has', 35]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 16, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 16,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 18,\n    'ops': [['add', 147], ['add', 1], ['has', 147], ['remove', 147], ['has', 147], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 18,\n    'ops': [['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['has', 147]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 18, 'ops': [['add', 311], ['add', 12], ['has', 311], ['remove', 12]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 18,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 18, 'ops': [['add', 10], ['remove', 64], ['has', 10]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 18, 'ops': [['add', 2], ['add', 20], ['has', 38], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True],\n    [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 18, 'ops': [['add', 35], ['add', 36], ['remove', 35], ['has', 35], ['has', 36]]},\n   [['added', 'added', 'removed', False, True],\n    [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 18, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 18,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]]]]\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":"a9a5cb1b2a4fc592f0cddca7193d2e778d7b2195c3a944b9448e11a449f3f1bf","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    m = x['m']\n    k = x['k']\n    c = [0] * m\n    def positions(item):\n        h1 = item % m\n        h2 = 1 + (item // m) % (m - 1)\n        out = []\n        for i in range(k):\n            p = (h1 + i * h2) % m\n            out.append(p)\n        return out\n    res = []\n    for op, item in x['ops']:\n        pos = positions(item)\n        if op == 'add':\n            for p in pos:\n                if c[p] < 15:\n                    c[p] = c[p] + 1\n            res.append('added')\n        elif op == 'remove':\n            if any(c[p] == 0 for p in pos):\n                res.append('absent')\n                continue\n            for p in pos:\n                if c[p] < 15:\n                    c[p] = c[p] - 1\n            res.append('removed')\n        else:\n            res.append(all(c[p] > 0 for p in pos))\n    return [res, c]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['duplicate probe positions',\n   {'k': 4,\n    'm': 12,\n    'ops': [['add', 63], ['add', 1], ['has', 63], ['remove', 63], ['has', 63], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 12,\n    'ops': [['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['has', 63]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 12, 'ops': [['add', 137], ['add', 8], ['has', 137], ['remove', 8]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 12,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 12, 'ops': [['add', 6], ['remove', 42], ['has', 6]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 12, 'ops': [['add', 2], ['add', 14], ['has', 26], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 12, 'ops': [['add', 31], ['add', 32], ['remove', 31], ['has', 31], ['has', 32]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 12, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 12,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 14,\n    'ops': [['add', 87], ['add', 1], ['has', 87], ['remove', 87], ['has', 87], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 14,\n    'ops': [['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['has', 87]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 14, 'ops': [['add', 187], ['add', 9], ['has', 187], ['remove', 9]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 14,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 14, 'ops': [['add', 7], ['remove', 49], ['has', 7]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 14, 'ops': [['add', 2], ['add', 16], ['has', 30], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 14, 'ops': [['add', 32], ['add', 33], ['remove', 32], ['has', 32], ['has', 33]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 14, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 14,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 15,\n    'ops': [['add', 63], ['add', 1], ['has', 63], ['remove', 63], ['has', 63], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 15,\n    'ops': [['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['has', 63]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 15, 'ops': [['add', 215], ['add', 10], ['has', 215], ['remove', 10]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 15,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 15, 'ops': [['add', 8], ['remove', 53], ['has', 8]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 15, 'ops': [['add', 2], ['add', 17], ['has', 32], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 15, 'ops': [['add', 33], ['add', 34], ['remove', 33], ['has', 33], ['has', 34]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 15, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 15,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 16,\n    'ops': [['add', 115], ['add', 1], ['has', 115], ['remove', 115], ['has', 115], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 16,\n    'ops': [['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['has', 115]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 16, 'ops': [['add', 245], ['add', 11], ['has', 245], ['remove', 11]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 16,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 16, 'ops': [['add', 9], ['remove', 57], ['has', 9]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 16, 'ops': [['add', 2], ['add', 18], ['has', 34], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 16, 'ops': [['add', 34], ['add', 35], ['remove', 34], ['has', 34], ['has', 35]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 16, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 16,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 18,\n    'ops': [['add', 147], ['add', 1], ['has', 147], ['remove', 147], ['has', 147], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 18,\n    'ops': [['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['has', 147]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 18, 'ops': [['add', 311], ['add', 12], ['has', 311], ['remove', 12]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 18,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 18, 'ops': [['add', 10], ['remove', 64], ['has', 10]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 18, 'ops': [['add', 2], ['add', 20], ['has', 38], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True],\n    [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 18, 'ops': [['add', 35], ['add', 36], ['remove', 35], ['has', 35], ['has', 36]]},\n   [['added', 'added', 'removed', False, True],\n    [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 18, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 18,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]]]]\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":"b1752ed904752db5c3830a5b34af03464bdda54fa5d33ac76f7fa036f848ea62","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    m = x['m']\n    k = x['k']\n    c = [0] * m\n    def positions(item):\n        h1 = item % m\n        h2 = 1 + (item // m) % (m - 1)\n        out = []\n        for i in range(k):\n            p = (h1 + i * h2) % m\n            if p not in out:\n                out.append(p)\n        return out\n    res = []\n    for op, item in x['ops']:\n        pos = positions(item)\n        if op == 'add':\n            for p in pos:\n                if c[p] < 15:\n                    c[p] = c[p] + 1\n            res.append('added')\n        elif op == 'remove':\n            if any(c[p] == 0 for p in pos):\n                res.append('absent')\n                continue\n            for p in pos:\n                if c[p] < 15:\n                    c[p] = c[p] - 1\n            res.append('removed')\n        else:\n            res.append(all(c[p] > 0 for p in pos))\n    return [res, c]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['duplicate probe positions',\n   {'k': 4,\n    'm': 12,\n    'ops': [['add', 63], ['add', 1], ['has', 63], ['remove', 63], ['has', 63], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 12,\n    'ops': [['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['has', 63]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 12, 'ops': [['add', 137], ['add', 8], ['has', 137], ['remove', 8]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 12,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 12, 'ops': [['add', 6], ['remove', 42], ['has', 6]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 12, 'ops': [['add', 2], ['add', 14], ['has', 26], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 12, 'ops': [['add', 31], ['add', 32], ['remove', 31], ['has', 31], ['has', 32]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 12, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 12,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 14,\n    'ops': [['add', 87], ['add', 1], ['has', 87], ['remove', 87], ['has', 87], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 14,\n    'ops': [['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['add', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['remove', 87],\n            ['has', 87]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 14, 'ops': [['add', 187], ['add', 9], ['has', 187], ['remove', 9]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 14,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 14, 'ops': [['add', 7], ['remove', 49], ['has', 7]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 14, 'ops': [['add', 2], ['add', 16], ['has', 30], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 14, 'ops': [['add', 32], ['add', 33], ['remove', 32], ['has', 32], ['has', 33]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 14, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 14,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 15,\n    'ops': [['add', 63], ['add', 1], ['has', 63], ['remove', 63], ['has', 63], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 15,\n    'ops': [['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['add', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['remove', 63],\n            ['has', 63]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 15, 'ops': [['add', 215], ['add', 10], ['has', 215], ['remove', 10]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 15,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 15, 'ops': [['add', 8], ['remove', 53], ['has', 8]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 15, 'ops': [['add', 2], ['add', 17], ['has', 32], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 15, 'ops': [['add', 33], ['add', 34], ['remove', 33], ['has', 33], ['has', 34]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 15, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 15,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 16,\n    'ops': [['add', 115], ['add', 1], ['has', 115], ['remove', 115], ['has', 115], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 16,\n    'ops': [['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['add', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['remove', 115],\n            ['has', 115]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 16, 'ops': [['add', 245], ['add', 11], ['has', 245], ['remove', 11]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 16,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 16, 'ops': [['add', 9], ['remove', 57], ['has', 9]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 16, 'ops': [['add', 2], ['add', 18], ['has', 34], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 16, 'ops': [['add', 34], ['add', 35], ['remove', 34], ['has', 34], ['has', 35]]},\n   [['added', 'added', 'removed', False, True], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 16, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 16,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0]]]],\n [['duplicate probe positions',\n   {'k': 4,\n    'm': 18,\n    'ops': [['add', 147], ['add', 1], ['has', 147], ['remove', 147], ['has', 147], ['has', 1]]},\n   [['added', 'added', True, 'removed', False, True],\n    [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['hot item with repeated positions',\n   {'k': 4,\n    'm': 18,\n    'ops': [['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['add', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['remove', 147],\n            ['has', 147]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     False],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['wide stride item',\n   {'k': 3, 'm': 18, 'ops': [['add', 311], ['add', 12], ['has', 311], ['remove', 12]]},\n   [['added', 'added', True, 'removed'], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturating counter',\n   {'k': 2,\n    'm': 18,\n    'ops': [['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['add', 4],\n            ['remove', 4],\n            ['has', 4]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     True],\n    [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['atomic removal of absent item',\n   {'k': 3, 'm': 18, 'ops': [['add', 10], ['remove', 64], ['has', 10]]},\n   [['added', 'absent', True], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0]]],\n  ['partial overlap membership',\n   {'k': 3, 'm': 18, 'ops': [['add', 2], ['add', 20], ['has', 38], ['has', 3], ['has', 2]]},\n   [['added', 'added', False, False, True],\n    [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['normal add and remove',\n   {'k': 2, 'm': 18, 'ops': [['add', 35], ['add', 36], ['remove', 35], ['has', 35], ['has', 36]]},\n   [['added', 'added', 'removed', False, True],\n    [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['remove absent from empty',\n   {'k': 2, 'm': 18, 'ops': [['remove', 9], ['has', 9]]},\n   [['absent', False], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]],\n  ['saturated then drained',\n   {'k': 1,\n    'm': 18,\n    'ops': [['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['add', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['remove', 6],\n            ['has', 6]]},\n   [['added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'added',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     'removed',\n     True],\n    [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]]]]\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-counting-bloom-distinct-positions","generated_at":"2026-09-29T14:48:42.829266+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Counting Bloom filters support deletion in caches and routing tables; counter overflow, duplicate positions and non-atomic removals create false negatives that are otherwise impossible.","repair":"Collect distinct positions per item so each counter changes at most once per operation.","root_cause":"Positions are not de-duplicated, so an item whose probes repeat increments the same counter more than once.","sha256":"b8557bf3dcb90b461ca7980a1aa64542fd0dfad4c0e3b61f921b89f9c0048eda","title":"Counting Bloom filter with 4-bit counters: repeated probe position counted twice · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.976,"exit_code":1,"observations":[{"actual":[["added","added",true,"removed",false,false],[0,1,1,0,1,0,0,0,0,-1,0,0]],"check":"duplicate probe positions","expected":[["added","added",true,"removed",false,true],[0,1,1,1,1,0,0,0,0,0,0,0]],"passed":false},{"actual":[["added","added","added","added","added","added","added","added","removed","removed","removed","removed","absent","absent","absent","absent",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"check":"hot item with repeated positions","expected":[["added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"passed":false},{"actual":[["added","added",true,"removed"],[0,0,0,0,0,1,1,1,0,0,0,0]],"check":"wide stride item","expected":[["added","added",true,"removed"],[0,0,0,0,0,1,1,1,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed",true],[0,0,0,0,15,15,0,0,0,0,0,0]],"check":"saturating counter","expected":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed",true],[0,0,0,0,15,15,0,0,0,0,0,0]],"passed":true},{"actual":[["added","absent",true],[0,0,0,0,0,0,1,1,1,0,0,0]],"check":"atomic removal of absent item","expected":[["added","absent",true],[0,0,0,0,0,0,1,1,1,0,0,0]],"passed":true},{"actual":[["added","added",false,false,true],[0,0,2,1,2,0,1,0,0,0,0,0]],"check":"partial overlap membership","expected":[["added","added",false,false,true],[0,0,2,1,2,0,1,0,0,0,0,0]],"passed":true},{"actual":[["added","added","removed",false,true],[0,0,0,0,0,0,0,0,1,0,0,1]],"check":"normal add and remove","expected":[["added","added","removed",false,true],[0,0,0,0,0,0,0,0,1,0,0,1]],"passed":true},{"actual":[["absent",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"check":"remove absent from empty","expected":[["absent",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed",true],[0,0,0,0,0,0,15,0,0,0,0,0]],"check":"saturated then drained","expected":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed",true],[0,0,0,0,0,0,15,0,0,0,0,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate probe positions\", \"actual\": [[\"added\", \"added\", true, \"removed\", false, false], [0, 1, 1, 0, 1, 0, 0, 0, 0, -1, 0, 0]], \"expected\": [[\"added\", \"added\", true, \"removed\", false, true], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]], \"passed\": false}, {\"check\": \"hot item with repeated positions\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"absent\", \"absent\", \"absent\", \"absent\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"passed\": false}, {\"check\": \"wide stride item\", \"actual\": [[\"added\", \"added\", true, \"removed\"], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", true, \"removed\"], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"saturating counter\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", true], [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", true], [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"atomic removal of absent item\", \"actual\": [[\"added\", \"absent\", true], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]], \"expected\": [[\"added\", \"absent\", true], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]], \"passed\": true}, {\"check\": \"partial overlap membership\", \"actual\": [[\"added\", \"added\", false, false, true], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", false, false, true], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"normal add and remove\", \"actual\": [[\"added\", \"added\", \"removed\", false, true], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]], \"expected\": [[\"added\", \"added\", \"removed\", false, true], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]], \"passed\": true}, {\"check\": \"remove absent from empty\", \"actual\": [[\"absent\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"absent\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"saturated then drained\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", true], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", true], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.984,"exit_code":1,"observations":[{"actual":[["added","added",true,"removed",false,true],[0,1,1,1,1,0,0,0,0,0,0,0]],"check":"duplicate probe positions","expected":[["added","added",true,"removed",false,true],[0,1,1,1,1,0,0,0,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed",true],[0,0,0,15,0,0,0,0,0,15,0,0]],"check":"hot item with repeated positions","expected":[["added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"passed":false},{"actual":[["added","added",true,"removed"],[0,0,0,0,0,1,1,1,0,0,0,0]],"check":"wide stride item","expected":[["added","added",true,"removed"],[0,0,0,0,0,1,1,1,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed",true],[0,0,0,0,15,15,0,0,0,0,0,0]],"check":"saturating counter","expected":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed",true],[0,0,0,0,15,15,0,0,0,0,0,0]],"passed":true},{"actual":[["added","absent",true],[0,0,0,0,0,0,1,1,1,0,0,0]],"check":"atomic removal of absent item","expected":[["added","absent",true],[0,0,0,0,0,0,1,1,1,0,0,0]],"passed":true},{"actual":[["added","added",false,false,true],[0,0,2,1,2,0,1,0,0,0,0,0]],"check":"partial overlap membership","expected":[["added","added",false,false,true],[0,0,2,1,2,0,1,0,0,0,0,0]],"passed":true},{"actual":[["added","added","removed",false,true],[0,0,0,0,0,0,0,0,1,0,0,1]],"check":"normal add and remove","expected":[["added","added","removed",false,true],[0,0,0,0,0,0,0,0,1,0,0,1]],"passed":true},{"actual":[["absent",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"check":"remove absent from empty","expected":[["absent",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed",true],[0,0,0,0,0,0,15,0,0,0,0,0]],"check":"saturated then drained","expected":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed",true],[0,0,0,0,0,0,15,0,0,0,0,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate probe positions\", \"actual\": [[\"added\", \"added\", true, \"removed\", false, true], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", true, \"removed\", false, true], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"hot item with repeated positions\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", true], [0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"passed\": false}, {\"check\": \"wide stride item\", \"actual\": [[\"added\", \"added\", true, \"removed\"], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", true, \"removed\"], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"saturating counter\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", true], [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", true], [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"atomic removal of absent item\", \"actual\": [[\"added\", \"absent\", true], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]], \"expected\": [[\"added\", \"absent\", true], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]], \"passed\": true}, {\"check\": \"partial overlap membership\", \"actual\": [[\"added\", \"added\", false, false, true], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", false, false, true], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"normal add and remove\", \"actual\": [[\"added\", \"added\", \"removed\", false, true], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]], \"expected\": [[\"added\", \"added\", \"removed\", false, true], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]], \"passed\": true}, {\"check\": \"remove absent from empty\", \"actual\": [[\"absent\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"absent\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"saturated then drained\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", true], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", true], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.878,"exit_code":0,"observations":[{"actual":[["added","added",true,"removed",false,true],[0,1,1,1,1,0,0,0,0,0,0,0]],"check":"duplicate probe positions","expected":[["added","added",true,"removed",false,true],[0,1,1,1,1,0,0,0,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"check":"hot item with repeated positions","expected":[["added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"passed":true},{"actual":[["added","added",true,"removed"],[0,0,0,0,0,1,1,1,0,0,0,0]],"check":"wide stride item","expected":[["added","added",true,"removed"],[0,0,0,0,0,1,1,1,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed",true],[0,0,0,0,15,15,0,0,0,0,0,0]],"check":"saturating counter","expected":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed",true],[0,0,0,0,15,15,0,0,0,0,0,0]],"passed":true},{"actual":[["added","absent",true],[0,0,0,0,0,0,1,1,1,0,0,0]],"check":"atomic removal of absent item","expected":[["added","absent",true],[0,0,0,0,0,0,1,1,1,0,0,0]],"passed":true},{"actual":[["added","added",false,false,true],[0,0,2,1,2,0,1,0,0,0,0,0]],"check":"partial overlap membership","expected":[["added","added",false,false,true],[0,0,2,1,2,0,1,0,0,0,0,0]],"passed":true},{"actual":[["added","added","removed",false,true],[0,0,0,0,0,0,0,0,1,0,0,1]],"check":"normal add and remove","expected":[["added","added","removed",false,true],[0,0,0,0,0,0,0,0,1,0,0,1]],"passed":true},{"actual":[["absent",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"check":"remove absent from empty","expected":[["absent",false],[0,0,0,0,0,0,0,0,0,0,0,0]],"passed":true},{"actual":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed",true],[0,0,0,0,0,0,15,0,0,0,0,0]],"check":"saturated then drained","expected":[["added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","added","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed","removed",true],[0,0,0,0,0,0,15,0,0,0,0,0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate probe positions\", \"actual\": [[\"added\", \"added\", true, \"removed\", false, true], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", true, \"removed\", false, true], [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"hot item with repeated positions\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"wide stride item\", \"actual\": [[\"added\", \"added\", true, \"removed\"], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", true, \"removed\"], [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"saturating counter\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", true], [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", true], [0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"atomic removal of absent item\", \"actual\": [[\"added\", \"absent\", true], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]], \"expected\": [[\"added\", \"absent\", true], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]], \"passed\": true}, {\"check\": \"partial overlap membership\", \"actual\": [[\"added\", \"added\", false, false, true], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", false, false, true], [0, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"normal add and remove\", \"actual\": [[\"added\", \"added\", \"removed\", false, true], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]], \"expected\": [[\"added\", \"added\", \"removed\", false, true], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]], \"passed\": true}, {\"check\": \"remove absent from empty\", \"actual\": [[\"absent\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"expected\": [[\"absent\", false], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"saturated then drained\", \"actual\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", true], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]], \"expected\": [[\"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"added\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", \"removed\", true], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}