FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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