FAILURE MAP
← Case archive

FA-64146 / Medication dosing calculations / Open access

Rolling 24-hour cumulative dose limit: remaining amount clamp · case 01

Over-limit patients are shown a negative remaining allowance.

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

ROOT CAUSE

The remaining amount is not clamped at zero.

VERIFIED REPAIR

Report max(0, max_mg - window).

Unsuccessful approach: abs() turns an overdose into a positive remaining allowance.

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 = 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 fixtureActualExpectedOutcome
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': -500, 'window_mg': 3500}{'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500}Failed
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 / 1a2625e1f30b937ac7f6f0ce35b304fbbcb86da40bb75cf984cdeab3ebd3d111

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 = abs(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 fixtureActualExpectedOutcome
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': 500, 'window_mg': 3500}{'allowed': False, 'reason': 'DAILY_LIMIT', 'remaining_mg': 0, 'window_mg': 3500}Failed
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 / 5d29954435e171fc2ef366deaf74564e6d827e7df804dbf3de192e992dbf26e7

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

Case digest / ac13f1e52936b838b8df9921d662113ffaeea28b657dbddbad94033fbccdc22e