FA-73636 / Rate limiter algorithms / Open access
Daily quota reset at local midnight: denied request burns the remaining quota · case 01
A request slightly too large for the remaining quota wipes out the rest of the day.
ROOT CAUSE
The deny branch consumes whatever quota remained.
VERIFIED REPAIR
Deny without consuming when the whole cost does not fit.
Unsuccessful approach: Admitting whenever any quota remains lets a single large request overdraw the day.
Case contract
Input {quota, utc_offset_min, requests [[epoch_s, cost]]} with nondecreasing times. The quota day is floor((t + offset)/86400) with offset = utc_offset_min*60, so days roll over at local midnight. A new day resets usage. A request is allowed only if the whole cost fits (used + cost <= quota); a denied request consumes nothing. Report [decision, remaining, reset_at] where reset_at is the UTC epoch of the next local midnight, (day + 1)*86400 - offset.
Why this case matters
Daily API quotas are sold per customer timezone; offset, rollover and partial-consumption mistakes reset quotas at the wrong hour or silently burn them.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
Q = x['quota']
off = x['utc_offset_min'] * 60
day = None
used = 0
out = []
for t, cost in x['requests']:
d = (t + off) // 86400
if d != day:
day = d
used = 0
reset_at = (d + 1) * 86400 - off
if used + cost <= Q:
used += cost
out.append(['allow', Q - used, reset_at])
else:
used = Q
out.append(['deny', 0, reset_at])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912901, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938001, 1], [1699938002, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920031, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920101, 1], [1699986601, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920001, 1],
[1699963201, 1],
[1700006401, 1],
[1700049601, 1],
[1700092801, 1],
[1700136001, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925002, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912902, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938002, 1], [1699938003, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920032, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920102, 1], [1699986602, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920002, 1],
[1699963202, 1],
[1700006402, 1],
[1700049602, 1],
[1700092802, 1],
[1700136002, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925003, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912903, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938003, 1], [1699938004, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920033, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920103, 1], [1699986603, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920003, 1],
[1699963203, 1],
[1700006403, 1],
[1700049603, 1],
[1700092803, 1],
[1700136003, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925004, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912904, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938004, 1], [1699938005, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920034, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920104, 1], [1699986604, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920004, 1],
[1699963204, 1],
[1700006404, 1],
[1700049604, 1],
[1700092804, 1],
[1700136004, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925005, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912905, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938005, 1], [1699938006, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920035, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920105, 1], [1699986605, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920005, 1],
[1699963205, 1],
[1700006405, 1],
[1700049605, 1],
[1700092805, 1],
[1700136005, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925006, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]]]
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 |
|---|---|---|---|
| east of UTC rollover | [['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['deny', 0, 1699999200]] | [['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['deny', 2, 1699999200]] | Failed |
| west of UTC rollover | [['allow', 0, 1699938000], ['deny', 0, 1699938000], ['allow', 1, 1700024400], ['allow', 0, 1700024400]] | [['allow', 0, 1699938000], ['deny', 0, 1699938000], ['allow', 1, 1700024400], ['allow', 0, 1700024400]] | Passed |
| large cost denied whole | [['allow', 2, 1700006400], ['deny', 0, 1700006400], ['deny', 0, 1700006400], ['deny', 0, 1700006400]] | [['allow', 2, 1700006400], ['deny', 2, 1700006400], ['allow', 0, 1700006400], ['deny', 0, 1700006400]] | Failed |
| utc midnight is not local midnight | [['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]] | [['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]] | Passed |
| several days | [['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]] | [['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]] | Passed |
| exact quota | [['allow', 0, 1700002800], ['deny', 0, 1700002800]] | [['allow', 0, 1700002800], ['deny', 0, 1700002800]] | Passed |
SHA-256 / cc10b2949b6e6d1c93190f78f68122b9f20438c319143cb89960703b59944494
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
Q = x['quota']
off = x['utc_offset_min'] * 60
day = None
used = 0
out = []
for t, cost in x['requests']:
d = (t + off) // 86400
if d != day:
day = d
used = 0
reset_at = (d + 1) * 86400 - off
if used < Q:
used += cost
out.append(['allow', max(0, Q - used), reset_at])
else:
out.append(['deny', Q - used, reset_at])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912901, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938001, 1], [1699938002, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920031, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920101, 1], [1699986601, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920001, 1],
[1699963201, 1],
[1700006401, 1],
[1700049601, 1],
[1700092801, 1],
[1700136001, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925002, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912902, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938002, 1], [1699938003, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920032, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920102, 1], [1699986602, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920002, 1],
[1699963202, 1],
[1700006402, 1],
[1700049602, 1],
[1700092802, 1],
[1700136002, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925003, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912903, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938003, 1], [1699938004, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920033, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920103, 1], [1699986603, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920003, 1],
[1699963203, 1],
[1700006403, 1],
[1700049603, 1],
[1700092803, 1],
[1700136003, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925004, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912904, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938004, 1], [1699938005, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920034, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920104, 1], [1699986604, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920004, 1],
[1699963204, 1],
[1700006404, 1],
[1700049604, 1],
[1700092804, 1],
[1700136004, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925005, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912905, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938005, 1], [1699938006, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920035, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920105, 1], [1699986605, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920005, 1],
[1699963205, 1],
[1700006405, 1],
[1700049605, 1],
[1700092805, 1],
[1700136005, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925006, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]]]
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 |
|---|---|---|---|
| east of UTC rollover | [['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['allow', 0, 1699999200]] | [['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['deny', 2, 1699999200]] | Failed |
| west of UTC rollover | [['allow', 0, 1699938000], ['deny', 0, 1699938000], ['allow', 1, 1700024400], ['allow', 0, 1700024400]] | [['allow', 0, 1699938000], ['deny', 0, 1699938000], ['allow', 1, 1700024400], ['allow', 0, 1700024400]] | Passed |
| large cost denied whole | [['allow', 2, 1700006400], ['allow', 0, 1700006400], ['deny', -1, 1700006400], ['deny', -1, 1700006400]] | [['allow', 2, 1700006400], ['deny', 2, 1700006400], ['allow', 0, 1700006400], ['deny', 0, 1700006400]] | Failed |
| utc midnight is not local midnight | [['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]] | [['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]] | Passed |
| several days | [['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]] | [['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]] | Passed |
| exact quota | [['allow', 0, 1700002800], ['deny', 0, 1700002800]] | [['allow', 0, 1700002800], ['deny', 0, 1700002800]] | Passed |
SHA-256 / 5aff950bc836cb18199f54ad58ff35d813d32b675252fcc2e8b07e69e4ceafcc
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
Q = x['quota']
off = x['utc_offset_min'] * 60
day = None
used = 0
out = []
for t, cost in x['requests']:
d = (t + off) // 86400
if d != day:
day = d
used = 0
reset_at = (d + 1) * 86400 - off
if used + cost <= Q:
used += cost
out.append(['allow', Q - used, reset_at])
else:
out.append(['deny', Q - used, reset_at])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912901, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938001, 1], [1699938002, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920031, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920101, 1], [1699986601, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920001, 1],
[1699963201, 1],
[1700006401, 1],
[1700049601, 1],
[1700092801, 1],
[1700136001, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925002, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912902, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938002, 1], [1699938003, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920032, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920102, 1], [1699986602, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920002, 1],
[1699963202, 1],
[1700006402, 1],
[1700049602, 1],
[1700092802, 1],
[1700136002, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925003, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912903, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938003, 1], [1699938004, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920033, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920103, 1], [1699986603, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920003, 1],
[1699963203, 1],
[1700006403, 1],
[1700049603, 1],
[1700092803, 1],
[1700136003, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925004, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912904, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938004, 1], [1699938005, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920034, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920104, 1], [1699986604, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920004, 1],
[1699963204, 1],
[1700006404, 1],
[1700049604, 1],
[1700092804, 1],
[1700136004, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925005, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]],
[['east of UTC rollover',
{'quota': 3,
'requests': [[1699912700, 2], [1699912700, 1], [1699912905, 1], [1699913000, 3]],
'utc_offset_min': 120},
[['allow', 1, 1699912800],
['allow', 0, 1699912800],
['allow', 2, 1699999200],
['deny', 2, 1699999200]]],
['west of UTC rollover',
{'quota': 2,
'requests': [[1699937000, 2], [1699937999, 1], [1699938005, 1], [1699938006, 1]],
'utc_offset_min': -300},
[['allow', 0, 1699938000],
['deny', 0, 1699938000],
['allow', 1, 1700024400],
['allow', 0, 1700024400]]],
['large cost denied whole',
{'quota': 5,
'requests': [[1699920010, 3], [1699920020, 3], [1699920035, 2], [1699920040, 1]],
'utc_offset_min': 0},
[['allow', 2, 1700006400],
['deny', 2, 1700006400],
['allow', 0, 1700006400],
['deny', 0, 1700006400]]],
['utc midnight is not local midnight',
{'quota': 1,
'requests': [[1699919900, 1], [1699920105, 1], [1699986605, 1]],
'utc_offset_min': 330},
[['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]],
['several days',
{'quota': 2,
'requests': [[1699920005, 1],
[1699963205, 1],
[1700006405, 1],
[1700049605, 1],
[1700092805, 1],
[1700136005, 1]],
'utc_offset_min': -60},
[['allow', 1, 1699923600],
['allow', 1, 1700010000],
['allow', 0, 1700010000],
['allow', 1, 1700096400],
['allow', 0, 1700096400],
['allow', 1, 1700182800]]],
['exact quota',
{'quota': 4, 'requests': [[1699925000, 4], [1699925006, 1]], 'utc_offset_min': 60},
[['allow', 0, 1700002800], ['deny', 0, 1700002800]]]]]
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 |
|---|---|---|---|
| east of UTC rollover | [['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['deny', 2, 1699999200]] | [['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['deny', 2, 1699999200]] | Passed |
| west of UTC rollover | [['allow', 0, 1699938000], ['deny', 0, 1699938000], ['allow', 1, 1700024400], ['allow', 0, 1700024400]] | [['allow', 0, 1699938000], ['deny', 0, 1699938000], ['allow', 1, 1700024400], ['allow', 0, 1700024400]] | Passed |
| large cost denied whole | [['allow', 2, 1700006400], ['deny', 2, 1700006400], ['allow', 0, 1700006400], ['deny', 0, 1700006400]] | [['allow', 2, 1700006400], ['deny', 2, 1700006400], ['allow', 0, 1700006400], ['deny', 0, 1700006400]] | Passed |
| utc midnight is not local midnight | [['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]] | [['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]] | Passed |
| several days | [['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]] | [['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]] | Passed |
| exact quota | [['allow', 0, 1700002800], ['deny', 0, 1700002800]] | [['allow', 0, 1700002800], ['deny', 0, 1700002800]] | Passed |
SHA-256 / 62c5e6b9caac99e3f02cf5bbed6b5fdce68b520c3c0afd356407b6461baa0b2c
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:49.427389+00:00.
Case digest / cba7d6c126fa967f233adbe38e15a983602f81a95b4f7d3ed2242431ad2ba116