FAILURE MAP
← Case archive

FA-68766 / Toll and parking fee computation / Open access

Demand-responsive meter rate adjustment: the lower band uses the quietest hour · case 01

Demand-responsive meter rate adjustment returns a wrong result when the lower band uses the quietest hour.

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

ROOT CAUSE

A mean of exactly the target minimum lowers the rate.

VERIFIED REPAIR

Restore the lower occupancy band rule so that the step reads `elif avg < x['lo']:`.

Unsuccessful approach: A single quiet hour lowers the rate even when the mean is in band.

Case contract

Input {rate, occupancy: hourly percentages, hi, lo, step, min_rate, max_rate, min_samples}. With fewer than min_samples samples the rate is unchanged. Otherwise the exact mean occupancy above hi raises the rate by step, below lo lowers it by step; the result is always clamped to [min_rate, max_rate].

Why this case matters

Fee engines bill customers in integer cents; a wrong boundary, rounding stage or cap scope silently over- or under-charges.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    occ = x['occupancy']
    if len(occ) < x['min_samples']:
        return x['rate']
    avg = Fraction(sum(occ), len(occ))
    r = x['rate']
    if avg > x['hi']:
        r += x['step']
    elif avg <= x['lo']:
        r -= x['step']
    return max(x['min_rate'], min(x['max_rate'], r))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'rate': 375, 'occupancy': [60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 375), ({'rate': 775, 'occupancy': [80, 53, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 700), ({'rate': 300, 'occupancy': [81, 51, 71, 73, 57], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 125, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 125), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [83, 59, 59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 325)], [({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 425, 'occupancy': [53, 59, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 425), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 400, 'occupancy': [80, 59, 91, 81, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 400), ({'rate': 600, 'occupancy': [80, 78], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 75, 'occupancy': [59, 56, 81, 80, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 100)], [({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 525, 'occupancy': [40, 81, 59], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 525), ({'rate': 325, 'occupancy': [60, 59, 80, 59, 59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 325), ({'rate': 425, 'occupancy': [59, 60, 60, 57, 81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 425), ({'rate': 600, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 600)], [({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 225, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 225), ({'rate': 600, 'occupancy': [80, 83, 60, 59, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 600), ({'rate': 325, 'occupancy': [62, 59, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 775, 'occupancy': [60, 59, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 700)], [({'rate': 400, 'occupancy': [59, 60, 81, 59, 45], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 400), ({'rate': 475, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 475), ({'rate': 425, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 425), ({'rate': 375, 'occupancy': [59, 59, 67, 60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 375), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check('fee oracle' + ' %d' % i, 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
fee oracle 0375375Passed
fee oracle 1700700Passed
fee oracle 2300300Passed
fee oracle 3300300Passed
fee oracle 4275300Failed
fee oracle 5100125Failed
fee oracle 6325325Passed
fee oracle 7325325Passed

SHA-256 / b5e6cc166630d15d95f69a285ea037ed13cd12bd3bf743ce6a5fc7fcab925156

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    occ = x['occupancy']
    if len(occ) < x['min_samples']:
        return x['rate']
    avg = Fraction(sum(occ), len(occ))
    r = x['rate']
    if avg > x['hi']:
        r += x['step']
    elif min(occ) < x['lo']:
        r -= x['step']
    return max(x['min_rate'], min(x['max_rate'], r))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'rate': 375, 'occupancy': [60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 375), ({'rate': 775, 'occupancy': [80, 53, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 700), ({'rate': 300, 'occupancy': [81, 51, 71, 73, 57], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 125, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 125), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [83, 59, 59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 325)], [({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 425, 'occupancy': [53, 59, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 425), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 400, 'occupancy': [80, 59, 91, 81, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 400), ({'rate': 600, 'occupancy': [80, 78], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 75, 'occupancy': [59, 56, 81, 80, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 100)], [({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 525, 'occupancy': [40, 81, 59], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 525), ({'rate': 325, 'occupancy': [60, 59, 80, 59, 59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 325), ({'rate': 425, 'occupancy': [59, 60, 60, 57, 81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 425), ({'rate': 600, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 600)], [({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 225, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 225), ({'rate': 600, 'occupancy': [80, 83, 60, 59, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 600), ({'rate': 325, 'occupancy': [62, 59, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 775, 'occupancy': [60, 59, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 700)], [({'rate': 400, 'occupancy': [59, 60, 81, 59, 45], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 400), ({'rate': 475, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 475), ({'rate': 425, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 425), ({'rate': 375, 'occupancy': [59, 59, 67, 60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 375), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check('fee oracle' + ' %d' % i, 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
fee oracle 0375375Passed
fee oracle 1700700Passed
fee oracle 2250300Failed
fee oracle 3300300Passed
fee oracle 4300300Passed
fee oracle 5125125Passed
fee oracle 6325325Passed
fee oracle 7275325Failed

SHA-256 / 77f855aecf6b32b7c309a8f118ffc6deb79e206a87ae48f1a125a79cd47d62c9

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    occ = x['occupancy']
    if len(occ) < x['min_samples']:
        return x['rate']
    avg = Fraction(sum(occ), len(occ))
    r = x['rate']
    if avg > x['hi']:
        r += x['step']
    elif avg < x['lo']:
        r -= x['step']
    return max(x['min_rate'], min(x['max_rate'], r))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'rate': 375, 'occupancy': [60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 375), ({'rate': 775, 'occupancy': [80, 53, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 700), ({'rate': 300, 'occupancy': [81, 51, 71, 73, 57], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 125, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 125), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [83, 59, 59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 325)], [({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 425, 'occupancy': [53, 59, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 425), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 400, 'occupancy': [80, 59, 91, 81, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 400), ({'rate': 600, 'occupancy': [80, 78], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 75, 'occupancy': [59, 56, 81, 80, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 100)], [({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 525, 'occupancy': [40, 81, 59], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 525), ({'rate': 325, 'occupancy': [60, 59, 80, 59, 59, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 325), ({'rate': 425, 'occupancy': [59, 60, 60, 57, 81, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 425), ({'rate': 600, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 600)], [({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 225, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 225), ({'rate': 600, 'occupancy': [80, 83, 60, 59, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 600), ({'rate': 325, 'occupancy': [62, 59, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 775, 'occupancy': [60, 59, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 700)], [({'rate': 400, 'occupancy': [59, 60, 81, 59, 45], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 400), ({'rate': 475, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 475), ({'rate': 425, 'occupancy': [60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 425), ({'rate': 375, 'occupancy': [59, 59, 67, 60, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 375), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check('fee oracle' + ' %d' % i, 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
fee oracle 0375375Passed
fee oracle 1700700Passed
fee oracle 2300300Passed
fee oracle 3300300Passed
fee oracle 4300300Passed
fee oracle 5125125Passed
fee oracle 6325325Passed
fee oracle 7325325Passed

SHA-256 / 55746ae1ebf0bdc0eeed5b1fb1e788a88bd8acc9301555b58fa6e56a42f8346b

Verification & scope

A deterministic, bounded toy model with a stipulated contract; it makes no claim of conformance to any agency manual or standard. 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:05.330045+00:00.

Case digest / 2b684fe2d0178c6bdda8837292f5ac560531856fe41458615fb51e9a521f2814