FA-64136 / Medication dosing calculations / Open access
Rolling 24-hour cumulative dose limit: minimum interval comparison · case 01
A request made exactly at the minimum interval is refused as too soon.
ROOT CAUSE
The minimum interval check uses <=, excluding the moment the interval is satisfied.
VERIFIED REPAIR
Refuse only when elapsed time is strictly less than min_interval.
Unsuccessful approach: Granting a 30-minute early grace allows genuinely too-soon doses.
Case contract
Input {history [[t_min, mg], ...] (any order), now, request_mg, max_mg, min_interval}. Doses with now - t < 1440 minutes count toward the rolling window (a dose exactly 24 h old has expired). The request is refused with TOO_SOON when now minus the most recent dose time is below min_interval, otherwise with DAILY_LIMIT when window + request exceeds max_mg; else OK. Return {allowed, reason, window_mg, remaining_mg = max(0, max_mg - window)}.
Why this case matters
Cumulative-dose guards are time-window computations over charted administrations; window edges and history ordering are common defect sites.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
now = x['now']
window = sum(mg for t, mg in x['history'] if now - t < 1440)
remaining = max(0, x['max_mg'] - window)
if x['history']:
last = max(t for t, mg in x['history'])
if now - last <= x['min_interval']:
return {'allowed': False, 'reason': 'TOO_SOON', 'window_mg': window, 'remaining_mg': remaining}
if window + x['request_mg'] > x['max_mg']:
return {'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': window, 'remaining_mg': remaining}
return {'allowed': True, 'reason': 'OK', 'window_mg': window, 'remaining_mg': remaining}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3100,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1100}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1401, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 610,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 340, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 335, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1100, 'max_mg': 3100, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1100}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 50, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3200,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1200}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1402, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 620,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 400, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 300},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 330, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1200, 'max_mg': 3200, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1200}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3050, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 100, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3300,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1300}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1403, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 630,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 460, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 360},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 325, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1300, 'max_mg': 3300, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1300}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3100, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 150, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3400,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1400}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1404, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 640,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 520, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 420},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 320, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1400, 'max_mg': 3400, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1400}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3150, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 200, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3500,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1500}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1405, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 650,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 580, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 480},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 315, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1500, 'max_mg': 3500, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1500}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3200, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 250, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})]]
for label, args, expected in fixtures[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 |
|---|---|---|---|
| dose exactly 24 hours old has expired | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 1100, 'window_mg': 2000} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | Failed |
| rolling window spans midnight | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 500, 'window_mg': 2000} | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 500, 'window_mg': 2000} | Passed |
| unsorted history most recent dose | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2500, 'window_mg': 1500} | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2500, 'window_mg': 1500} | Passed |
| interval exactly met | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2350, 'window_mg': 650} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 2350, 'window_mg': 650} | Failed |
| interval shortly before minimum | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2350, 'window_mg': 650} | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2350, 'window_mg': 650} | Passed |
| request reaches maximum exactly | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | Passed |
| over limit remaining clamped | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500} | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500} | Passed |
| first dose control | {'allowed': True, 'reason': 'OK', 'remaining_mg': 3000, 'window_mg': 0} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 3000, 'window_mg': 0} | Passed |
SHA-256 / 8c80ac6bb173d7866f7af8d32bf160ecc10d3f5efc0fcef4e9491981c83c0a69
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
now = x['now']
window = sum(mg for t, mg in x['history'] if now - t < 1440)
remaining = max(0, x['max_mg'] - window)
if x['history']:
last = max(t for t, mg in x['history'])
if now - last < x['min_interval'] - 30:
return {'allowed': False, 'reason': 'TOO_SOON', 'window_mg': window, 'remaining_mg': remaining}
if window + x['request_mg'] > x['max_mg']:
return {'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': window, 'remaining_mg': remaining}
return {'allowed': True, 'reason': 'OK', 'window_mg': window, 'remaining_mg': remaining}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3100,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1100}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1401, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 610,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 340, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 335, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1100, 'max_mg': 3100, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1100}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 50, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3200,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1200}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1402, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 620,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 400, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 300},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 330, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1200, 'max_mg': 3200, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1200}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3050, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 100, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3300,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1300}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1403, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 630,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 460, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 360},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 325, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1300, 'max_mg': 3300, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1300}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3100, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 150, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3400,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1400}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1404, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 640,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 520, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 420},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 320, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1400, 'max_mg': 3400, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1400}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3150, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 200, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3500,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1500}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1405, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 650,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 580, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 480},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 315, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1500, 'max_mg': 3500, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1500}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3200, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 250, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})]]
for label, args, expected in fixtures[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 |
|---|---|---|---|
| dose exactly 24 hours old has expired | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | Passed |
| rolling window spans midnight | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 500, 'window_mg': 2000} | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 500, 'window_mg': 2000} | Passed |
| unsorted history most recent dose | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2500, 'window_mg': 1500} | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2500, 'window_mg': 1500} | Passed |
| interval exactly met | {'allowed': True, 'reason': 'OK', 'remaining_mg': 2350, 'window_mg': 650} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 2350, 'window_mg': 650} | Passed |
| interval shortly before minimum | {'allowed': True, 'reason': 'OK', 'remaining_mg': 2350, 'window_mg': 650} | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2350, 'window_mg': 650} | Failed |
| request reaches maximum exactly | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | Passed |
| over limit remaining clamped | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500} | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500} | Passed |
| first dose control | {'allowed': True, 'reason': 'OK', 'remaining_mg': 3000, 'window_mg': 0} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 3000, 'window_mg': 0} | Passed |
SHA-256 / 6535d7489ad29f4f393065190ae01161c7a7c07a335ee6fdd34beeea1a938ff3
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
now = x['now']
window = sum(mg for t, mg in x['history'] if now - t < 1440)
remaining = max(0, x['max_mg'] - window)
if x['history']:
last = max(t for t, mg in x['history'])
if now - last < x['min_interval']:
return {'allowed': False, 'reason': 'TOO_SOON', 'window_mg': window, 'remaining_mg': remaining}
if window + x['request_mg'] > x['max_mg']:
return {'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': window, 'remaining_mg': remaining}
return {'allowed': True, 'reason': 'OK', 'window_mg': window, 'remaining_mg': remaining}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3100,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1100}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1401, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 610,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 340, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 335, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1100, 'max_mg': 3100, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1100}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 50, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3200,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1200}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1402, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 620,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 400, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 300},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 330, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1200, 'max_mg': 3200, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1200}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3050, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 100, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3300,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1300}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1403, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 630,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 460, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 360},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 325, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1300, 'max_mg': 3300, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1300}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3100, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 150, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3400,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1400}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1404, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 640,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 520, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 420},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 320, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1400, 'max_mg': 3400, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1400}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3150, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 200, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})],
[('dose exactly 24 hours old has expired',
{'history': [[0, 1000], [600, 1000], [1200, 1000]],
'now': 1440,
'request_mg': 1000,
'max_mg': 3500,
'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1500}),
('rolling window spans midnight',
{'history': [[1300, 1000], [1405, 1000]],
'now': 1700,
'request_mg': 1000,
'max_mg': 2500,
'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 2000, 'remaining_mg': 500}),
('unsorted history most recent dose',
{'history': [[500, 500], [100, 500], [300, 500]],
'now': 650,
'request_mg': 500,
'max_mg': 4000,
'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 1500, 'remaining_mg': 2500}),
('interval exactly met',
{'history': [[100, 650]], 'now': 580, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 480},
{'allowed': True, 'reason': 'OK', 'window_mg': 650, 'remaining_mg': 2350}),
('interval shortly before minimum',
{'history': [[100, 650]], 'now': 315, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': False, 'reason': 'TOO_SOON', 'window_mg': 650, 'remaining_mg': 2350}),
('request reaches maximum exactly',
{'history': [[0, 1000], [300, 1000]], 'now': 600, 'request_mg': 1500, 'max_mg': 3500, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 2000, 'remaining_mg': 1500}),
('over limit remaining clamped',
{'history': [[0, 2000], [400, 1500]], 'now': 900, 'request_mg': 500, 'max_mg': 3200, 'min_interval': 240},
{'allowed': False, 'reason': 'DAILY_LIMIT', 'window_mg': 3500, 'remaining_mg': 0}),
('first dose control',
{'history': [], 'now': 250, 'request_mg': 650, 'max_mg': 3000, 'min_interval': 240},
{'allowed': True, 'reason': 'OK', 'window_mg': 0, 'remaining_mg': 3000})]]
for label, args, expected in fixtures[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 |
|---|---|---|---|
| dose exactly 24 hours old has expired | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | Passed |
| rolling window spans midnight | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 500, 'window_mg': 2000} | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 500, 'window_mg': 2000} | Passed |
| unsorted history most recent dose | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2500, 'window_mg': 1500} | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2500, 'window_mg': 1500} | Passed |
| interval exactly met | {'allowed': True, 'reason': 'OK', 'remaining_mg': 2350, 'window_mg': 650} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 2350, 'window_mg': 650} | Passed |
| interval shortly before minimum | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2350, 'window_mg': 650} | {'allowed': False, 'reason': 'TOO_SOON', 'remaining_mg': 2350, 'window_mg': 650} | Passed |
| request reaches maximum exactly | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 1100, 'window_mg': 2000} | Passed |
| over limit remaining clamped | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500} | {'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500} | Passed |
| first dose control | {'allowed': True, 'reason': 'OK', 'remaining_mg': 3000, 'window_mg': 0} | {'allowed': True, 'reason': 'OK', 'remaining_mg': 3000, 'window_mg': 0} | Passed |
SHA-256 / 411085205a45e6404e129ecb635f2a12041e25f1e4d07fd107439950dae9f5e1
Verification & scope
A deterministic toy software model with explicitly stipulated thresholds and formulas; it is not clinical guidance, not a validated medical calculator, and makes no claim of conformance to any published protocol. Numbered variants vary patient and order inputs. 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:47:21.341562+00:00.
Case digest / 12e3a5eedfd9d2755ef360592de9bb7530ea132e9ca9cca604c888da03cad87a