FAILURE MAP
← Case archive

FA-67931 / Traffic signal timing plans / Open access

Yellow and all-red intervals: all-red ignores the vehicle length · case 01

Yellow and all-red intervals returns a wrong result when all-red ignores the vehicle length.

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

ROOT CAUSE

Only the intersection width is cleared; the rear of the vehicle is still inside when all-red ends.

VERIFIED REPAIR

Restore the clearance vehicle length rule so that the step reads `(w + x['veh_len_ft'])`.

Unsuccessful approach: Half a vehicle length still leaves the tail of the design vehicle in the conflict area.

Case contract

Input {speed_mph, grade_pct (uphill positive), reaction_tenths, decel ft/s^2, width_ft, veh_len_ft, crosswalk_ft, ped}. v = 1.467*speed ft/s; yellow = t + v/(2a + 2*32.2*grade/100), rounded UP to 0.1 s and clamped to [3.0, 6.0]; a non-positive denominator returns 'invalid'. All-red = (W + vehicle length)/v where W includes the far crosswalk when ped is true, rounded UP to 0.1 s and clamped to [1.0, 6.0]. Return tenths.

Why this case matters

Signal timing arithmetic is exact and integer or rational; a wrong rule silently produces unsafe or inefficient timing plans.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(x):
    v = Fraction(x['speed_mph']) * Fraction(1467, 1000)
    t = Fraction(x['reaction_tenths'], 10)
    den = 2 * x['decel'] + 2 * Fraction(322, 10) * Fraction(x['grade_pct'], 100)
    if den <= 0:
        return 'invalid'
    yl = max(30, min(60, math.ceil((t + v / den) * 10)))
    w = x['width_ft'] + (x['crosswalk_ft'] if x['ped'] else 0)
    rd = max(10, min(60, math.ceil(w / v * 10)))
    return {'yellow_tenths': yl, 'red_tenths': rd}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'speed_mph': 45, 'grade_pct': 3, 'reaction_tenths': 8, 'decel': 12, 'width_ft': 127, 'veh_len_ft': 40, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 34, 'red_tenths': 26}), ({'speed_mph': 65, 'grade_pct': -4, 'reaction_tenths': 15, 'decel': 11, 'width_ft': 56, 'veh_len_ft': 16, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 70, 'grade_pct': -3, 'reaction_tenths': 10, 'decel': 11, 'width_ft': 45, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -1, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 78, 'veh_len_ft': 16, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 12, 'width_ft': 49, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10})], [({'speed_mph': 50, 'grade_pct': 3, 'reaction_tenths': 8, 'decel': 10, 'width_ft': 76, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 42, 'red_tenths': 14}), ({'speed_mph': 65, 'grade_pct': 2, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 58, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 70, 'grade_pct': -4, 'reaction_tenths': 8, 'decel': 8, 'width_ft': 75, 'veh_len_ft': 25, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': 2, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 42, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 50, 'grade_pct': 0, 'reaction_tenths': 12, 'decel': 11, 'width_ft': 43, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 46, 'red_tenths': 10})], [({'speed_mph': 70, 'grade_pct': 4, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 56, 'veh_len_ft': 25, 'crosswalk_ft': 15, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -5, 'reaction_tenths': 8, 'decel': 10, 'width_ft': 43, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 50, 'grade_pct': 6, 'reaction_tenths': 8, 'decel': 11, 'width_ft': 118, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 37, 'red_tenths': 19}), ({'speed_mph': 40, 'grade_pct': 8, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 41, 'veh_len_ft': 16, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 38, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': 1, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 68, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 57, 'red_tenths': 10})], [({'speed_mph': 45, 'grade_pct': 6, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 43, 'veh_len_ft': 20, 'crosswalk_ft': 15, 'ped': False}, {'yellow_tenths': 43, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -4, 'reaction_tenths': 12, 'decel': 10, 'width_ft': 72, 'veh_len_ft': 25, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 12, 'decel': 12, 'width_ft': 136, 'veh_len_ft': 25, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 43, 'red_tenths': 25}), ({'speed_mph': 50, 'grade_pct': 6, 'reaction_tenths': 10, 'decel': 11, 'width_ft': 48, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 39, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 60, 'grade_pct': 2, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 59, 'veh_len_ft': 16, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10})], [({'speed_mph': 60, 'grade_pct': 3, 'reaction_tenths': 15, 'decel': 8, 'width_ft': 50, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 70, 'grade_pct': 6, 'reaction_tenths': 10, 'decel': 12, 'width_ft': 47, 'veh_len_ft': 25, 'crosswalk_ft': 15, 'ped': True}, {'yellow_tenths': 47, 'red_tenths': 10}), ({'speed_mph': 55, 'grade_pct': -4, 'reaction_tenths': 8, 'decel': 12, 'width_ft': 44, 'veh_len_ft': 16, 'crosswalk_ft': 15, 'ped': True}, {'yellow_tenths': 46, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -5, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 45, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 45, 'grade_pct': -3, 'reaction_tenths': 8, 'decel': 8, 'width_ft': 112, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 55, 'red_tenths': 20})]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check('timing 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
timing oracle 0{'red_tenths': 20, 'yellow_tenths': 34}{'red_tenths': 26, 'yellow_tenths': 34}Failed
timing oracle 1{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 2{'red_tenths': 14, 'yellow_tenths': 60}{'red_tenths': 16, 'yellow_tenths': 60}Failed
timing oracle 3{'red_tenths': 14, 'yellow_tenths': 33}{'red_tenths': 19, 'yellow_tenths': 33}Failed
timing oracle 4{'red_tenths': 14, 'yellow_tenths': 48}{'red_tenths': 17, 'yellow_tenths': 48}Failed
timing oracle 5{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 6{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 7{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed

SHA-256 / efe2001b04ba0c6e91360c32e22b15ee535c886d3add408f2b44bd9c283c60cd

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(x):
    v = Fraction(x['speed_mph']) * Fraction(1467, 1000)
    t = Fraction(x['reaction_tenths'], 10)
    den = 2 * x['decel'] + 2 * Fraction(322, 10) * Fraction(x['grade_pct'], 100)
    if den <= 0:
        return 'invalid'
    yl = max(30, min(60, math.ceil((t + v / den) * 10)))
    w = x['width_ft'] + (x['crosswalk_ft'] if x['ped'] else 0)
    rd = max(10, min(60, math.ceil((w + x['veh_len_ft'] // 2) / v * 10)))
    return {'yellow_tenths': yl, 'red_tenths': rd}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'speed_mph': 45, 'grade_pct': 3, 'reaction_tenths': 8, 'decel': 12, 'width_ft': 127, 'veh_len_ft': 40, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 34, 'red_tenths': 26}), ({'speed_mph': 65, 'grade_pct': -4, 'reaction_tenths': 15, 'decel': 11, 'width_ft': 56, 'veh_len_ft': 16, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 70, 'grade_pct': -3, 'reaction_tenths': 10, 'decel': 11, 'width_ft': 45, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -1, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 78, 'veh_len_ft': 16, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 12, 'width_ft': 49, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10})], [({'speed_mph': 50, 'grade_pct': 3, 'reaction_tenths': 8, 'decel': 10, 'width_ft': 76, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 42, 'red_tenths': 14}), ({'speed_mph': 65, 'grade_pct': 2, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 58, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 70, 'grade_pct': -4, 'reaction_tenths': 8, 'decel': 8, 'width_ft': 75, 'veh_len_ft': 25, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': 2, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 42, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 50, 'grade_pct': 0, 'reaction_tenths': 12, 'decel': 11, 'width_ft': 43, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 46, 'red_tenths': 10})], [({'speed_mph': 70, 'grade_pct': 4, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 56, 'veh_len_ft': 25, 'crosswalk_ft': 15, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -5, 'reaction_tenths': 8, 'decel': 10, 'width_ft': 43, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 50, 'grade_pct': 6, 'reaction_tenths': 8, 'decel': 11, 'width_ft': 118, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 37, 'red_tenths': 19}), ({'speed_mph': 40, 'grade_pct': 8, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 41, 'veh_len_ft': 16, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 38, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': 1, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 68, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 57, 'red_tenths': 10})], [({'speed_mph': 45, 'grade_pct': 6, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 43, 'veh_len_ft': 20, 'crosswalk_ft': 15, 'ped': False}, {'yellow_tenths': 43, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -4, 'reaction_tenths': 12, 'decel': 10, 'width_ft': 72, 'veh_len_ft': 25, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 12, 'decel': 12, 'width_ft': 136, 'veh_len_ft': 25, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 43, 'red_tenths': 25}), ({'speed_mph': 50, 'grade_pct': 6, 'reaction_tenths': 10, 'decel': 11, 'width_ft': 48, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 39, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 60, 'grade_pct': 2, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 59, 'veh_len_ft': 16, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10})], [({'speed_mph': 60, 'grade_pct': 3, 'reaction_tenths': 15, 'decel': 8, 'width_ft': 50, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 70, 'grade_pct': 6, 'reaction_tenths': 10, 'decel': 12, 'width_ft': 47, 'veh_len_ft': 25, 'crosswalk_ft': 15, 'ped': True}, {'yellow_tenths': 47, 'red_tenths': 10}), ({'speed_mph': 55, 'grade_pct': -4, 'reaction_tenths': 8, 'decel': 12, 'width_ft': 44, 'veh_len_ft': 16, 'crosswalk_ft': 15, 'ped': True}, {'yellow_tenths': 46, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -5, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 45, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 45, 'grade_pct': -3, 'reaction_tenths': 8, 'decel': 8, 'width_ft': 112, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 55, 'red_tenths': 20})]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check('timing 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
timing oracle 0{'red_tenths': 23, 'yellow_tenths': 34}{'red_tenths': 26, 'yellow_tenths': 34}Failed
timing oracle 1{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 2{'red_tenths': 15, 'yellow_tenths': 60}{'red_tenths': 16, 'yellow_tenths': 60}Failed
timing oracle 3{'red_tenths': 16, 'yellow_tenths': 33}{'red_tenths': 19, 'yellow_tenths': 33}Failed
timing oracle 4{'red_tenths': 16, 'yellow_tenths': 48}{'red_tenths': 17, 'yellow_tenths': 48}Failed
timing oracle 5{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 6{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 7{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed

SHA-256 / 49fd1122e7cf14c3ea3adb1e4ac4bdd8ee446c49139c54f8d544a9887a730c1e

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(x):
    v = Fraction(x['speed_mph']) * Fraction(1467, 1000)
    t = Fraction(x['reaction_tenths'], 10)
    den = 2 * x['decel'] + 2 * Fraction(322, 10) * Fraction(x['grade_pct'], 100)
    if den <= 0:
        return 'invalid'
    yl = max(30, min(60, math.ceil((t + v / den) * 10)))
    w = x['width_ft'] + (x['crosswalk_ft'] if x['ped'] else 0)
    rd = max(10, min(60, math.ceil((w + x['veh_len_ft']) / v * 10)))
    return {'yellow_tenths': yl, 'red_tenths': rd}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'speed_mph': 45, 'grade_pct': 3, 'reaction_tenths': 8, 'decel': 12, 'width_ft': 127, 'veh_len_ft': 40, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 34, 'red_tenths': 26}), ({'speed_mph': 65, 'grade_pct': -4, 'reaction_tenths': 15, 'decel': 11, 'width_ft': 56, 'veh_len_ft': 16, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 70, 'grade_pct': -3, 'reaction_tenths': 10, 'decel': 11, 'width_ft': 45, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -1, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 78, 'veh_len_ft': 16, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 12, 'width_ft': 49, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10})], [({'speed_mph': 50, 'grade_pct': 3, 'reaction_tenths': 8, 'decel': 10, 'width_ft': 76, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 42, 'red_tenths': 14}), ({'speed_mph': 65, 'grade_pct': 2, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 58, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 70, 'grade_pct': -4, 'reaction_tenths': 8, 'decel': 8, 'width_ft': 75, 'veh_len_ft': 25, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': 2, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 42, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 50, 'grade_pct': 0, 'reaction_tenths': 12, 'decel': 11, 'width_ft': 43, 'veh_len_ft': 16, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 46, 'red_tenths': 10})], [({'speed_mph': 70, 'grade_pct': 4, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 56, 'veh_len_ft': 25, 'crosswalk_ft': 15, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -5, 'reaction_tenths': 8, 'decel': 10, 'width_ft': 43, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 50, 'grade_pct': 6, 'reaction_tenths': 8, 'decel': 11, 'width_ft': 118, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 37, 'red_tenths': 19}), ({'speed_mph': 40, 'grade_pct': 8, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 41, 'veh_len_ft': 16, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 38, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': 1, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 68, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 57, 'red_tenths': 10})], [({'speed_mph': 45, 'grade_pct': 6, 'reaction_tenths': 15, 'decel': 10, 'width_ft': 43, 'veh_len_ft': 20, 'crosswalk_ft': 15, 'ped': False}, {'yellow_tenths': 43, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -4, 'reaction_tenths': 12, 'decel': 10, 'width_ft': 72, 'veh_len_ft': 25, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 12, 'decel': 12, 'width_ft': 136, 'veh_len_ft': 25, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 43, 'red_tenths': 25}), ({'speed_mph': 50, 'grade_pct': 6, 'reaction_tenths': 10, 'decel': 11, 'width_ft': 48, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 39, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 60, 'grade_pct': 2, 'reaction_tenths': 10, 'decel': 8, 'width_ft': 59, 'veh_len_ft': 16, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10})], [({'speed_mph': 60, 'grade_pct': 3, 'reaction_tenths': 15, 'decel': 8, 'width_ft': 50, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 65, 'grade_pct': -7, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 120, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 60, 'red_tenths': 16}), ({'speed_mph': 30, 'grade_pct': 0, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 60, 'veh_len_ft': 20, 'crosswalk_ft': 12, 'ped': False}, {'yellow_tenths': 33, 'red_tenths': 19}), ({'speed_mph': 70, 'grade_pct': 6, 'reaction_tenths': 10, 'decel': 12, 'width_ft': 47, 'veh_len_ft': 25, 'crosswalk_ft': 15, 'ped': True}, {'yellow_tenths': 47, 'red_tenths': 10}), ({'speed_mph': 55, 'grade_pct': -4, 'reaction_tenths': 8, 'decel': 12, 'width_ft': 44, 'veh_len_ft': 16, 'crosswalk_ft': 15, 'ped': True}, {'yellow_tenths': 46, 'red_tenths': 10}), ({'speed_mph': 70, 'grade_pct': -5, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 45, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': False}, {'yellow_tenths': 60, 'red_tenths': 10}), ({'speed_mph': 45, 'grade_pct': -4, 'reaction_tenths': 10, 'decel': 10, 'width_ft': 80, 'veh_len_ft': 20, 'crosswalk_ft': 10, 'ped': True}, {'yellow_tenths': 48, 'red_tenths': 17}), ({'speed_mph': 45, 'grade_pct': -3, 'reaction_tenths': 8, 'decel': 8, 'width_ft': 112, 'veh_len_ft': 20, 'crosswalk_ft': 8, 'ped': False}, {'yellow_tenths': 55, 'red_tenths': 20})]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check('timing 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
timing oracle 0{'red_tenths': 26, 'yellow_tenths': 34}{'red_tenths': 26, 'yellow_tenths': 34}Passed
timing oracle 1{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 2{'red_tenths': 16, 'yellow_tenths': 60}{'red_tenths': 16, 'yellow_tenths': 60}Passed
timing oracle 3{'red_tenths': 19, 'yellow_tenths': 33}{'red_tenths': 19, 'yellow_tenths': 33}Passed
timing oracle 4{'red_tenths': 17, 'yellow_tenths': 48}{'red_tenths': 17, 'yellow_tenths': 48}Passed
timing oracle 5{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 6{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed
timing oracle 7{'red_tenths': 10, 'yellow_tenths': 60}{'red_tenths': 10, 'yellow_tenths': 60}Passed

SHA-256 / 4d562cd8c1353a4b3569845db3a2489153942996952e14e2f1dbc1cb5439c623

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:47:57.503028+00:00.

Case digest / 7b7bb182527af43ff97be50ba09ae0fc1e84d3c2d15512f5426bc5bee532aa59