{"abstract":"A client that keeps retrying never recovers because every denial is logged.","category":"Rate limiter algorithms","checks":6,"contract":"Input {limit, window_ms, requests [t]}. The limiter clock is now = max of all timestamps seen, so a late request is evaluated at now. Log entries with s <= now - W are pruned. Allow while fewer than limit entries remain and log now; denials are not logged and report retry = oldest + W - now. Return [[decision, retry]], final log].","evaluation_group":"w2-rate_limiter_algorithms-sliding-log","failed_approach":"Trimming the log to the newest L entries still records denials and discards older admitted ones.","family":"w2-rate_limiter_algorithms-sliding-log-denied-logged","id":"FA-73441","implementations":{"attempt":{"sha256":"ca81ab114cb084c10c22288f1d8f8e37f9328f31a6bd225a384b5cb46b6b06b1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    L = x['limit']\n    W = x['window_ms']\n    log = []\n    now = None\n    out = []\n    for t in x['requests']:\n        now = t if now is None else max(now, t)\n        log = [s for s in log if s > now - W]\n        if len(log) < L:\n            log.append(now)\n            out.append(['allow', 0])\n        else:\n            log.append(now)\n            log = log[-L:]\n            out.append(['deny', log[0] + W - now])\n    return [out, log]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1011, 1012], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 988]], [1000, 1011]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1051, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1051, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 101, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 701, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 299],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [737, 924, 1194, 1231, 1362, 1408, 1509, 1520, 1559, 1643, 1776, 2570],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 306],\n     ['deny', 175],\n     ['deny', 129],\n     ['deny', 28],\n     ['deny', 17],\n     ['allow', 0],\n     ['deny', 81],\n     ['allow', 0],\n     ['allow', 0]],\n    [1776, 2570]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 151, 251], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 49], ['allow', 0]], [251]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1012, 1013], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 987]], [1000, 1012]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1052, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1052, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 102, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 702, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 298],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [203, 368, 954, 964, 1092, 1537, 1711, 1845, 1983, 2392, 2599, 2816],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 39],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 43],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 46],\n     ['allow', 0]],\n    [2392, 2816]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 152, 252], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 48], ['allow', 0]], [252]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1013, 1014], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 986]], [1000, 1013]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1053, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1053, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 103, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 703, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 297],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [659, 794, 1414, 1446, 1627, 2009, 2196, 2262, 2536, 2557, 2734, 2819],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 13],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 18],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 252],\n     ['deny', 75],\n     ['allow', 0]],\n    [2262, 2536, 2819]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 153, 253], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 47], ['allow', 0]], [253]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1014, 1015], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 985]], [1000, 1014]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1054, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1054, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 104, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 704, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 296],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [81, 344, 553, 1450, 1591, 1736, 1934, 2492, 2556, 2664, 2677, 2831],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 316],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 615],\n     ['deny', 461]],\n    [2492, 2556, 2664]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 154, 254], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 46], ['allow', 0]], [254]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1015, 1016], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 984]], [1000, 1015]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1055, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1055, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 105, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 705, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 295],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [85, 117, 140, 309, 683, 1093, 2036, 2231, 2349, 2416, 2706, 2868],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 576],\n     ['deny', 202],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 420],\n     ['deny', 130],\n     ['allow', 0]],\n    [2231, 2349, 2868]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 155, 255], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 45], ['allow', 0]], [255]]]]]\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":"e20ab3cf097aa393314fbcd95409fbfc698fda65ac872b46c456c5bfd91f266f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    L = x['limit']\n    W = x['window_ms']\n    log = []\n    now = None\n    out = []\n    for t in x['requests']:\n        now = t if now is None else max(now, t)\n        log = [s for s in log if s > now - W]\n        if len(log) < L:\n            log.append(now)\n            out.append(['allow', 0])\n        else:\n            log.append(now)\n            out.append(['deny', log[0] + W - now])\n    return [out, log]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1011, 1012], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 988]], [1000, 1011]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1051, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1051, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 101, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 701, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 299],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [737, 924, 1194, 1231, 1362, 1408, 1509, 1520, 1559, 1643, 1776, 2570],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 306],\n     ['deny', 175],\n     ['deny', 129],\n     ['deny', 28],\n     ['deny', 17],\n     ['allow', 0],\n     ['deny', 81],\n     ['allow', 0],\n     ['allow', 0]],\n    [1776, 2570]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 151, 251], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 49], ['allow', 0]], [251]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1012, 1013], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 987]], [1000, 1012]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1052, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1052, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 102, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 702, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 298],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [203, 368, 954, 964, 1092, 1537, 1711, 1845, 1983, 2392, 2599, 2816],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 39],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 43],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 46],\n     ['allow', 0]],\n    [2392, 2816]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 152, 252], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 48], ['allow', 0]], [252]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1013, 1014], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 986]], [1000, 1013]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1053, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1053, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 103, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 703, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 297],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [659, 794, 1414, 1446, 1627, 2009, 2196, 2262, 2536, 2557, 2734, 2819],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 13],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 18],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 252],\n     ['deny', 75],\n     ['allow', 0]],\n    [2262, 2536, 2819]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 153, 253], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 47], ['allow', 0]], [253]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1014, 1015], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 985]], [1000, 1014]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1054, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1054, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 104, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 704, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 296],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [81, 344, 553, 1450, 1591, 1736, 1934, 2492, 2556, 2664, 2677, 2831],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 316],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 615],\n     ['deny', 461]],\n    [2492, 2556, 2664]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 154, 254], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 46], ['allow', 0]], [254]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1015, 1016], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 984]], [1000, 1015]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1055, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1055, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 105, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 705, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 295],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [85, 117, 140, 309, 683, 1093, 2036, 2231, 2349, 2416, 2706, 2868],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 576],\n     ['deny', 202],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 420],\n     ['deny', 130],\n     ['allow', 0]],\n    [2231, 2349, 2868]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 155, 255], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 45], ['allow', 0]], [255]]]]]\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":"ffe51265a277ce4d7596f91f3be68a941ede7195d2ea2fe528e7085fe3934f40","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    L = x['limit']\n    W = x['window_ms']\n    log = []\n    now = None\n    out = []\n    for t in x['requests']:\n        now = t if now is None else max(now, t)\n        log = [s for s in log if s > now - W]\n        if len(log) < L:\n            log.append(now)\n            out.append(['allow', 0])\n        else:\n            out.append(['deny', log[0] + W - now])\n    return [out, log]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1011, 1012], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 988]], [1000, 1011]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1051, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1051, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 101, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 701, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 299],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [737, 924, 1194, 1231, 1362, 1408, 1509, 1520, 1559, 1643, 1776, 2570],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 306],\n     ['deny', 175],\n     ['deny', 129],\n     ['deny', 28],\n     ['deny', 17],\n     ['allow', 0],\n     ['deny', 81],\n     ['allow', 0],\n     ['allow', 0]],\n    [1776, 2570]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 151, 251], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 49], ['allow', 0]], [251]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1012, 1013], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 987]], [1000, 1012]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1052, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1052, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 102, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 702, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 298],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [203, 368, 954, 964, 1092, 1537, 1711, 1845, 1983, 2392, 2599, 2816],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 39],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 43],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 46],\n     ['allow', 0]],\n    [2392, 2816]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 152, 252], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 48], ['allow', 0]], [252]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1013, 1014], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 986]], [1000, 1013]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1053, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1053, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 103, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 703, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 297],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [659, 794, 1414, 1446, 1627, 2009, 2196, 2262, 2536, 2557, 2734, 2819],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 13],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 18],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 252],\n     ['deny', 75],\n     ['allow', 0]],\n    [2262, 2536, 2819]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 153, 253], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 47], ['allow', 0]], [253]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1014, 1015], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 985]], [1000, 1014]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1054, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1054, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 104, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 704, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 296],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [81, 344, 553, 1450, 1591, 1736, 1934, 2492, 2556, 2664, 2677, 2831],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 316],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 615],\n     ['deny', 461]],\n    [2492, 2556, 2664]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 154, 254], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 46], ['allow', 0]], [254]]]],\n [['exact expiry boundary',\n   {'limit': 2, 'requests': [0, 10, 1000, 1015, 1016], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['allow', 0], ['allow', 0], ['deny', 984]], [1000, 1015]]],\n  ['denied requests not logged',\n   {'limit': 2, 'requests': [0, 100, 200, 300, 1055, 1150], 'window_ms': 1000},\n   [[['allow', 0], ['allow', 0], ['deny', 800], ['deny', 700], ['allow', 0], ['allow', 0]],\n    [1055, 1150]]],\n  ['late timestamp uses monotonic now',\n   {'limit': 2, 'requests': [400, 450, 105, 900, 905, 960], 'window_ms': 500},\n   [[['allow', 0], ['allow', 0], ['deny', 450], ['allow', 0], ['deny', 45], ['allow', 0]],\n    [900, 960]]],\n  ['retry after oldest expires',\n   {'limit': 3, 'requests': [0, 300, 600, 705, 999, 1000, 1001], 'window_ms': 1000},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 295],\n     ['deny', 1],\n     ['allow', 0],\n     ['deny', 299]],\n    [300, 600, 1000]]],\n  ['random traffic',\n   {'limit': 3,\n    'requests': [85, 117, 140, 309, 683, 1093, 2036, 2231, 2349, 2416, 2706, 2868],\n    'window_ms': 800},\n   [[['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 576],\n     ['deny', 202],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['allow', 0],\n     ['deny', 420],\n     ['deny', 130],\n     ['allow', 0]],\n    [2231, 2349, 2868]]],\n  ['single slot',\n   {'limit': 1, 'requests': [0, 50, 100, 155, 255], 'window_ms': 100},\n   [[['allow', 0], ['deny', 50], ['allow', 0], ['deny', 45], ['allow', 0]], [255]]]]]\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-rate_limiter_algorithms-sliding-log-denied-logged","generated_at":"2026-09-29T14:48:47.554716+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Sliding logs give exact rolling-window limits for login attempts and expensive endpoints; pruning and logging rules decide exactly when a client may retry.","repair":"Log only admitted requests.","root_cause":"Denied requests are appended to the log.","sha256":"989c0574666c4475112e4abd9656f13127da96e207532e221cf33e96512395ca","title":"Sliding-window log limiter: denied requests extend the lockout · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.258,"exit_code":1,"observations":[{"actual":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",999]],[1011,1012]],"check":"exact expiry boundary","expected":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",988]],[1000,1011]],"passed":false},{"actual":[[["allow",0],["allow",0],["deny",900],["deny",900],["deny",249],["deny",901]],[1051,1150]],"check":"denied requests not logged","expected":[[["allow",0],["allow",0],["deny",800],["deny",700],["allow",0],["allow",0]],[1051,1150]],"passed":false},{"actual":[[["allow",0],["allow",0],["deny",500],["deny",50],["deny",495],["deny",445]],[905,960]],"check":"late timestamp uses monotonic now","expected":[[["allow",0],["allow",0],["deny",450],["allow",0],["deny",45],["allow",0]],[900,960]],"passed":false},{"actual":[[["allow",0],["allow",0],["allow",0],["deny",599],["deny",601],["deny",701],["deny",998]],[999,1000,1001]],"check":"retry after oldest expires","expected":[[["allow",0],["allow",0],["allow",0],["deny",299],["deny",1],["allow",0],["deny",299]],[300,600,1000]],"passed":false},{"actual":[[["allow",0],["allow",0],["allow",0],["deny",493],["deny",632],["deny",623],["deny",653],["deny",688],["deny",750],["deny",677],["deny",583],["allow",0]],[1776,2570]],"check":"random traffic","expected":[[["allow",0],["allow",0],["allow",0],["deny",306],["deny",175],["deny",129],["deny",28],["deny",17],["allow",0],["deny",81],["allow",0],["allow",0]],[1776,2570]],"passed":false},{"actual":[[["allow",0],["deny",100],["deny",100],["deny",100],["allow",0]],[251]],"check":"single slot","expected":[[["allow",0],["deny",50],["allow",0],["deny",49],["allow",0]],[251]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exact expiry boundary\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 999]], [1011, 1012]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 988]], [1000, 1011]], \"passed\": false}, {\"check\": \"denied requests not logged\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 900], [\"deny\", 900], [\"deny\", 249], [\"deny\", 901]], [1051, 1150]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 800], [\"deny\", 700], [\"allow\", 0], [\"allow\", 0]], [1051, 1150]], \"passed\": false}, {\"check\": \"late timestamp uses monotonic now\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 500], [\"deny\", 50], [\"deny\", 495], [\"deny\", 445]], [905, 960]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 450], [\"allow\", 0], [\"deny\", 45], [\"allow\", 0]], [900, 960]], \"passed\": false}, {\"check\": \"retry after oldest expires\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 599], [\"deny\", 601], [\"deny\", 701], [\"deny\", 998]], [999, 1000, 1001]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 299], [\"deny\", 1], [\"allow\", 0], [\"deny\", 299]], [300, 600, 1000]], \"passed\": false}, {\"check\": \"random traffic\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 493], [\"deny\", 632], [\"deny\", 623], [\"deny\", 653], [\"deny\", 688], [\"deny\", 750], [\"deny\", 677], [\"deny\", 583], [\"allow\", 0]], [1776, 2570]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 306], [\"deny\", 175], [\"deny\", 129], [\"deny\", 28], [\"deny\", 17], [\"allow\", 0], [\"deny\", 81], [\"allow\", 0], [\"allow\", 0]], [1776, 2570]], \"passed\": false}, {\"check\": \"single slot\", \"actual\": [[[\"allow\", 0], [\"deny\", 100], [\"deny\", 100], [\"deny\", 100], [\"allow\", 0]], [251]], \"expected\": [[[\"allow\", 0], [\"deny\", 50], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.184,"exit_code":1,"observations":[{"actual":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",988]],[1000,1011,1012]],"check":"exact expiry boundary","expected":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",988]],[1000,1011]],"passed":false},{"actual":[[["allow",0],["allow",0],["deny",800],["deny",700],["deny",49],["deny",50]],[200,300,1051,1150]],"check":"denied requests not logged","expected":[[["allow",0],["allow",0],["deny",800],["deny",700],["allow",0],["allow",0]],[1051,1150]],"passed":false},{"actual":[[["allow",0],["allow",0],["deny",450],["deny",50],["deny",45],["deny",440]],[900,905,960]],"check":"late timestamp uses monotonic now","expected":[[["allow",0],["allow",0],["deny",450],["allow",0],["deny",45],["allow",0]],[900,960]],"passed":false},{"actual":[[["allow",0],["allow",0],["allow",0],["deny",299],["deny",1],["deny",300],["deny",299]],[300,600,701,999,1000,1001]],"check":"retry after oldest expires","expected":[[["allow",0],["allow",0],["allow",0],["deny",299],["deny",1],["allow",0],["deny",299]],[300,600,1000]],"passed":false},{"actual":[[["allow",0],["allow",0],["allow",0],["deny",306],["deny",175],["deny",129],["deny",28],["deny",17],["deny",165],["deny",81],["deny",218],["allow",0]],[1776,2570]],"check":"random traffic","expected":[[["allow",0],["allow",0],["allow",0],["deny",306],["deny",175],["deny",129],["deny",28],["deny",17],["allow",0],["deny",81],["allow",0],["allow",0]],[1776,2570]],"passed":false},{"actual":[[["allow",0],["deny",50],["deny",50],["deny",49],["allow",0]],[251]],"check":"single slot","expected":[[["allow",0],["deny",50],["allow",0],["deny",49],["allow",0]],[251]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exact expiry boundary\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 988]], [1000, 1011, 1012]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 988]], [1000, 1011]], \"passed\": false}, {\"check\": \"denied requests not logged\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 800], [\"deny\", 700], [\"deny\", 49], [\"deny\", 50]], [200, 300, 1051, 1150]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 800], [\"deny\", 700], [\"allow\", 0], [\"allow\", 0]], [1051, 1150]], \"passed\": false}, {\"check\": \"late timestamp uses monotonic now\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 450], [\"deny\", 50], [\"deny\", 45], [\"deny\", 440]], [900, 905, 960]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 450], [\"allow\", 0], [\"deny\", 45], [\"allow\", 0]], [900, 960]], \"passed\": false}, {\"check\": \"retry after oldest expires\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 299], [\"deny\", 1], [\"deny\", 300], [\"deny\", 299]], [300, 600, 701, 999, 1000, 1001]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 299], [\"deny\", 1], [\"allow\", 0], [\"deny\", 299]], [300, 600, 1000]], \"passed\": false}, {\"check\": \"random traffic\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 306], [\"deny\", 175], [\"deny\", 129], [\"deny\", 28], [\"deny\", 17], [\"deny\", 165], [\"deny\", 81], [\"deny\", 218], [\"allow\", 0]], [1776, 2570]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 306], [\"deny\", 175], [\"deny\", 129], [\"deny\", 28], [\"deny\", 17], [\"allow\", 0], [\"deny\", 81], [\"allow\", 0], [\"allow\", 0]], [1776, 2570]], \"passed\": false}, {\"check\": \"single slot\", \"actual\": [[[\"allow\", 0], [\"deny\", 50], [\"deny\", 50], [\"deny\", 49], [\"allow\", 0]], [251]], \"expected\": [[[\"allow\", 0], [\"deny\", 50], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.02,"exit_code":0,"observations":[{"actual":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",988]],[1000,1011]],"check":"exact expiry boundary","expected":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",988]],[1000,1011]],"passed":true},{"actual":[[["allow",0],["allow",0],["deny",800],["deny",700],["allow",0],["allow",0]],[1051,1150]],"check":"denied requests not logged","expected":[[["allow",0],["allow",0],["deny",800],["deny",700],["allow",0],["allow",0]],[1051,1150]],"passed":true},{"actual":[[["allow",0],["allow",0],["deny",450],["allow",0],["deny",45],["allow",0]],[900,960]],"check":"late timestamp uses monotonic now","expected":[[["allow",0],["allow",0],["deny",450],["allow",0],["deny",45],["allow",0]],[900,960]],"passed":true},{"actual":[[["allow",0],["allow",0],["allow",0],["deny",299],["deny",1],["allow",0],["deny",299]],[300,600,1000]],"check":"retry after oldest expires","expected":[[["allow",0],["allow",0],["allow",0],["deny",299],["deny",1],["allow",0],["deny",299]],[300,600,1000]],"passed":true},{"actual":[[["allow",0],["allow",0],["allow",0],["deny",306],["deny",175],["deny",129],["deny",28],["deny",17],["allow",0],["deny",81],["allow",0],["allow",0]],[1776,2570]],"check":"random traffic","expected":[[["allow",0],["allow",0],["allow",0],["deny",306],["deny",175],["deny",129],["deny",28],["deny",17],["allow",0],["deny",81],["allow",0],["allow",0]],[1776,2570]],"passed":true},{"actual":[[["allow",0],["deny",50],["allow",0],["deny",49],["allow",0]],[251]],"check":"single slot","expected":[[["allow",0],["deny",50],["allow",0],["deny",49],["allow",0]],[251]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exact expiry boundary\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 988]], [1000, 1011]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 988]], [1000, 1011]], \"passed\": true}, {\"check\": \"denied requests not logged\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 800], [\"deny\", 700], [\"allow\", 0], [\"allow\", 0]], [1051, 1150]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 800], [\"deny\", 700], [\"allow\", 0], [\"allow\", 0]], [1051, 1150]], \"passed\": true}, {\"check\": \"late timestamp uses monotonic now\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 450], [\"allow\", 0], [\"deny\", 45], [\"allow\", 0]], [900, 960]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"deny\", 450], [\"allow\", 0], [\"deny\", 45], [\"allow\", 0]], [900, 960]], \"passed\": true}, {\"check\": \"retry after oldest expires\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 299], [\"deny\", 1], [\"allow\", 0], [\"deny\", 299]], [300, 600, 1000]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 299], [\"deny\", 1], [\"allow\", 0], [\"deny\", 299]], [300, 600, 1000]], \"passed\": true}, {\"check\": \"random traffic\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 306], [\"deny\", 175], [\"deny\", 129], [\"deny\", 28], [\"deny\", 17], [\"allow\", 0], [\"deny\", 81], [\"allow\", 0], [\"allow\", 0]], [1776, 2570]], \"expected\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 306], [\"deny\", 175], [\"deny\", 129], [\"deny\", 28], [\"deny\", 17], [\"allow\", 0], [\"deny\", 81], [\"allow\", 0], [\"allow\", 0]], [1776, 2570]], \"passed\": true}, {\"check\": \"single slot\", \"actual\": [[[\"allow\", 0], [\"deny\", 50], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"expected\": [[[\"allow\", 0], [\"deny\", 50], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}