{"abstract":"The limit grows past the configured maximum.","category":"Rate limiter algorithms","checks":7,"contract":"Input {initial, min, max, cooldown, events}. The limit is kept in fixed-point thousandths (integer). \"ok\" adds floor(10^6 / limit_thousandths), i.e. 1/limit, capped at max, and counts down an active cooldown. \"drop\" or \"timeout\" halves the limit (floor), floored at min, and starts a cooldown of the given number of events when no cooldown is active; during a cooldown a loss only counts it down. After each event report floor(limit). Return [reported whole limits, final limit in thousandths].","contract_signature":"x","evaluation_group":"w2-rate_limiter_algorithms-aimd-limit","failed_approach":"Clamping before the increase still lets the limit exceed max.","family":"w2-rate_limiter_algorithms-aimd-limit-increase-ceiling","id":"FA-73561","implementations":{"attempt":{"sha256":"f3b152b9e4f5893a8cf3243f9fdc9fdcb5f8e3ad2f68b726b5a9cc5f10395541","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    lim = x['initial'] * 1000\n    lo, hi = x['min'] * 1000, x['max'] * 1000\n    cool = 0\n    out = []\n    for ev in x['events']:\n        if ev == 'ok':\n            lim = min(hi, lim) + 1000000 // lim\n            if cool:\n                cool -= 1\n        elif cool == 0:\n            lim = max(lo, lim // 2)\n            cool = x['cooldown']\n        else:\n            cool -= 1\n        out.append(lim // 1000)\n    return [out, lim]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2], 2500]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4], 4595]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4], 4250]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['timeout',\n               'timeout',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'drop',\n               'ok',\n               'timeout',\n               'ok',\n               'drop'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok', 'drop'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4, 2], 2055]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6], 6031]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2], 2900]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4], 4812]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4], 4485]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['timeout',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'drop',\n               'timeout',\n               'drop',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'drop',\n               'ok',\n               'ok'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3], 3244]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4], 4110]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6], 6196]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2, 3], 3244]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 5], 5019]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4], 4707]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['ok',\n               'drop',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'drop'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[6, 3, 3, 3, 3, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2], 2305]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok', 'drop'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4, 2], 2055]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6], 6357]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2, 3, 3], 3552]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 5, 5], 5218]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 4], 4919]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['timeout',\n               'ok',\n               'drop',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'drop'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 2], 2496]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4], 4110]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6], 6514]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2, 3, 3, 3], 3833]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 5, 5, 5], 5409]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 4, 5], 5122]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['ok',\n               'timeout',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'drop',\n               'ok',\n               'timeout',\n               'ok'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[6, 3, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2], 2900]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok', 'drop'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4, 2], 2055]]]]\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":"ce1e22c44600e3033fa7db5d6460370ab6d72783f918785c51613009fd180bd0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    lim = x['initial'] * 1000\n    lo, hi = x['min'] * 1000, x['max'] * 1000\n    cool = 0\n    out = []\n    for ev in x['events']:\n        if ev == 'ok':\n            lim = lim + 1000000 // lim\n            if cool:\n                cool -= 1\n        elif cool == 0:\n            lim = max(lo, lim // 2)\n            cool = x['cooldown']\n        else:\n            cool -= 1\n        out.append(lim // 1000)\n    return [out, lim]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2], 2500]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4], 4595]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4], 4250]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['timeout',\n               'timeout',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'drop',\n               'ok',\n               'timeout',\n               'ok',\n               'drop'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok', 'drop'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4, 2], 2055]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6], 6031]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2], 2900]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4], 4812]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4], 4485]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['timeout',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'drop',\n               'timeout',\n               'drop',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'drop',\n               'ok',\n               'ok'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3], 3244]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4], 4110]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6], 6196]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2, 3], 3244]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 5], 5019]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4], 4707]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['ok',\n               'drop',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'drop'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[6, 3, 3, 3, 3, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2], 2305]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok', 'drop'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4, 2], 2055]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6], 6357]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2, 3, 3], 3552]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 5, 5], 5218]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 4], 4919]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['timeout',\n               'ok',\n               'drop',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'drop'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 2], 2496]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4], 4110]]],\n [['additive growth',\n   {'cooldown': 2,\n    'events': ['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 4,\n    'max': 20,\n    'min': 1},\n   [[4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6], 6514]],\n  ['halving to floor',\n   {'cooldown': 0,\n    'events': ['drop', 'drop', 'timeout', 'drop', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 5,\n    'max': 20,\n    'min': 2},\n   [[2, 2, 2, 2, 2, 2, 3, 3, 3], 3833]],\n  ['ceiling',\n   {'cooldown': 1,\n    'events': ['ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok'],\n    'initial': 9,\n    'max': 10,\n    'min': 1},\n   [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10], 10000]],\n  ['cooldown counts successes',\n   {'cooldown': 2,\n    'events': ['drop', 'ok', 'ok', 'drop', 'ok', 'drop', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 5, 5, 5], 5409]],\n  ['cooldown counts losses',\n   {'cooldown': 2,\n    'events': ['drop', 'drop', 'drop', 'drop', 'timeout', 'ok', 'ok', 'ok', 'ok', 'ok'],\n    'initial': 16,\n    'max': 32,\n    'min': 1},\n   [[8, 8, 8, 4, 4, 4, 4, 4, 4, 5], 5122]],\n  ['random signals',\n   {'cooldown': 2,\n    'events': ['ok',\n               'timeout',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'timeout',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'ok',\n               'drop',\n               'ok',\n               'timeout',\n               'ok'],\n    'initial': 6,\n    'max': 12,\n    'min': 2},\n   [[6, 3, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2], 2900]],\n  ['odd limit halves',\n   {'cooldown': 0, 'events': ['ok', 'drop', 'ok', 'ok', 'drop'], 'initial': 7, 'max': 10, 'min': 1},\n   [[7, 3, 3, 4, 2], 2055]]]]\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-aimd-limit-increase-ceiling","generated_at":"2026-09-29T14:48:48.797631+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Adaptive concurrency limiters (AIMD, as in TCP congestion control) protect overloaded backends; step sizes, bounds and cooldowns decide whether the limit converges or oscillates.","root_cause":"The additive increase is applied without clamping to max.","sha256":"a373f4ee9edb970f49ce37884770bef64bc84dc63e7c6c7d9ddf3160206d0f8a","title":"AIMD adaptive concurrency limit: increase not capped at the maximum · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.864,"exit_code":1,"observations":[{"actual":[[4,4,4,4,5,5,5,5,5],5861],"check":"additive growth","expected":[[4,4,4,4,5,5,5,5,5],5861],"passed":true},{"actual":[[2,2,2,2,2],2500],"check":"halving to floor","expected":[[2,2,2,2,2],2500],"passed":true},{"actual":[[9,9,9,9,9,9,9,9,9,10,10],10099],"check":"ceiling","expected":[[9,9,9,9,9,9,9,9,9,10,10],10000],"passed":false},{"actual":[[8,8,8,4,4,4,4],4595],"check":"cooldown counts successes","expected":[[8,8,8,4,4,4,4],4595],"passed":true},{"actual":[[8,8,8,4,4,4],4250],"check":"cooldown counts losses","expected":[[8,8,8,4,4,4],4250],"passed":true},{"actual":[[3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2],2500],"check":"random signals","expected":[[3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2],2500],"passed":true},{"actual":[[7,3,3,4,2],2055],"check":"odd limit halves","expected":[[7,3,3,4,2],2055],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"additive growth\", \"actual\": [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861], \"expected\": [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861], \"passed\": true}, {\"check\": \"halving to floor\", \"actual\": [[2, 2, 2, 2, 2], 2500], \"expected\": [[2, 2, 2, 2, 2], 2500], \"passed\": true}, {\"check\": \"ceiling\", \"actual\": [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10099], \"expected\": [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10000], \"passed\": false}, {\"check\": \"cooldown counts successes\", \"actual\": [[8, 8, 8, 4, 4, 4, 4], 4595], \"expected\": [[8, 8, 8, 4, 4, 4, 4], 4595], \"passed\": true}, {\"check\": \"cooldown counts losses\", \"actual\": [[8, 8, 8, 4, 4, 4], 4250], \"expected\": [[8, 8, 8, 4, 4, 4], 4250], \"passed\": true}, {\"check\": \"random signals\", \"actual\": [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500], \"expected\": [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500], \"passed\": true}, {\"check\": \"odd limit halves\", \"actual\": [[7, 3, 3, 4, 2], 2055], \"expected\": [[7, 3, 3, 4, 2], 2055], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.976,"exit_code":1,"observations":[{"actual":[[4,4,4,4,5,5,5,5,5],5861],"check":"additive growth","expected":[[4,4,4,4,5,5,5,5,5],5861],"passed":true},{"actual":[[2,2,2,2,2],2500],"check":"halving to floor","expected":[[2,2,2,2,2],2500],"passed":true},{"actual":[[9,9,9,9,9,9,9,9,9,10,10],10149],"check":"ceiling","expected":[[9,9,9,9,9,9,9,9,9,10,10],10000],"passed":false},{"actual":[[8,8,8,4,4,4,4],4595],"check":"cooldown counts successes","expected":[[8,8,8,4,4,4,4],4595],"passed":true},{"actual":[[8,8,8,4,4,4],4250],"check":"cooldown counts losses","expected":[[8,8,8,4,4,4],4250],"passed":true},{"actual":[[3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2],2500],"check":"random signals","expected":[[3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2],2500],"passed":true},{"actual":[[7,3,3,4,2],2055],"check":"odd limit halves","expected":[[7,3,3,4,2],2055],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"additive growth\", \"actual\": [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861], \"expected\": [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861], \"passed\": true}, {\"check\": \"halving to floor\", \"actual\": [[2, 2, 2, 2, 2], 2500], \"expected\": [[2, 2, 2, 2, 2], 2500], \"passed\": true}, {\"check\": \"ceiling\", \"actual\": [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10149], \"expected\": [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10000], \"passed\": false}, {\"check\": \"cooldown counts successes\", \"actual\": [[8, 8, 8, 4, 4, 4, 4], 4595], \"expected\": [[8, 8, 8, 4, 4, 4, 4], 4595], \"passed\": true}, {\"check\": \"cooldown counts losses\", \"actual\": [[8, 8, 8, 4, 4, 4], 4250], \"expected\": [[8, 8, 8, 4, 4, 4], 4250], \"passed\": true}, {\"check\": \"random signals\", \"actual\": [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500], \"expected\": [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500], \"passed\": true}, {\"check\": \"odd limit halves\", \"actual\": [[7, 3, 3, 4, 2], 2055], \"expected\": [[7, 3, 3, 4, 2], 2055], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}