{"abstract":"The advertised concurrency exceeds the fractional limit.","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].","evaluation_group":"w2-rate_limiter_algorithms-aimd-limit","failed_approach":"Ceiling over-reports every fractional limit.","family":"w2-rate_limiter_algorithms-aimd-limit-report-floor","id":"FA-73576","implementations":{"attempt":{"sha256":"a28cfa3e5a9e2bfd1be82cd0274e2971d8d3c1a28fed66671c81084b0e5cf51d","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":"f308aaa07b6132d91319c75296b38c0d430989b11260415eead740b526011565","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(round(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"},"fixed":{"sha256":"d1b5fec9294aa93ab248712334ae5a8b42c18650de1284eea8f8553934e939d5","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"}},"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-report-floor","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.","repair":"Report floor(limit).","root_cause":"The reported integer limit uses rounding instead of the floor.","sha256":"eefd74c57b5733e0889485d97de4900b82af191fba94770c6622897e2f13089c","title":"AIMD adaptive concurrency limit: reported limit rounded to nearest · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.011,"exit_code":1,"observations":[{"actual":[[5,5,5,5,6,6,6,6,6],5861],"check":"additive growth","expected":[[4,4,4,4,5,5,5,5,5],5861],"passed":false},{"actual":[[3,2,2,2,3],2500],"check":"halving to floor","expected":[[2,2,2,2,2],2500],"passed":false},{"actual":[[10,10,10,10,10,10,10,10,10,10,10],10000],"check":"ceiling","expected":[[9,9,9,9,9,9,9,9,9,10,10],10000],"passed":false},{"actual":[[8,9,9,5,5,5,5],4595],"check":"cooldown counts successes","expected":[[8,8,8,4,4,4,4],4595],"passed":false},{"actual":[[8,8,8,4,4,5],4250],"check":"cooldown counts losses","expected":[[8,8,8,4,4,4],4250],"passed":false},{"actual":[[3,3,4,2,3,3,2,3,3,2,3,3,3,2,3,3],2500],"check":"random signals","expected":[[3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2],2500],"passed":false},{"actual":[[8,4,4,5,3],2055],"check":"odd limit halves","expected":[[7,3,3,4,2],2055],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"additive growth\", \"actual\": [[5, 5, 5, 5, 6, 6, 6, 6, 6], 5861], \"expected\": [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861], \"passed\": false}, {\"check\": \"halving to floor\", \"actual\": [[3, 2, 2, 2, 3], 2500], \"expected\": [[2, 2, 2, 2, 2], 2500], \"passed\": false}, {\"check\": \"ceiling\", \"actual\": [[10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10], 10000], \"expected\": [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10000], \"passed\": false}, {\"check\": \"cooldown counts successes\", \"actual\": [[8, 9, 9, 5, 5, 5, 5], 4595], \"expected\": [[8, 8, 8, 4, 4, 4, 4], 4595], \"passed\": false}, {\"check\": \"cooldown counts losses\", \"actual\": [[8, 8, 8, 4, 4, 5], 4250], \"expected\": [[8, 8, 8, 4, 4, 4], 4250], \"passed\": false}, {\"check\": \"random signals\", \"actual\": [[3, 3, 4, 2, 3, 3, 2, 3, 3, 2, 3, 3, 3, 2, 3, 3], 2500], \"expected\": [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500], \"passed\": false}, {\"check\": \"odd limit halves\", \"actual\": [[8, 4, 4, 5, 3], 2055], \"expected\": [[7, 3, 3, 4, 2], 2055], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.544,"exit_code":1,"observations":[{"actual":[[4,4,5,5,5,5,6,6,6],5861],"check":"additive growth","expected":[[4,4,4,4,5,5,5,5,5],5861],"passed":false},{"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,10,10,10,10,10,10,10],10000],"check":"ceiling","expected":[[9,9,9,9,9,9,9,9,9,10,10],10000],"passed":false},{"actual":[[8,8,8,4,4,4,5],4595],"check":"cooldown counts successes","expected":[[8,8,8,4,4,4,4],4595],"passed":false},{"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,3,2,2,3,2,2,2,3,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":false},{"actual":[[7,4,4,4,2],2055],"check":"odd limit halves","expected":[[7,3,3,4,2],2055],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"additive growth\", \"actual\": [[4, 4, 5, 5, 5, 5, 6, 6, 6], 5861], \"expected\": [[4, 4, 4, 4, 5, 5, 5, 5, 5], 5861], \"passed\": false}, {\"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, 10, 10, 10, 10, 10, 10, 10], 10000], \"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, 5], 4595], \"expected\": [[8, 8, 8, 4, 4, 4, 4], 4595], \"passed\": false}, {\"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, 3, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2], 2500], \"expected\": [[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 2500], \"passed\": false}, {\"check\": \"odd limit halves\", \"actual\": [[7, 4, 4, 4, 2], 2055], \"expected\": [[7, 3, 3, 4, 2], 2055], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.307,"exit_code":0,"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],10000],"check":"ceiling","expected":[[9,9,9,9,9,9,9,9,9,10,10],10000],"passed":true},{"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":true,"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], 10000], \"expected\": [[9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10], 10000], \"passed\": true}, {\"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\": true}\n"}},"verified":true,"visibility":"public"}