FA-73511 / Rate limiter algorithms / Open access
Leaky bucket queue shaper: request departing now counted as queued · case 01
A request arriving at the same instant another departs is dropped.
ROOT CAUSE
Queued requests are those departing at or after the arrival instead of strictly after.
VERIFIED REPAIR
Count only departures strictly after the arrival.
Unsuccessful approach: Counting every accepted request ever fills the queue permanently.
Case contract
Input {queue_cap, interval_ms, requests [t]} with nondecreasing t. Accepted requests depart one per interval: departure = max(arrival, next_free) and next_free = departure + interval. A request is accepted only while fewer than queue_cap accepted requests have a departure strictly after its arrival; otherwise it is "dropped" and changes nothing. Return each departure time or "dropped".
Why this case matters
Traffic shapers smooth bursts into a steady departure rate; the queue bound and slot arithmetic decide latency and drop behaviour.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
qcap = x['queue_cap']
I = x['interval_ms']
next_free = 0
deps = []
out = []
for t in x['requests']:
waiting = sum(1 for d in deps if d >= t)
if waiting < qcap:
dep = max(t, next_free)
next_free = dep + I
deps.append(dep)
out.append(dep)
else:
out.append('dropped')
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 151, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1001, 2000, 2010, 5000]},
[1001, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 201]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 251, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [301, 310, 320, 330]},
[301, 401, 501, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [47, 86, 231, 429, 438, 486, 490, 650, 653, 673, 689, 793]},
[47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 152, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1002, 2000, 2010, 5000]},
[1002, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 202]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 252, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [302, 310, 320, 330]},
[302, 402, 502, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [130, 453, 459, 485, 554, 565, 613, 658, 676, 724, 814, 858]},
[130, 453, 533, 613, 693, 'dropped', 773, 'dropped', 'dropped', 853, 933, 1013]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 153, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1003, 2000, 2010, 5000]},
[1003, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 203]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 253, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [303, 310, 320, 330]},
[303, 403, 503, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [1, 48, 98, 246, 258, 261, 333, 405, 500, 646, 651, 768]},
[1, 81, 161, 246, 326, 406, 486, 'dropped', 566, 646, 726, 806]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 154, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1004, 2000, 2010, 5000]},
[1004, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 204]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 254, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [304, 310, 320, 330]},
[304, 404, 504, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [6, 206, 394, 410, 422, 469, 663, 677, 720, 726, 732, 943]},
[6, 206, 394, 474, 554, 'dropped', 663, 743, 823, 'dropped', 'dropped', 943]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 155, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1005, 2000, 2010, 5000]},
[1005, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 205]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 255, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [305, 310, 320, 330]},
[305, 405, 505, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [220, 273, 276, 356, 387, 434, 571, 612, 618, 647, 669, 777]},
[220, 300, 380, 460, 540, 'dropped', 620, 700, 'dropped', 780, 'dropped', 860]]]]
for label, args, expected in cases[N - 1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| burst queues then drops | [0, 100, 'dropped', 'dropped', 200, 400] | [0, 100, 200, 'dropped', 300, 400] | Failed |
| idle line departs immediately | [1001, 2000, 2050, 5000] | [1001, 2000, 2050, 5000] | Passed |
| departure instant is not waiting | [0, 'dropped', 100, 'dropped', 201] | [0, 100, 200, 'dropped', 300] | Failed |
| dropped requests do not reserve slots | [0, 200, 'dropped', 'dropped', 400, 'dropped'] | [0, 200, 'dropped', 'dropped', 400, 'dropped'] | Passed |
| first request late | [301, 401, 501, 'dropped'] | [301, 401, 501, 'dropped'] | Passed |
| random arrivals | [47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909] | [47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909] | Passed |
SHA-256 / d9972d6c000103aeb2736f18a1e00ff01ccbcf81e8ee7bf53f800c00adde9fa5
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
qcap = x['queue_cap']
I = x['interval_ms']
next_free = 0
deps = []
out = []
for t in x['requests']:
waiting = len(deps)
if waiting < qcap:
dep = max(t, next_free)
next_free = dep + I
deps.append(dep)
out.append(dep)
else:
out.append('dropped')
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 151, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1001, 2000, 2010, 5000]},
[1001, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 201]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 251, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [301, 310, 320, 330]},
[301, 401, 501, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [47, 86, 231, 429, 438, 486, 490, 650, 653, 673, 689, 793]},
[47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 152, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1002, 2000, 2010, 5000]},
[1002, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 202]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 252, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [302, 310, 320, 330]},
[302, 402, 502, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [130, 453, 459, 485, 554, 565, 613, 658, 676, 724, 814, 858]},
[130, 453, 533, 613, 693, 'dropped', 773, 'dropped', 'dropped', 853, 933, 1013]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 153, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1003, 2000, 2010, 5000]},
[1003, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 203]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 253, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [303, 310, 320, 330]},
[303, 403, 503, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [1, 48, 98, 246, 258, 261, 333, 405, 500, 646, 651, 768]},
[1, 81, 161, 246, 326, 406, 486, 'dropped', 566, 646, 726, 806]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 154, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1004, 2000, 2010, 5000]},
[1004, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 204]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 254, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [304, 310, 320, 330]},
[304, 404, 504, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [6, 206, 394, 410, 422, 469, 663, 677, 720, 726, 732, 943]},
[6, 206, 394, 474, 554, 'dropped', 663, 743, 823, 'dropped', 'dropped', 943]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 155, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1005, 2000, 2010, 5000]},
[1005, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 205]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 255, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [305, 310, 320, 330]},
[305, 405, 505, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [220, 273, 276, 356, 387, 434, 571, 612, 618, 647, 669, 777]},
[220, 300, 380, 460, 540, 'dropped', 620, 700, 'dropped', 780, 'dropped', 860]]]]
for label, args, expected in cases[N - 1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| burst queues then drops | [0, 100, 'dropped', 'dropped', 'dropped', 'dropped'] | [0, 100, 200, 'dropped', 300, 400] | Failed |
| idle line departs immediately | [1001, 2000, 2050, 'dropped'] | [1001, 2000, 2050, 5000] | Failed |
| departure instant is not waiting | [0, 'dropped', 'dropped', 'dropped', 'dropped'] | [0, 100, 200, 'dropped', 300] | Failed |
| dropped requests do not reserve slots | [0, 'dropped', 'dropped', 'dropped', 'dropped', 'dropped'] | [0, 200, 'dropped', 'dropped', 400, 'dropped'] | Failed |
| first request late | [301, 401, 'dropped', 'dropped'] | [301, 401, 501, 'dropped'] | Failed |
| random arrivals | [47, 127, 'dropped', 'dropped', 'dropped', 'dropped', 'dropped', 'dropped', 'dropped', 'dropped', 'dropped', 'dropped'] | [47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909] | Failed |
SHA-256 / 9b5de2330d5f89d45c3f3557bbde2a2280fa25485c2dcf66d81c841c76325653
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
qcap = x['queue_cap']
I = x['interval_ms']
next_free = 0
deps = []
out = []
for t in x['requests']:
waiting = sum(1 for d in deps if d > t)
if waiting < qcap:
dep = max(t, next_free)
next_free = dep + I
deps.append(dep)
out.append(dep)
else:
out.append('dropped')
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 151, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1001, 2000, 2010, 5000]},
[1001, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 201]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 251, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [301, 310, 320, 330]},
[301, 401, 501, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [47, 86, 231, 429, 438, 486, 490, 650, 653, 673, 689, 793]},
[47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 152, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1002, 2000, 2010, 5000]},
[1002, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 202]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 252, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [302, 310, 320, 330]},
[302, 402, 502, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [130, 453, 459, 485, 554, 565, 613, 658, 676, 724, 814, 858]},
[130, 453, 533, 613, 693, 'dropped', 773, 'dropped', 'dropped', 853, 933, 1013]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 153, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1003, 2000, 2010, 5000]},
[1003, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 203]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 253, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [303, 310, 320, 330]},
[303, 403, 503, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [1, 48, 98, 246, 258, 261, 333, 405, 500, 646, 651, 768]},
[1, 81, 161, 246, 326, 406, 486, 'dropped', 566, 646, 726, 806]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 154, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1004, 2000, 2010, 5000]},
[1004, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 204]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 254, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [304, 310, 320, 330]},
[304, 404, 504, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [6, 206, 394, 410, 422, 469, 663, 677, 720, 726, 732, 943]},
[6, 206, 394, 474, 554, 'dropped', 663, 743, 823, 'dropped', 'dropped', 943]]],
[['burst queues then drops',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [0, 0, 0, 0, 155, 400]},
[0, 100, 200, 'dropped', 300, 400]],
['idle line departs immediately',
{'interval_ms': 50, 'queue_cap': 3, 'requests': [1005, 2000, 2010, 5000]},
[1005, 2000, 2050, 5000]],
['departure instant is not waiting',
{'interval_ms': 100, 'queue_cap': 1, 'requests': [0, 0, 100, 100, 205]},
[0, 100, 200, 'dropped', 300]],
['dropped requests do not reserve slots',
{'interval_ms': 200, 'queue_cap': 1, 'requests': [0, 10, 20, 30, 255, 260]},
[0, 200, 'dropped', 'dropped', 400, 'dropped']],
['first request late',
{'interval_ms': 100, 'queue_cap': 2, 'requests': [305, 310, 320, 330]},
[305, 405, 505, 'dropped']],
['random arrivals',
{'interval_ms': 80,
'queue_cap': 2,
'requests': [220, 273, 276, 356, 387, 434, 571, 612, 618, 647, 669, 777]},
[220, 300, 380, 460, 540, 'dropped', 620, 700, 'dropped', 780, 'dropped', 860]]]]
for label, args, expected in cases[N - 1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| burst queues then drops | [0, 100, 200, 'dropped', 300, 400] | [0, 100, 200, 'dropped', 300, 400] | Passed |
| idle line departs immediately | [1001, 2000, 2050, 5000] | [1001, 2000, 2050, 5000] | Passed |
| departure instant is not waiting | [0, 100, 200, 'dropped', 300] | [0, 100, 200, 'dropped', 300] | Passed |
| dropped requests do not reserve slots | [0, 200, 'dropped', 'dropped', 400, 'dropped'] | [0, 200, 'dropped', 'dropped', 400, 'dropped'] | Passed |
| first request late | [301, 401, 501, 'dropped'] | [301, 401, 501, 'dropped'] | Passed |
| random arrivals | [47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909] | [47, 127, 231, 429, 509, 589, 'dropped', 669, 749, 829, 'dropped', 909] | Passed |
SHA-256 / 4d41e5838596ab313a672766ea364e21364c1b87a87dfeb3790d03939fd0fa3f
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:48:48.176821+00:00.
Case digest / 48f666ae3a7650842226b826b1a392d54a824b5c6c76ca1314fd7ac8a119b28c