FAILURE MAP
← Case archive

FA-68066 / Traffic signal timing plans / Open access

Shortway offset transition: ties between directions pick shortening · case 01

Shortway offset transition returns a wrong result when ties between directions pick shortening.

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

ROOT CAUSE

Equal cycle counts choose shortening although the contract resolves ties toward lengthening.

VERIFIED REPAIR

Restore the direction selection rule so that the step reads `if nl <= ns:`.

Unsuccessful approach: Choosing by raw distance ignores that the two directions have different per-cycle limits.

Case contract

Input {cycle, current_offset, target_offset, lengthen_pct, shorten_pct}. The needed correction e = (target - current) mod cycle can be made by lengthening cycles by a total of e or shortening them by cycle - e. Per-cycle limits are floor(cycle*pct/100). Choose the direction needing fewer cycles (ties lengthen) and front-load the maximum adjustment each cycle. Return the list of transition cycle lengths ([] when already in step).

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

N = 1
observations = []
def solve(x):
    C = x['cycle']
    e = (x['target_offset'] - x['current_offset']) % C
    if e == 0:
        return []
    L = C * x['lengthen_pct'] // 100
    S = C * x['shorten_pct'] // 100
    nl = -(-e // L)
    ns = -(-(C - e) // S)
    if nl < ns:
        amt, step, sign = e, L, 1
    else:
        amt, step, sign = C - e, S, -1
    out = []
    while amt > 0:
        d = min(step, amt)
        out.append(C + sign * d)
        amt -= d
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'cycle': 60, 'current_offset': 49, 'target_offset': 26, 'lengthen_pct': 20, 'shorten_pct': 13}, [72, 72, 72, 61]), ({'cycle': 150, 'current_offset': 76, 'target_offset': 139, 'lengthen_pct': 20, 'shorten_pct': 20}, [180, 180, 153]), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 95, 'target_offset': 74, 'lengthen_pct': 10, 'shorten_pct': 10}, [90, 90, 99]), ({'cycle': 140, 'current_offset': 130, 'target_offset': 73, 'lengthen_pct': 20, 'shorten_pct': 17}, [168, 168, 167]), ({'cycle': 60, 'current_offset': 28, 'target_offset': 31, 'lengthen_pct': 17, 'shorten_pct': 13}, [63]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130])], [({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 70, 'current_offset': 5, 'target_offset': 46, 'lengthen_pct': 20, 'shorten_pct': 10}, [84, 84, 83]), ({'cycle': 120, 'current_offset': 24, 'target_offset': 105, 'lengthen_pct': 20, 'shorten_pct': 10}, [144, 144, 144, 129]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 150, 'current_offset': 78, 'target_offset': 16, 'lengthen_pct': 17, 'shorten_pct': 13}, [175, 175, 175, 163]), ({'cycle': 90, 'current_offset': 74, 'target_offset': 23, 'lengthen_pct': 17, 'shorten_pct': 20}, [105, 105, 99]), ({'cycle': 90, 'current_offset': 77, 'target_offset': 35, 'lengthen_pct': 25, 'shorten_pct': 13}, [112, 112, 94])], [({'cycle': 100, 'current_offset': 96, 'target_offset': 58, 'lengthen_pct': 25, 'shorten_pct': 10}, [125, 125, 112]), ({'cycle': 120, 'current_offset': 110, 'target_offset': 48, 'lengthen_pct': 10, 'shorten_pct': 13}, [132, 132, 132, 132, 130]), ({'cycle': 110, 'current_offset': 4, 'target_offset': 71, 'lengthen_pct': 25, 'shorten_pct': 13}, [137, 137, 123]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 150, 'current_offset': 34, 'target_offset': 105, 'lengthen_pct': 17, 'shorten_pct': 20}, [175, 175, 171]), ({'cycle': 90, 'current_offset': 33, 'target_offset': 78, 'lengthen_pct': 25, 'shorten_pct': 17}, [112, 112, 91]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120])], [({'cycle': 90, 'current_offset': 57, 'target_offset': 2, 'lengthen_pct': 10, 'shorten_pct': 20}, [99, 99, 99, 98]), ({'cycle': 110, 'current_offset': 14, 'target_offset': 86, 'lengthen_pct': 25, 'shorten_pct': 10}, [137, 137, 128]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 13, 'target_offset': 68, 'lengthen_pct': 25, 'shorten_pct': 17}, [112, 112, 101]), ({'cycle': 140, 'current_offset': 52, 'target_offset': 120, 'lengthen_pct': 17, 'shorten_pct': 20}, [163, 163, 162]), ({'cycle': 60, 'current_offset': 16, 'target_offset': 18, 'lengthen_pct': 10, 'shorten_pct': 20}, [62])], [({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 26, 'target_offset': 75, 'lengthen_pct': 20, 'shorten_pct': 13}, [108, 108, 103]), ({'cycle': 70, 'current_offset': 20, 'target_offset': 49, 'lengthen_pct': 10, 'shorten_pct': 20}, [56, 56, 57]), ({'cycle': 80, 'current_offset': 58, 'target_offset': 37, 'lengthen_pct': 25, 'shorten_pct': 10}, [100, 100, 99]), ({'cycle': 100, 'current_offset': 66, 'target_offset': 1, 'lengthen_pct': 10, 'shorten_pct': 17}, [110, 110, 110, 105]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 60, 'current_offset': 11, 'target_offset': 44, 'lengthen_pct': 17, 'shorten_pct': 13}, [70, 70, 70, 63])]]
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[53, 53, 53, 58][72, 72, 72, 61]Failed
timing oracle 1[120, 120, 123][180, 180, 153]Failed
timing oracle 2[120, 120][120, 120]Passed
timing oracle 3[][]Passed
timing oracle 4[90, 90, 99][90, 90, 99]Passed
timing oracle 5[117, 117, 129][168, 168, 167]Failed
timing oracle 6[63][63]Passed
timing oracle 7[140, 140, 130][140, 140, 130]Passed

SHA-256 / 5a9d41b24cfabe48a16d88b9c92f089a1765b04ec0c8f9a6c401f4bdc0857a4e

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    C = x['cycle']
    e = (x['target_offset'] - x['current_offset']) % C
    if e == 0:
        return []
    L = C * x['lengthen_pct'] // 100
    S = C * x['shorten_pct'] // 100
    nl = -(-e // L)
    ns = -(-(C - e) // S)
    if e <= C - e:
        amt, step, sign = e, L, 1
    else:
        amt, step, sign = C - e, S, -1
    out = []
    while amt > 0:
        d = min(step, amt)
        out.append(C + sign * d)
        amt -= d
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'cycle': 60, 'current_offset': 49, 'target_offset': 26, 'lengthen_pct': 20, 'shorten_pct': 13}, [72, 72, 72, 61]), ({'cycle': 150, 'current_offset': 76, 'target_offset': 139, 'lengthen_pct': 20, 'shorten_pct': 20}, [180, 180, 153]), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 95, 'target_offset': 74, 'lengthen_pct': 10, 'shorten_pct': 10}, [90, 90, 99]), ({'cycle': 140, 'current_offset': 130, 'target_offset': 73, 'lengthen_pct': 20, 'shorten_pct': 17}, [168, 168, 167]), ({'cycle': 60, 'current_offset': 28, 'target_offset': 31, 'lengthen_pct': 17, 'shorten_pct': 13}, [63]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130])], [({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 70, 'current_offset': 5, 'target_offset': 46, 'lengthen_pct': 20, 'shorten_pct': 10}, [84, 84, 83]), ({'cycle': 120, 'current_offset': 24, 'target_offset': 105, 'lengthen_pct': 20, 'shorten_pct': 10}, [144, 144, 144, 129]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 150, 'current_offset': 78, 'target_offset': 16, 'lengthen_pct': 17, 'shorten_pct': 13}, [175, 175, 175, 163]), ({'cycle': 90, 'current_offset': 74, 'target_offset': 23, 'lengthen_pct': 17, 'shorten_pct': 20}, [105, 105, 99]), ({'cycle': 90, 'current_offset': 77, 'target_offset': 35, 'lengthen_pct': 25, 'shorten_pct': 13}, [112, 112, 94])], [({'cycle': 100, 'current_offset': 96, 'target_offset': 58, 'lengthen_pct': 25, 'shorten_pct': 10}, [125, 125, 112]), ({'cycle': 120, 'current_offset': 110, 'target_offset': 48, 'lengthen_pct': 10, 'shorten_pct': 13}, [132, 132, 132, 132, 130]), ({'cycle': 110, 'current_offset': 4, 'target_offset': 71, 'lengthen_pct': 25, 'shorten_pct': 13}, [137, 137, 123]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 150, 'current_offset': 34, 'target_offset': 105, 'lengthen_pct': 17, 'shorten_pct': 20}, [175, 175, 171]), ({'cycle': 90, 'current_offset': 33, 'target_offset': 78, 'lengthen_pct': 25, 'shorten_pct': 17}, [112, 112, 91]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120])], [({'cycle': 90, 'current_offset': 57, 'target_offset': 2, 'lengthen_pct': 10, 'shorten_pct': 20}, [99, 99, 99, 98]), ({'cycle': 110, 'current_offset': 14, 'target_offset': 86, 'lengthen_pct': 25, 'shorten_pct': 10}, [137, 137, 128]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 13, 'target_offset': 68, 'lengthen_pct': 25, 'shorten_pct': 17}, [112, 112, 101]), ({'cycle': 140, 'current_offset': 52, 'target_offset': 120, 'lengthen_pct': 17, 'shorten_pct': 20}, [163, 163, 162]), ({'cycle': 60, 'current_offset': 16, 'target_offset': 18, 'lengthen_pct': 10, 'shorten_pct': 20}, [62])], [({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 26, 'target_offset': 75, 'lengthen_pct': 20, 'shorten_pct': 13}, [108, 108, 103]), ({'cycle': 70, 'current_offset': 20, 'target_offset': 49, 'lengthen_pct': 10, 'shorten_pct': 20}, [56, 56, 57]), ({'cycle': 80, 'current_offset': 58, 'target_offset': 37, 'lengthen_pct': 25, 'shorten_pct': 10}, [100, 100, 99]), ({'cycle': 100, 'current_offset': 66, 'target_offset': 1, 'lengthen_pct': 10, 'shorten_pct': 17}, [110, 110, 110, 105]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 60, 'current_offset': 11, 'target_offset': 44, 'lengthen_pct': 17, 'shorten_pct': 13}, [70, 70, 70, 63])]]
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[53, 53, 53, 58][72, 72, 72, 61]Failed
timing oracle 1[180, 180, 153][180, 180, 153]Passed
timing oracle 2[120, 120][120, 120]Passed
timing oracle 3[][]Passed
timing oracle 4[90, 90, 99][90, 90, 99]Passed
timing oracle 5[117, 117, 129][168, 168, 167]Failed
timing oracle 6[63][63]Passed
timing oracle 7[140, 140, 130][140, 140, 130]Passed

SHA-256 / 551bc93d5528347be438e10c1bb37df712bfe54a341b56a2e0f2e6f7a3ae0539

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    C = x['cycle']
    e = (x['target_offset'] - x['current_offset']) % C
    if e == 0:
        return []
    L = C * x['lengthen_pct'] // 100
    S = C * x['shorten_pct'] // 100
    nl = -(-e // L)
    ns = -(-(C - e) // S)
    if nl <= ns:
        amt, step, sign = e, L, 1
    else:
        amt, step, sign = C - e, S, -1
    out = []
    while amt > 0:
        d = min(step, amt)
        out.append(C + sign * d)
        amt -= d
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'cycle': 60, 'current_offset': 49, 'target_offset': 26, 'lengthen_pct': 20, 'shorten_pct': 13}, [72, 72, 72, 61]), ({'cycle': 150, 'current_offset': 76, 'target_offset': 139, 'lengthen_pct': 20, 'shorten_pct': 20}, [180, 180, 153]), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 95, 'target_offset': 74, 'lengthen_pct': 10, 'shorten_pct': 10}, [90, 90, 99]), ({'cycle': 140, 'current_offset': 130, 'target_offset': 73, 'lengthen_pct': 20, 'shorten_pct': 17}, [168, 168, 167]), ({'cycle': 60, 'current_offset': 28, 'target_offset': 31, 'lengthen_pct': 17, 'shorten_pct': 13}, [63]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130])], [({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 70, 'current_offset': 5, 'target_offset': 46, 'lengthen_pct': 20, 'shorten_pct': 10}, [84, 84, 83]), ({'cycle': 120, 'current_offset': 24, 'target_offset': 105, 'lengthen_pct': 20, 'shorten_pct': 10}, [144, 144, 144, 129]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 150, 'current_offset': 78, 'target_offset': 16, 'lengthen_pct': 17, 'shorten_pct': 13}, [175, 175, 175, 163]), ({'cycle': 90, 'current_offset': 74, 'target_offset': 23, 'lengthen_pct': 17, 'shorten_pct': 20}, [105, 105, 99]), ({'cycle': 90, 'current_offset': 77, 'target_offset': 35, 'lengthen_pct': 25, 'shorten_pct': 13}, [112, 112, 94])], [({'cycle': 100, 'current_offset': 96, 'target_offset': 58, 'lengthen_pct': 25, 'shorten_pct': 10}, [125, 125, 112]), ({'cycle': 120, 'current_offset': 110, 'target_offset': 48, 'lengthen_pct': 10, 'shorten_pct': 13}, [132, 132, 132, 132, 130]), ({'cycle': 110, 'current_offset': 4, 'target_offset': 71, 'lengthen_pct': 25, 'shorten_pct': 13}, [137, 137, 123]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 150, 'current_offset': 34, 'target_offset': 105, 'lengthen_pct': 17, 'shorten_pct': 20}, [175, 175, 171]), ({'cycle': 90, 'current_offset': 33, 'target_offset': 78, 'lengthen_pct': 25, 'shorten_pct': 17}, [112, 112, 91]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120])], [({'cycle': 90, 'current_offset': 57, 'target_offset': 2, 'lengthen_pct': 10, 'shorten_pct': 20}, [99, 99, 99, 98]), ({'cycle': 110, 'current_offset': 14, 'target_offset': 86, 'lengthen_pct': 25, 'shorten_pct': 10}, [137, 137, 128]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 13, 'target_offset': 68, 'lengthen_pct': 25, 'shorten_pct': 17}, [112, 112, 101]), ({'cycle': 140, 'current_offset': 52, 'target_offset': 120, 'lengthen_pct': 17, 'shorten_pct': 20}, [163, 163, 162]), ({'cycle': 60, 'current_offset': 16, 'target_offset': 18, 'lengthen_pct': 10, 'shorten_pct': 20}, [62])], [({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 90, 'current_offset': 26, 'target_offset': 75, 'lengthen_pct': 20, 'shorten_pct': 13}, [108, 108, 103]), ({'cycle': 70, 'current_offset': 20, 'target_offset': 49, 'lengthen_pct': 10, 'shorten_pct': 20}, [56, 56, 57]), ({'cycle': 80, 'current_offset': 58, 'target_offset': 37, 'lengthen_pct': 25, 'shorten_pct': 10}, [100, 100, 99]), ({'cycle': 100, 'current_offset': 66, 'target_offset': 1, 'lengthen_pct': 10, 'shorten_pct': 17}, [110, 110, 110, 105]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 60, 'current_offset': 11, 'target_offset': 44, 'lengthen_pct': 17, 'shorten_pct': 13}, [70, 70, 70, 63])]]
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[72, 72, 72, 61][72, 72, 72, 61]Passed
timing oracle 1[180, 180, 153][180, 180, 153]Passed
timing oracle 2[120, 120][120, 120]Passed
timing oracle 3[][]Passed
timing oracle 4[90, 90, 99][90, 90, 99]Passed
timing oracle 5[168, 168, 167][168, 168, 167]Passed
timing oracle 6[63][63]Passed
timing oracle 7[140, 140, 130][140, 140, 130]Passed

SHA-256 / 92827f7fdeaa1edcdde3d2bcb9a1a9b166e09c4114a6e69e97b029af28bb4e6d

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

Case digest / adb6db4ab636bfeee9c115aa5c78ddba2af40c79b39fad71f3adc297ce413513