FAILURE MAP
← Case archive

FA-73626 / Rate limiter algorithms / Open access

Daily quota reset at local midnight: offset applied with the wrong sign · case 01

Quotas reset at the mirror-image hour: customers east of UTC reset in the afternoon.

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

ROOT CAUSE

The local day subtracts the UTC offset instead of adding it.

VERIFIED REPAIR

Add the offset to the UTC epoch before dividing into days.

Unsuccessful approach: Treating the offset minutes as hours shifts the rollover by sixty times the offset.

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:
            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, 1699912800], ['deny', 0, 1699912800]][['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['deny', 2, 1699999200]]Failed
west of UTC rollover[['allow', 0, 1700024400], ['deny', 0, 1700024400], ['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, 1699900200], ['deny', 0, 1699900200], ['allow', 0, 1699986600]][['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]Failed
several days[['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800], ['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 / b0b2c7ac0ff40023bf935f8336e3075f197ad15fa6092a03762ee06a2dc90834

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 + x['utc_offset_min'] * 3600) // 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, 1700344800], ['allow', 0, 1700344800], ['deny', 0, 1700344800], ['deny', 0, 1700344800]][['allow', 1, 1699912800], ['allow', 0, 1699912800], ['allow', 2, 1699999200], ['deny', 2, 1699999200]]Failed
west of UTC rollover[['allow', 0, 1698901200], ['deny', 0, 1698901200], ['deny', 0, 1698901200], ['deny', 0, 1698901200]][['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, 1701109800], ['deny', 0, 1701109800], ['allow', 0, 1701196200]][['allow', 0, 1699986600], ['deny', 0, 1699986600], ['allow', 0, 1700073000]]Failed
several days[['allow', 1, 1699750800], ['allow', 1, 1699837200], ['allow', 0, 1699837200], ['allow', 1, 1699923600], ['allow', 0, 1699923600], ['allow', 1, 1700010000]][['allow', 1, 1699923600], ['allow', 1, 1700010000], ['allow', 0, 1700010000], ['allow', 1, 1700096400], ['allow', 0, 1700096400], ['allow', 1, 1700182800]]Failed
exact quota[['allow', 0, 1700175600], ['deny', 0, 1700175600]][['allow', 0, 1700002800], ['deny', 0, 1700002800]]Failed

SHA-256 / 363a2e8a3de0c1ab846f48fdb7d2f97c546f354135ecbcf026165532abd007cb

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

Case digest / bf39e3ddbb7de51b2d559df74ef6ee4df2df91adfba82cb0bfe7d8dabbf7e109