FA-68761 / Toll and parking fee computation / Open access
Demand-responsive meter rate adjustment: the upper band uses the peak hour · case 01
Demand-responsive meter rate adjustment returns a wrong result when the upper band uses the peak hour.
ROOT CAUSE
A mean of exactly the target maximum raises the rate.
VERIFIED REPAIR
Restore the upper occupancy band rule so that the step reads `if avg > x['hi']:`.
Unsuccessful approach: A single busy hour raises 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': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 175, 'occupancy': [81, 93, 83, 80, 60, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 175), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 275, 'occupancy': [80, 80, 59, 60, 89, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 275), ({'rate': 200, 'occupancy': [59, 84], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 200), ({'rate': 425, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 425)], [({'rate': 200, 'occupancy': [80, 59, 81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [81, 60, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 325), ({'rate': 175, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 175), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, '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': 150, 'occupancy': [60, 99, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 150)], [({'rate': 175, 'occupancy': [80, 60, 95], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 175), ({'rate': 300, 'occupancy': [60, 81, 60, 60, 59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'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, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 575, 'occupancy': [81, 81, 87, 71], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 575), ({'rate': 525, 'occupancy': [60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 525)], [({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 725, 'occupancy': [60, 80, 87], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 600), ({'rate': 125, 'occupancy': [81, 81, 62], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 125), ({'rate': 150, 'occupancy': [59, 100, 80, 81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 150), ({'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': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 725, 'occupancy': [95, 80, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 250, 'occupancy': [80, 59, 80, 59, 81, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 250)], [({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [46, 80, 59, 81, 79, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 100, 'occupancy': [80, 97, 81, 51, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 100), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 175, 'occupancy': [80, 80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 175), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 725, 'occupancy': [59, 81, 59, 55], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300)]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fee oracle 0 | 275 | 275 | Passed |
| fee oracle 1 | 175 | 175 | Passed |
| fee oracle 2 | 325 | 300 | Failed |
| fee oracle 3 | 325 | 325 | Passed |
| fee oracle 4 | 300 | 300 | Passed |
| fee oracle 5 | 275 | 275 | Passed |
| fee oracle 6 | 200 | 200 | Passed |
| fee oracle 7 | 425 | 425 | Passed |
SHA-256 / 820b518bb386e1c56c4da40d14b93234f58a3365d7ad6c61343bdda4a4a3ff87
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 max(occ) > 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': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 175, 'occupancy': [81, 93, 83, 80, 60, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 175), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 275, 'occupancy': [80, 80, 59, 60, 89, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 275), ({'rate': 200, 'occupancy': [59, 84], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 200), ({'rate': 425, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 425)], [({'rate': 200, 'occupancy': [80, 59, 81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [81, 60, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 325), ({'rate': 175, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 175), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, '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': 150, 'occupancy': [60, 99, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 150)], [({'rate': 175, 'occupancy': [80, 60, 95], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 175), ({'rate': 300, 'occupancy': [60, 81, 60, 60, 59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'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, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 575, 'occupancy': [81, 81, 87, 71], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 575), ({'rate': 525, 'occupancy': [60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 525)], [({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 725, 'occupancy': [60, 80, 87], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 600), ({'rate': 125, 'occupancy': [81, 81, 62], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 125), ({'rate': 150, 'occupancy': [59, 100, 80, 81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 150), ({'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': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 725, 'occupancy': [95, 80, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 250, 'occupancy': [80, 59, 80, 59, 81, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 250)], [({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [46, 80, 59, 81, 79, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 100, 'occupancy': [80, 97, 81, 51, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 100), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 175, 'occupancy': [80, 80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 175), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 725, 'occupancy': [59, 81, 59, 55], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300)]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fee oracle 0 | 275 | 275 | Passed |
| fee oracle 1 | 225 | 175 | Failed |
| fee oracle 2 | 300 | 300 | Passed |
| fee oracle 3 | 325 | 325 | Passed |
| fee oracle 4 | 300 | 300 | Passed |
| fee oracle 5 | 325 | 275 | Failed |
| fee oracle 6 | 200 | 200 | Passed |
| fee oracle 7 | 425 | 425 | Passed |
SHA-256 / 9dfc73d6c051f3ae76374852455b7887a5eb903e502eb177bcc9d389eb763ace
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': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 175, 'occupancy': [81, 93, 83, 80, 60, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 175), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [60, 60, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 275, 'occupancy': [80, 80, 59, 60, 89, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 275), ({'rate': 200, 'occupancy': [59, 84], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 200), ({'rate': 425, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 425)], [({'rate': 200, 'occupancy': [80, 59, 81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 200), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [81, 60, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 325), ({'rate': 175, 'occupancy': [], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 175), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 300, 'occupancy': [80, 80, 80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, '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': 150, 'occupancy': [60, 99, 80, 81], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 150)], [({'rate': 175, 'occupancy': [80, 60, 95], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 175), ({'rate': 300, 'occupancy': [60, 81, 60, 60, 59, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 3}, 300), ({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 300, 'occupancy': [80, 81], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'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, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 575, 'occupancy': [81, 81, 87, 71], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 575), ({'rate': 525, 'occupancy': [60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 525)], [({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300), ({'rate': 725, 'occupancy': [60, 80, 87], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 600), ({'rate': 125, 'occupancy': [81, 81, 62], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 125), ({'rate': 150, 'occupancy': [59, 100, 80, 81, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 700, 'min_samples': 2}, 150), ({'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': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 725, 'occupancy': [95, 80, 60], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 250, 'occupancy': [80, 59, 80, 59, 81, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 250)], [({'rate': 300, 'occupancy': [90, 90], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 325, 'occupancy': [46, 80, 59, 81, 79, 80], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 600, 'min_samples': 2}, 325), ({'rate': 100, 'occupancy': [80, 97, 81, 51, 60], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 100, 'max_rate': 700, 'min_samples': 2}, 100), ({'rate': 800, 'occupancy': [70, 70, 70], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 175, 'occupancy': [80, 80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 100, 'max_rate': 700, 'min_samples': 3}, 175), ({'rate': 300, 'occupancy': [60, 59], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 275), ({'rate': 725, 'occupancy': [59, 81, 59, 55], 'hi': 80, 'lo': 60, 'step': 50, 'min_rate': 50, 'max_rate': 600, 'min_samples': 3}, 600), ({'rate': 300, 'occupancy': [80, 80], 'hi': 80, 'lo': 60, 'step': 25, 'min_rate': 50, 'max_rate': 600, 'min_samples': 2}, 300)]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fee oracle 0 | 275 | 275 | Passed |
| fee oracle 1 | 175 | 175 | Passed |
| fee oracle 2 | 300 | 300 | Passed |
| fee oracle 3 | 325 | 325 | Passed |
| fee oracle 4 | 300 | 300 | Passed |
| fee oracle 5 | 275 | 275 | Passed |
| fee oracle 6 | 200 | 200 | Passed |
| fee oracle 7 | 425 | 425 | Passed |
SHA-256 / 9fdfa8d4ec817b39bcc1e95d1226e67e82f9f70a74ca8809523bafa75887b460
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.196375+00:00.
Case digest / 0b2ddf216f557c001309f9fe3a95a6f4f0295b281404f604bece85a64cf4810b