FA-67516 / Elevator dispatch scheduling / Open access
Hall call waiting time statistics: censored waits · case 01
Long-waiting unanswered calls vanish from the statistics.
ROOT CAUSE
Unanswered calls are skipped.
VERIFIED REPAIR
Count unanswered calls with the censored wait end - registration.
Unsuccessful approach: Using the end time itself as the wait inflates every censored call.
Case contract
Each hall call has a registration time and an answer time (None if still unanswered at end_s). Waits are answer - registration clamped at zero (clock skew); unanswered calls count with the censored wait end_s - registration. Report the integer mean (floor), per-mille of waits over 60 s (floor), the maximum and the count; all zeros when there are no calls.
Why this case matters
Lift group controllers make these decisions many times per minute; a wrong answer strands passengers, wastes trips or overrides a safety rule.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
waits = []
for reg, ans in x['calls']:
if ans is None:
continue
else:
waits.append(max(0, ans - reg))
if not waits:
return {'avg': 0, 'long_permille': 0, 'max': 0, 'count': 0}
longs = sum(1 for w in waits if w > 60)
return {'avg': sum(waits) // len(waits), 'long_permille': longs * 1000 // len(waits), 'max': max(waits), 'count': len(waits)}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 4', {'end_s': 600, 'calls': [[15, None], [80, 100], [304, 324], [560, 557], [73, 78], [574, None]]}, {'avg': 109, 'long_permille': 166, 'max': 585, 'count': 6}), ('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('boundary: answer logged before registration', {'end_s': 600, 'calls': [[100, 98], [200, 230]]}, {'avg': 15, 'long_permille': 0, 'max': 30, 'count': 2}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('sampled regression 1', {'end_s': 600, 'calls': [[93, 138], [499, 519], [546, None], [485, None], [376, 526], [329, 419], [42, None], [303, None]]}, {'avg': 166, 'long_permille': 625, 'max': 558, 'count': 8}), ('sampled regression 7', {'end_s': 600, 'calls': [[196, 216], [228, 248], [100, None], [381, 471], [370, 415], [56, 76]]}, {'avg': 115, 'long_permille': 333, 'max': 500, 'count': 6}), ('control 10', {'end_s': 600, 'calls': [[274, 279]]}, {'avg': 5, 'long_permille': 0, 'max': 5, 'count': 1})], [('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 12', {'end_s': 600, 'calls': [[549, None], [34, 94], [153, 243]]}, {'avg': 67, 'long_permille': 333, 'max': 90, 'count': 3}), ('sampled regression 7', {'end_s': 600, 'calls': [[196, 216], [228, 248], [100, None], [381, 471], [370, 415], [56, 76]]}, {'avg': 115, 'long_permille': 333, 'max': 500, 'count': 6}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('boundary: mean with a remainder', {'end_s': 600, 'calls': [[0, 10], [0, 11], [0, 11]]}, {'avg': 10, 'long_permille': 0, 'max': 11, 'count': 3}), ('sampled regression 15', {'end_s': 600, 'calls': [[427, 472], [290, 440], [125, None], [18, 79], [88, 178], [156, 306], [7, None], [120, None]]}, {'avg': 255, 'long_permille': 875, 'max': 593, 'count': 8}), ('control 18', {'end_s': 600, 'calls': [[508, 528]]}, {'avg': 20, 'long_permille': 0, 'max': 20, 'count': 1}), ('sampled regression 21', {'end_s': 600, 'calls': [[423, 513], [105, 150], [229, None], [580, None], [55, 115], [215, None], [514, 575], [425, 423]]}, {'avg': 129, 'long_permille': 500, 'max': 385, 'count': 8})], [('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 20', {'end_s': 600, 'calls': [[520, None], [447, 467], [161, 221], [506, 511], [146, 296], [576, None], [73, 223], [194, 214]]}, {'avg': 63, 'long_permille': 375, 'max': 150, 'count': 8}), ('sampled regression 13', {'end_s': 600, 'calls': [[451, 511], [494, 539], [553, None], [26, None], [306, 367], [164, 314], [548, None], [406, 556]]}, {'avg': 142, 'long_permille': 500, 'max': 574, 'count': 8}), ('boundary: mean with a remainder', {'end_s': 600, 'calls': [[0, 10], [0, 11], [0, 11]]}, {'avg': 10, 'long_permille': 0, 'max': 11, 'count': 3}), ('boundary: no calls', {'end_s': 600, 'calls': []}, {'avg': 0, 'long_permille': 0, 'max': 0, 'count': 0}), ('sampled regression 23', {'end_s': 600, 'calls': [[121, 141], [388, None], [577, None]]}, {'avg': 85, 'long_permille': 333, 'max': 212, 'count': 3}), ('control 26', {'end_s': 600, 'calls': [[205, 225], [336, 381]]}, {'avg': 32, 'long_permille': 0, 'max': 45, 'count': 2}), ('sampled regression 29', {'end_s': 600, 'calls': [[26, 31], [282, 287], [487, 577], [127, 187], [568, None], [130, 280], [335, 395], [184, 274]]}, {'avg': 61, 'long_permille': 375, 'max': 150, 'count': 8})], [('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 30', {'end_s': 600, 'calls': [[430, None]]}, {'avg': 170, 'long_permille': 1000, 'max': 170, 'count': 1}), ('sampled regression 19', {'end_s': 600, 'calls': [[490, 551], [203, None], [559, None], [20, 65]]}, {'avg': 136, 'long_permille': 500, 'max': 397, 'count': 4}), ('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('boundary: answer logged before registration', {'end_s': 600, 'calls': [[100, 98], [200, 230]]}, {'avg': 15, 'long_permille': 0, 'max': 30, 'count': 2}), ('sampled regression 34', {'end_s': 600, 'calls': [[526, 531], [100, 160], [338, None], [152, 242], [413, 433], [56, 117]]}, {'avg': 83, 'long_permille': 500, 'max': 262, 'count': 6}), ('sampled regression 37', {'end_s': 600, 'calls': [[542, 547], [483, None], [421, 418], [216, None]]}, {'avg': 126, 'long_permille': 500, 'max': 384, 'count': 4}), ('sampled regression 40', {'end_s': 600, 'calls': [[286, 346], [342, None], [309, 308], [91, 96], [519, 524], [518, None], [12, 73]]}, {'avg': 67, 'long_permille': 428, 'max': 258, 'count': 7})], [('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 39', {'end_s': 600, 'calls': [[181, None], [11, 31], [517, 537], [294, 339], [11, 56], [451, 471]]}, {'avg': 94, 'long_permille': 166, 'max': 419, 'count': 6}), ('sampled regression 27', {'end_s': 600, 'calls': [[441, None], [579, None], [47, 137], [447, None]]}, {'avg': 105, 'long_permille': 750, 'max': 159, 'count': 4}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 45', {'end_s': 600, 'calls': [[54, 204], [360, None], [102, None], [487, None], [396, None]]}, {'avg': 241, 'long_permille': 1000, 'max': 498, 'count': 5}), ('control 48', {'end_s': 600, 'calls': [[235, 234], [112, 202], [453, 498], [10, 30], [166, 186], [359, 358], [466, 471]]}, {'avg': 25, 'long_permille': 142, 'max': 90, 'count': 7}), ('sampled regression 51', {'end_s': 600, 'calls': [[553, None], [377, 422], [370, None], [180, 241]]}, {'avg': 95, 'long_permille': 500, 'max': 230, 'count': 4})]]
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 |
|---|---|---|---|
| regression: unanswered call at the end | {'avg': 20, 'count': 1, 'long_permille': 0, 'max': 20} | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 100} | Failed |
| sampled regression 4 | {'avg': 11, 'count': 4, 'long_permille': 0, 'max': 20} | {'avg': 109, 'count': 6, 'long_permille': 166, 'max': 585} | Failed |
| regression: long unanswered call | {'avg': 10, 'count': 2, 'long_permille': 0, 'max': 10} | {'avg': 73, 'count': 3, 'long_permille': 333, 'max': 200} | Failed |
| boundary: answer logged before registration | {'avg': 15, 'count': 2, 'long_permille': 0, 'max': 30} | {'avg': 15, 'count': 2, 'long_permille': 0, 'max': 30} | Passed |
| boundary: wait of exactly sixty seconds | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 61} | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 61} | Passed |
| sampled regression 1 | {'avg': 76, 'count': 4, 'long_permille': 500, 'max': 150} | {'avg': 166, 'count': 8, 'long_permille': 625, 'max': 558} | Failed |
| sampled regression 7 | {'avg': 39, 'count': 5, 'long_permille': 200, 'max': 90} | {'avg': 115, 'count': 6, 'long_permille': 333, 'max': 500} | Failed |
| control 10 | {'avg': 5, 'count': 1, 'long_permille': 0, 'max': 5} | {'avg': 5, 'count': 1, 'long_permille': 0, 'max': 5} | Passed |
SHA-256 / 3960e8289252801d0e3045f4d95c941617305c5c850efe267922b84bfd164d46
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
waits = []
for reg, ans in x['calls']:
if ans is None:
waits.append(x['end_s'])
else:
waits.append(max(0, ans - reg))
if not waits:
return {'avg': 0, 'long_permille': 0, 'max': 0, 'count': 0}
longs = sum(1 for w in waits if w > 60)
return {'avg': sum(waits) // len(waits), 'long_permille': longs * 1000 // len(waits), 'max': max(waits), 'count': len(waits)}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 4', {'end_s': 600, 'calls': [[15, None], [80, 100], [304, 324], [560, 557], [73, 78], [574, None]]}, {'avg': 109, 'long_permille': 166, 'max': 585, 'count': 6}), ('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('boundary: answer logged before registration', {'end_s': 600, 'calls': [[100, 98], [200, 230]]}, {'avg': 15, 'long_permille': 0, 'max': 30, 'count': 2}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('sampled regression 1', {'end_s': 600, 'calls': [[93, 138], [499, 519], [546, None], [485, None], [376, 526], [329, 419], [42, None], [303, None]]}, {'avg': 166, 'long_permille': 625, 'max': 558, 'count': 8}), ('sampled regression 7', {'end_s': 600, 'calls': [[196, 216], [228, 248], [100, None], [381, 471], [370, 415], [56, 76]]}, {'avg': 115, 'long_permille': 333, 'max': 500, 'count': 6}), ('control 10', {'end_s': 600, 'calls': [[274, 279]]}, {'avg': 5, 'long_permille': 0, 'max': 5, 'count': 1})], [('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 12', {'end_s': 600, 'calls': [[549, None], [34, 94], [153, 243]]}, {'avg': 67, 'long_permille': 333, 'max': 90, 'count': 3}), ('sampled regression 7', {'end_s': 600, 'calls': [[196, 216], [228, 248], [100, None], [381, 471], [370, 415], [56, 76]]}, {'avg': 115, 'long_permille': 333, 'max': 500, 'count': 6}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('boundary: mean with a remainder', {'end_s': 600, 'calls': [[0, 10], [0, 11], [0, 11]]}, {'avg': 10, 'long_permille': 0, 'max': 11, 'count': 3}), ('sampled regression 15', {'end_s': 600, 'calls': [[427, 472], [290, 440], [125, None], [18, 79], [88, 178], [156, 306], [7, None], [120, None]]}, {'avg': 255, 'long_permille': 875, 'max': 593, 'count': 8}), ('control 18', {'end_s': 600, 'calls': [[508, 528]]}, {'avg': 20, 'long_permille': 0, 'max': 20, 'count': 1}), ('sampled regression 21', {'end_s': 600, 'calls': [[423, 513], [105, 150], [229, None], [580, None], [55, 115], [215, None], [514, 575], [425, 423]]}, {'avg': 129, 'long_permille': 500, 'max': 385, 'count': 8})], [('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 20', {'end_s': 600, 'calls': [[520, None], [447, 467], [161, 221], [506, 511], [146, 296], [576, None], [73, 223], [194, 214]]}, {'avg': 63, 'long_permille': 375, 'max': 150, 'count': 8}), ('sampled regression 13', {'end_s': 600, 'calls': [[451, 511], [494, 539], [553, None], [26, None], [306, 367], [164, 314], [548, None], [406, 556]]}, {'avg': 142, 'long_permille': 500, 'max': 574, 'count': 8}), ('boundary: mean with a remainder', {'end_s': 600, 'calls': [[0, 10], [0, 11], [0, 11]]}, {'avg': 10, 'long_permille': 0, 'max': 11, 'count': 3}), ('boundary: no calls', {'end_s': 600, 'calls': []}, {'avg': 0, 'long_permille': 0, 'max': 0, 'count': 0}), ('sampled regression 23', {'end_s': 600, 'calls': [[121, 141], [388, None], [577, None]]}, {'avg': 85, 'long_permille': 333, 'max': 212, 'count': 3}), ('control 26', {'end_s': 600, 'calls': [[205, 225], [336, 381]]}, {'avg': 32, 'long_permille': 0, 'max': 45, 'count': 2}), ('sampled regression 29', {'end_s': 600, 'calls': [[26, 31], [282, 287], [487, 577], [127, 187], [568, None], [130, 280], [335, 395], [184, 274]]}, {'avg': 61, 'long_permille': 375, 'max': 150, 'count': 8})], [('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 30', {'end_s': 600, 'calls': [[430, None]]}, {'avg': 170, 'long_permille': 1000, 'max': 170, 'count': 1}), ('sampled regression 19', {'end_s': 600, 'calls': [[490, 551], [203, None], [559, None], [20, 65]]}, {'avg': 136, 'long_permille': 500, 'max': 397, 'count': 4}), ('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('boundary: answer logged before registration', {'end_s': 600, 'calls': [[100, 98], [200, 230]]}, {'avg': 15, 'long_permille': 0, 'max': 30, 'count': 2}), ('sampled regression 34', {'end_s': 600, 'calls': [[526, 531], [100, 160], [338, None], [152, 242], [413, 433], [56, 117]]}, {'avg': 83, 'long_permille': 500, 'max': 262, 'count': 6}), ('sampled regression 37', {'end_s': 600, 'calls': [[542, 547], [483, None], [421, 418], [216, None]]}, {'avg': 126, 'long_permille': 500, 'max': 384, 'count': 4}), ('sampled regression 40', {'end_s': 600, 'calls': [[286, 346], [342, None], [309, 308], [91, 96], [519, 524], [518, None], [12, 73]]}, {'avg': 67, 'long_permille': 428, 'max': 258, 'count': 7})], [('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 39', {'end_s': 600, 'calls': [[181, None], [11, 31], [517, 537], [294, 339], [11, 56], [451, 471]]}, {'avg': 94, 'long_permille': 166, 'max': 419, 'count': 6}), ('sampled regression 27', {'end_s': 600, 'calls': [[441, None], [579, None], [47, 137], [447, None]]}, {'avg': 105, 'long_permille': 750, 'max': 159, 'count': 4}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 45', {'end_s': 600, 'calls': [[54, 204], [360, None], [102, None], [487, None], [396, None]]}, {'avg': 241, 'long_permille': 1000, 'max': 498, 'count': 5}), ('control 48', {'end_s': 600, 'calls': [[235, 234], [112, 202], [453, 498], [10, 30], [166, 186], [359, 358], [466, 471]]}, {'avg': 25, 'long_permille': 142, 'max': 90, 'count': 7}), ('sampled regression 51', {'end_s': 600, 'calls': [[553, None], [377, 422], [370, None], [180, 241]]}, {'avg': 95, 'long_permille': 500, 'max': 230, 'count': 4})]]
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 |
|---|---|---|---|
| regression: unanswered call at the end | {'avg': 310, 'count': 2, 'long_permille': 500, 'max': 600} | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 100} | Failed |
| sampled regression 4 | {'avg': 207, 'count': 6, 'long_permille': 333, 'max': 600} | {'avg': 109, 'count': 6, 'long_permille': 166, 'max': 585} | Failed |
| regression: long unanswered call | {'avg': 206, 'count': 3, 'long_permille': 333, 'max': 600} | {'avg': 73, 'count': 3, 'long_permille': 333, 'max': 200} | Failed |
| boundary: answer logged before registration | {'avg': 15, 'count': 2, 'long_permille': 0, 'max': 30} | {'avg': 15, 'count': 2, 'long_permille': 0, 'max': 30} | Passed |
| boundary: wait of exactly sixty seconds | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 61} | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 61} | Passed |
| sampled regression 1 | {'avg': 338, 'count': 8, 'long_permille': 750, 'max': 600} | {'avg': 166, 'count': 8, 'long_permille': 625, 'max': 558} | Failed |
| sampled regression 7 | {'avg': 132, 'count': 6, 'long_permille': 333, 'max': 600} | {'avg': 115, 'count': 6, 'long_permille': 333, 'max': 500} | Failed |
| control 10 | {'avg': 5, 'count': 1, 'long_permille': 0, 'max': 5} | {'avg': 5, 'count': 1, 'long_permille': 0, 'max': 5} | Passed |
SHA-256 / fad47e10bdd1bef49c856e8564175d18af40d551f5bbd94f2c2db5ea42519c7d
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
waits = []
for reg, ans in x['calls']:
if ans is None:
waits.append(x['end_s'] - reg)
else:
waits.append(max(0, ans - reg))
if not waits:
return {'avg': 0, 'long_permille': 0, 'max': 0, 'count': 0}
longs = sum(1 for w in waits if w > 60)
return {'avg': sum(waits) // len(waits), 'long_permille': longs * 1000 // len(waits), 'max': max(waits), 'count': len(waits)}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 4', {'end_s': 600, 'calls': [[15, None], [80, 100], [304, 324], [560, 557], [73, 78], [574, None]]}, {'avg': 109, 'long_permille': 166, 'max': 585, 'count': 6}), ('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('boundary: answer logged before registration', {'end_s': 600, 'calls': [[100, 98], [200, 230]]}, {'avg': 15, 'long_permille': 0, 'max': 30, 'count': 2}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('sampled regression 1', {'end_s': 600, 'calls': [[93, 138], [499, 519], [546, None], [485, None], [376, 526], [329, 419], [42, None], [303, None]]}, {'avg': 166, 'long_permille': 625, 'max': 558, 'count': 8}), ('sampled regression 7', {'end_s': 600, 'calls': [[196, 216], [228, 248], [100, None], [381, 471], [370, 415], [56, 76]]}, {'avg': 115, 'long_permille': 333, 'max': 500, 'count': 6}), ('control 10', {'end_s': 600, 'calls': [[274, 279]]}, {'avg': 5, 'long_permille': 0, 'max': 5, 'count': 1})], [('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 12', {'end_s': 600, 'calls': [[549, None], [34, 94], [153, 243]]}, {'avg': 67, 'long_permille': 333, 'max': 90, 'count': 3}), ('sampled regression 7', {'end_s': 600, 'calls': [[196, 216], [228, 248], [100, None], [381, 471], [370, 415], [56, 76]]}, {'avg': 115, 'long_permille': 333, 'max': 500, 'count': 6}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('boundary: mean with a remainder', {'end_s': 600, 'calls': [[0, 10], [0, 11], [0, 11]]}, {'avg': 10, 'long_permille': 0, 'max': 11, 'count': 3}), ('sampled regression 15', {'end_s': 600, 'calls': [[427, 472], [290, 440], [125, None], [18, 79], [88, 178], [156, 306], [7, None], [120, None]]}, {'avg': 255, 'long_permille': 875, 'max': 593, 'count': 8}), ('control 18', {'end_s': 600, 'calls': [[508, 528]]}, {'avg': 20, 'long_permille': 0, 'max': 20, 'count': 1}), ('sampled regression 21', {'end_s': 600, 'calls': [[423, 513], [105, 150], [229, None], [580, None], [55, 115], [215, None], [514, 575], [425, 423]]}, {'avg': 129, 'long_permille': 500, 'max': 385, 'count': 8})], [('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 20', {'end_s': 600, 'calls': [[520, None], [447, 467], [161, 221], [506, 511], [146, 296], [576, None], [73, 223], [194, 214]]}, {'avg': 63, 'long_permille': 375, 'max': 150, 'count': 8}), ('sampled regression 13', {'end_s': 600, 'calls': [[451, 511], [494, 539], [553, None], [26, None], [306, 367], [164, 314], [548, None], [406, 556]]}, {'avg': 142, 'long_permille': 500, 'max': 574, 'count': 8}), ('boundary: mean with a remainder', {'end_s': 600, 'calls': [[0, 10], [0, 11], [0, 11]]}, {'avg': 10, 'long_permille': 0, 'max': 11, 'count': 3}), ('boundary: no calls', {'end_s': 600, 'calls': []}, {'avg': 0, 'long_permille': 0, 'max': 0, 'count': 0}), ('sampled regression 23', {'end_s': 600, 'calls': [[121, 141], [388, None], [577, None]]}, {'avg': 85, 'long_permille': 333, 'max': 212, 'count': 3}), ('control 26', {'end_s': 600, 'calls': [[205, 225], [336, 381]]}, {'avg': 32, 'long_permille': 0, 'max': 45, 'count': 2}), ('sampled regression 29', {'end_s': 600, 'calls': [[26, 31], [282, 287], [487, 577], [127, 187], [568, None], [130, 280], [335, 395], [184, 274]]}, {'avg': 61, 'long_permille': 375, 'max': 150, 'count': 8})], [('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 30', {'end_s': 600, 'calls': [[430, None]]}, {'avg': 170, 'long_permille': 1000, 'max': 170, 'count': 1}), ('sampled regression 19', {'end_s': 600, 'calls': [[490, 551], [203, None], [559, None], [20, 65]]}, {'avg': 136, 'long_permille': 500, 'max': 397, 'count': 4}), ('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('boundary: answer logged before registration', {'end_s': 600, 'calls': [[100, 98], [200, 230]]}, {'avg': 15, 'long_permille': 0, 'max': 30, 'count': 2}), ('sampled regression 34', {'end_s': 600, 'calls': [[526, 531], [100, 160], [338, None], [152, 242], [413, 433], [56, 117]]}, {'avg': 83, 'long_permille': 500, 'max': 262, 'count': 6}), ('sampled regression 37', {'end_s': 600, 'calls': [[542, 547], [483, None], [421, 418], [216, None]]}, {'avg': 126, 'long_permille': 500, 'max': 384, 'count': 4}), ('sampled regression 40', {'end_s': 600, 'calls': [[286, 346], [342, None], [309, 308], [91, 96], [519, 524], [518, None], [12, 73]]}, {'avg': 67, 'long_permille': 428, 'max': 258, 'count': 7})], [('regression: unanswered call at the end', {'end_s': 600, 'calls': [[500, None], [10, 30]]}, {'avg': 60, 'long_permille': 500, 'max': 100, 'count': 2}), ('sampled regression 39', {'end_s': 600, 'calls': [[181, None], [11, 31], [517, 537], [294, 339], [11, 56], [451, 471]]}, {'avg': 94, 'long_permille': 166, 'max': 419, 'count': 6}), ('sampled regression 27', {'end_s': 600, 'calls': [[441, None], [579, None], [47, 137], [447, None]]}, {'avg': 105, 'long_permille': 750, 'max': 159, 'count': 4}), ('boundary: wait of exactly sixty seconds', {'end_s': 600, 'calls': [[0, 60], [100, 161]]}, {'avg': 60, 'long_permille': 500, 'max': 61, 'count': 2}), ('regression: long unanswered call', {'end_s': 600, 'calls': [[400, None], [0, 10], [5, 15]]}, {'avg': 73, 'long_permille': 333, 'max': 200, 'count': 3}), ('sampled regression 45', {'end_s': 600, 'calls': [[54, 204], [360, None], [102, None], [487, None], [396, None]]}, {'avg': 241, 'long_permille': 1000, 'max': 498, 'count': 5}), ('control 48', {'end_s': 600, 'calls': [[235, 234], [112, 202], [453, 498], [10, 30], [166, 186], [359, 358], [466, 471]]}, {'avg': 25, 'long_permille': 142, 'max': 90, 'count': 7}), ('sampled regression 51', {'end_s': 600, 'calls': [[553, None], [377, 422], [370, None], [180, 241]]}, {'avg': 95, 'long_permille': 500, 'max': 230, 'count': 4})]]
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 |
|---|---|---|---|
| regression: unanswered call at the end | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 100} | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 100} | Passed |
| sampled regression 4 | {'avg': 109, 'count': 6, 'long_permille': 166, 'max': 585} | {'avg': 109, 'count': 6, 'long_permille': 166, 'max': 585} | Passed |
| regression: long unanswered call | {'avg': 73, 'count': 3, 'long_permille': 333, 'max': 200} | {'avg': 73, 'count': 3, 'long_permille': 333, 'max': 200} | Passed |
| boundary: answer logged before registration | {'avg': 15, 'count': 2, 'long_permille': 0, 'max': 30} | {'avg': 15, 'count': 2, 'long_permille': 0, 'max': 30} | Passed |
| boundary: wait of exactly sixty seconds | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 61} | {'avg': 60, 'count': 2, 'long_permille': 500, 'max': 61} | Passed |
| sampled regression 1 | {'avg': 166, 'count': 8, 'long_permille': 625, 'max': 558} | {'avg': 166, 'count': 8, 'long_permille': 625, 'max': 558} | Passed |
| sampled regression 7 | {'avg': 115, 'count': 6, 'long_permille': 333, 'max': 500} | {'avg': 115, 'count': 6, 'long_permille': 333, 'max': 500} | Passed |
| control 10 | {'avg': 5, 'count': 1, 'long_permille': 0, 'max': 5} | {'avg': 5, 'count': 1, 'long_permille': 0, 'max': 5} | Passed |
SHA-256 / 3c484e7536d5091b646e0916ec9108a97a501d3bd2bd27d59e238d4581c19b23
Verification & scope
Stipulated toy lift-control contract for a bounded teaching model; it makes no claim of conformance to any lift code or vendor dispatcher and omits real safety cases. 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:53.682707+00:00.
Case digest / 25763f179b504986fe4459925eca8873d39f5fc1cdbf38c78abcead1879580b2