FAILURE MAP
← Case archive

FA-73641 / Rate limiter algorithms / Open access

Daily quota reset at local midnight: usage resets at UTC midnight · case 01

Usage resets at UTC midnight while the advertised reset time is local midnight.

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

ROOT CAUSE

Day rollover is computed from the UTC day even though reset times use the local day.

VERIFIED REPAIR

Roll usage over when the local day changes.

Unsuccessful approach: Only rolling over during the first local hour misses days whose first request comes later.

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 t // 86400 != day:
            day = t // 86400
            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 fixtureActualExpectedOutcome
east of UTC rollover[['allow', 1, 1699912800], ['allow', 0, 1699912800], ['deny', 0, 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], ['deny', 0, 1700024400], ['deny', 0, 1700024400]][['allow', 0, 1699938000], ['deny', 0, 1699938000], ['allow', 1, 1700024400], ['allow', 0, 1700024400]]Failed
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], ['allow', 0, 1699986600], ['deny', 0, 1700073000]][['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]Failed
several days[['allow', 1, 1699923600], ['allow', 0, 1700010000], ['allow', 1, 1700010000], ['allow', 0, 1700096400], ['allow', 1, 1700096400], ['allow', 0, 1700182800]][['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]]Failed
exact quota[['allow', 0, 1700002800], ['deny', 0, 1700002800]][['allow', 0, 1700002800], ['deny', 0, 1700002800]]Passed

SHA-256 / 9d3ab0e1ec758d9d6e88d5348ed4a2dd67210e4caa31bc2c8947ea4befcad295

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 and (t + off) % 86400 < 3600:
            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 fixtureActualExpectedOutcome
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', 0, 1700010000], ['deny', 0, 1700010000], ['deny', 0, 1700096400], ['deny', 0, 1700096400], ['deny', 0, 1700182800]][['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]]Failed
exact quota[['allow', 0, 1700002800], ['deny', 0, 1700002800]][['allow', 0, 1700002800], ['deny', 0, 1700002800]]Passed

SHA-256 / 07d9865841fafbe4d9a3cbf72037a30be2c420840eec6e0c48117e39118eac7e

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 fixtureActualExpectedOutcome
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.427352+00:00.

Case digest / c2893f71e00ee4e941da7a7c7a7fb6c9c14e751c79c19ebb207c85f0ca38a5a2