{"abstract":"The retry hint is computed from the newest request instead of the oldest.","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":"Sorting in descending order keeps the newest entry at the front.","family":"w2-rate_limiter_algorithms-sliding-log-log-order","id":"FA-73456","implementations":{"attempt":{"sha256":"0ccf507ec4a220085ee91cbef5d299d6317a5fbb4f4e06b89f2ec0c3a36890c4","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.insert(0, now)\n            log.sort(reverse=True)\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"},"broken":{"sha256":"c9890948871f547f8774cd768ae5b81c761238cc4c38e661ec2f2d55ae6332cc","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.insert(0, 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"},"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-log-order","generated_at":"2026-09-29T14:48:47.721092+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":"Append admitted timestamps so the log stays oldest first.","root_cause":"Admitted timestamps are inserted at the front, so log[0] is the newest entry.","sha256":"616613aadf67818e00ca1223b6ba6fbda4404ea03d03c5afcb1c2922455c1694","title":"Sliding-window log limiter: newest entry stored at the front · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.648,"exit_code":1,"observations":[{"actual":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",999]],[1011,1000]],"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",800],["allow",0],["allow",0]],[1150,1051]],"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],["allow",0],["deny",495],["allow",0]],[960,900]],"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",899],["deny",601],["allow",0],["deny",999]],[1000,600,300]],"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",763],["deny",632],["deny",586],["deny",485],["deny",474],["allow",0],["deny",716],["allow",0],["allow",0]],[2570,1776]],"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],["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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exact expiry boundary\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 999]], [1011, 1000]], \"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\", 800], [\"allow\", 0], [\"allow\", 0]], [1150, 1051]], \"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], [\"allow\", 0], [\"deny\", 495], [\"allow\", 0]], [960, 900]], \"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\", 899], [\"deny\", 601], [\"allow\", 0], [\"deny\", 999]], [1000, 600, 300]], \"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\", 763], [\"deny\", 632], [\"deny\", 586], [\"deny\", 485], [\"deny\", 474], [\"allow\", 0], [\"deny\", 716], [\"allow\", 0], [\"allow\", 0]], [2570, 1776]], \"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], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"expected\": [[[\"allow\", 0], [\"deny\", 50], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.328,"exit_code":1,"observations":[{"actual":[[["allow",0],["allow",0],["allow",0],["allow",0],["deny",999]],[1011,1000]],"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",800],["allow",0],["allow",0]],[1150,1051]],"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],["allow",0],["deny",495],["allow",0]],[960,900]],"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",899],["deny",601],["allow",0],["deny",999]],[1000,600,300]],"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",763],["deny",632],["deny",586],["deny",485],["deny",474],["allow",0],["deny",716],["allow",0],["allow",0]],[2570,1776]],"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],["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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exact expiry boundary\", \"actual\": [[[\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"allow\", 0], [\"deny\", 999]], [1011, 1000]], \"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\", 800], [\"allow\", 0], [\"allow\", 0]], [1150, 1051]], \"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], [\"allow\", 0], [\"deny\", 495], [\"allow\", 0]], [960, 900]], \"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\", 899], [\"deny\", 601], [\"allow\", 0], [\"deny\", 999]], [1000, 600, 300]], \"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\", 763], [\"deny\", 632], [\"deny\", 586], [\"deny\", 485], [\"deny\", 474], [\"allow\", 0], [\"deny\", 716], [\"allow\", 0], [\"allow\", 0]], [2570, 1776]], \"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], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"expected\": [[[\"allow\", 0], [\"deny\", 50], [\"allow\", 0], [\"deny\", 49], [\"allow\", 0]], [251]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.783,"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"}