FAILURE MAP
← Case archive

FA-68061 / Traffic signal timing plans / Open access

Shortway offset transition: shortening cycles are counted against the lengthening distance · case 01

Shortway offset transition returns a wrong result when shortening cycles are counted against the lengthening distance.

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

ROOT CAUSE

The shortening option is evaluated with the same distance e, not its complement, so direction choice is wrong.

VERIFIED REPAIR

Restore the shortening distance rule so that the step reads `ns = -(-(C - e) // S)`.

Unsuccessful approach: Using the lengthening limit for the shortening distance mis-counts cycles when the two limits differ.

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 = -(-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': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 70, 'current_offset': 19, 'target_offset': 63, 'lengthen_pct': 20, 'shorten_pct': 10}, [84, 84, 84, 72]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 71, 'target_offset': 22, 'lengthen_pct': 10, 'shorten_pct': 17}, [88, 88, 88, 87]), ({'cycle': 140, 'current_offset': 46, 'target_offset': 28, 'lengthen_pct': 10, 'shorten_pct': 10}, [126, 136]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 110, 'current_offset': 59, 'target_offset': 33, 'lengthen_pct': 20, 'shorten_pct': 20}, [88, 106]), ({'cycle': 80, 'current_offset': 2, 'target_offset': 61, 'lengthen_pct': 25, 'shorten_pct': 13}, [100, 100, 99])], [({'cycle': 130, 'current_offset': 69, 'target_offset': 17, 'lengthen_pct': 25, 'shorten_pct': 13}, [162, 162, 144]), ({'cycle': 100, 'current_offset': 76, 'target_offset': 99, 'lengthen_pct': 10, 'shorten_pct': 13}, [110, 110, 103]), ({'cycle': 80, 'current_offset': 35, 'target_offset': 9, 'lengthen_pct': 10, 'shorten_pct': 10}, [72, 72, 72, 78]), ({'cycle': 90, 'current_offset': 56, 'target_offset': 42, 'lengthen_pct': 25, 'shorten_pct': 17}, [76]), ({'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': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 38, 'target_offset': 3, 'lengthen_pct': 17, 'shorten_pct': 13}, [93, 93, 93, 86])], [({'cycle': 70, 'current_offset': 19, 'target_offset': 15, 'lengthen_pct': 20, 'shorten_pct': 20}, [66]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 120, 'current_offset': 78, 'target_offset': 10, 'lengthen_pct': 10, 'shorten_pct': 17}, [100, 100, 100, 112]), ({'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': 110, 'current_offset': 65, 'target_offset': 28, 'lengthen_pct': 17, 'shorten_pct': 13}, [96, 96, 101]), ({'cycle': 80, 'current_offset': 21, 'target_offset': 2, 'lengthen_pct': 17, 'shorten_pct': 17}, [67, 74]), ({'cycle': 140, 'current_offset': 139, 'target_offset': 94, 'lengthen_pct': 25, 'shorten_pct': 13}, [175, 175, 165])], [({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 73, 'target_offset': 46, 'lengthen_pct': 17, 'shorten_pct': 10}, [72, 72, 72, 77]), ({'cycle': 70, 'current_offset': 29, 'target_offset': 68, 'lengthen_pct': 17, 'shorten_pct': 13}, [81, 81, 81, 76]), ({'cycle': 140, 'current_offset': 9, 'target_offset': 97, 'lengthen_pct': 25, 'shorten_pct': 10}, [175, 175, 158]), ({'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': 150, 'current_offset': 81, 'target_offset': 103, 'lengthen_pct': 10, 'shorten_pct': 20}, [165, 157]), ({'cycle': 60, 'current_offset': 39, 'target_offset': 31, 'lengthen_pct': 25, 'shorten_pct': 17}, [52])], [({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 110, 'current_offset': 10, 'target_offset': 39, 'lengthen_pct': 10, 'shorten_pct': 20}, [121, 121, 117]), ({'cycle': 90, 'current_offset': 85, 'target_offset': 51, 'lengthen_pct': 25, 'shorten_pct': 10}, [112, 112, 102]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 60, 'current_offset': 31, 'target_offset': 24, 'lengthen_pct': 17, 'shorten_pct': 17}, [53]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 60, 'current_offset': 0, 'target_offset': 34, 'lengthen_pct': 17, 'shorten_pct': 13}, [70, 70, 70, 64]), ({'cycle': 150, 'current_offset': 135, 'target_offset': 114, 'lengthen_pct': 17, 'shorten_pct': 13}, [131, 148])]]
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[120, 120][120, 120]Passed
timing oracle 1[84, 84, 84, 72][84, 84, 84, 72]Passed
timing oracle 2[140, 140, 130][140, 140, 130]Passed
timing oracle 3[67, 67, 67, 70][88, 88, 88, 87]Failed
timing oracle 4[154, 154, 154, 154, 154, 154, 154, 154, 150][126, 136]Failed
timing oracle 5[][]Passed
timing oracle 6[132, 132, 132, 128][88, 106]Failed
timing oracle 7[100, 100, 99][100, 100, 99]Passed

SHA-256 / a3bcf54d961a3445d8dd7a8a6b11e74868ebb33ef38c66978b5ccaa9c20eab25

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) // L)
    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': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 70, 'current_offset': 19, 'target_offset': 63, 'lengthen_pct': 20, 'shorten_pct': 10}, [84, 84, 84, 72]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 71, 'target_offset': 22, 'lengthen_pct': 10, 'shorten_pct': 17}, [88, 88, 88, 87]), ({'cycle': 140, 'current_offset': 46, 'target_offset': 28, 'lengthen_pct': 10, 'shorten_pct': 10}, [126, 136]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 110, 'current_offset': 59, 'target_offset': 33, 'lengthen_pct': 20, 'shorten_pct': 20}, [88, 106]), ({'cycle': 80, 'current_offset': 2, 'target_offset': 61, 'lengthen_pct': 25, 'shorten_pct': 13}, [100, 100, 99])], [({'cycle': 130, 'current_offset': 69, 'target_offset': 17, 'lengthen_pct': 25, 'shorten_pct': 13}, [162, 162, 144]), ({'cycle': 100, 'current_offset': 76, 'target_offset': 99, 'lengthen_pct': 10, 'shorten_pct': 13}, [110, 110, 103]), ({'cycle': 80, 'current_offset': 35, 'target_offset': 9, 'lengthen_pct': 10, 'shorten_pct': 10}, [72, 72, 72, 78]), ({'cycle': 90, 'current_offset': 56, 'target_offset': 42, 'lengthen_pct': 25, 'shorten_pct': 17}, [76]), ({'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': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 38, 'target_offset': 3, 'lengthen_pct': 17, 'shorten_pct': 13}, [93, 93, 93, 86])], [({'cycle': 70, 'current_offset': 19, 'target_offset': 15, 'lengthen_pct': 20, 'shorten_pct': 20}, [66]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 120, 'current_offset': 78, 'target_offset': 10, 'lengthen_pct': 10, 'shorten_pct': 17}, [100, 100, 100, 112]), ({'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': 110, 'current_offset': 65, 'target_offset': 28, 'lengthen_pct': 17, 'shorten_pct': 13}, [96, 96, 101]), ({'cycle': 80, 'current_offset': 21, 'target_offset': 2, 'lengthen_pct': 17, 'shorten_pct': 17}, [67, 74]), ({'cycle': 140, 'current_offset': 139, 'target_offset': 94, 'lengthen_pct': 25, 'shorten_pct': 13}, [175, 175, 165])], [({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 73, 'target_offset': 46, 'lengthen_pct': 17, 'shorten_pct': 10}, [72, 72, 72, 77]), ({'cycle': 70, 'current_offset': 29, 'target_offset': 68, 'lengthen_pct': 17, 'shorten_pct': 13}, [81, 81, 81, 76]), ({'cycle': 140, 'current_offset': 9, 'target_offset': 97, 'lengthen_pct': 25, 'shorten_pct': 10}, [175, 175, 158]), ({'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': 150, 'current_offset': 81, 'target_offset': 103, 'lengthen_pct': 10, 'shorten_pct': 20}, [165, 157]), ({'cycle': 60, 'current_offset': 39, 'target_offset': 31, 'lengthen_pct': 25, 'shorten_pct': 17}, [52])], [({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 110, 'current_offset': 10, 'target_offset': 39, 'lengthen_pct': 10, 'shorten_pct': 20}, [121, 121, 117]), ({'cycle': 90, 'current_offset': 85, 'target_offset': 51, 'lengthen_pct': 25, 'shorten_pct': 10}, [112, 112, 102]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 60, 'current_offset': 31, 'target_offset': 24, 'lengthen_pct': 17, 'shorten_pct': 17}, [53]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 60, 'current_offset': 0, 'target_offset': 34, 'lengthen_pct': 17, 'shorten_pct': 13}, [70, 70, 70, 64]), ({'cycle': 150, 'current_offset': 135, 'target_offset': 114, 'lengthen_pct': 17, 'shorten_pct': 13}, [131, 148])]]
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[120, 120][120, 120]Passed
timing oracle 1[63, 63, 63, 65][84, 84, 84, 72]Failed
timing oracle 2[140, 140, 130][140, 140, 130]Passed
timing oracle 3[88, 88, 88, 87][88, 88, 88, 87]Passed
timing oracle 4[126, 136][126, 136]Passed
timing oracle 5[][]Passed
timing oracle 6[88, 106][88, 106]Passed
timing oracle 7[70, 70, 79][100, 100, 99]Failed

SHA-256 / fe5bf73882ac5fc4466da7d0785c9a448e5987a841ea54eec79897c1cb50ab10

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': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 70, 'current_offset': 19, 'target_offset': 63, 'lengthen_pct': 20, 'shorten_pct': 10}, [84, 84, 84, 72]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 71, 'target_offset': 22, 'lengthen_pct': 10, 'shorten_pct': 17}, [88, 88, 88, 87]), ({'cycle': 140, 'current_offset': 46, 'target_offset': 28, 'lengthen_pct': 10, 'shorten_pct': 10}, [126, 136]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 110, 'current_offset': 59, 'target_offset': 33, 'lengthen_pct': 20, 'shorten_pct': 20}, [88, 106]), ({'cycle': 80, 'current_offset': 2, 'target_offset': 61, 'lengthen_pct': 25, 'shorten_pct': 13}, [100, 100, 99])], [({'cycle': 130, 'current_offset': 69, 'target_offset': 17, 'lengthen_pct': 25, 'shorten_pct': 13}, [162, 162, 144]), ({'cycle': 100, 'current_offset': 76, 'target_offset': 99, 'lengthen_pct': 10, 'shorten_pct': 13}, [110, 110, 103]), ({'cycle': 80, 'current_offset': 35, 'target_offset': 9, 'lengthen_pct': 10, 'shorten_pct': 10}, [72, 72, 72, 78]), ({'cycle': 90, 'current_offset': 56, 'target_offset': 42, 'lengthen_pct': 25, 'shorten_pct': 17}, [76]), ({'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': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 38, 'target_offset': 3, 'lengthen_pct': 17, 'shorten_pct': 13}, [93, 93, 93, 86])], [({'cycle': 70, 'current_offset': 19, 'target_offset': 15, 'lengthen_pct': 20, 'shorten_pct': 20}, [66]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 120, 'current_offset': 78, 'target_offset': 10, 'lengthen_pct': 10, 'shorten_pct': 17}, [100, 100, 100, 112]), ({'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': 110, 'current_offset': 65, 'target_offset': 28, 'lengthen_pct': 17, 'shorten_pct': 13}, [96, 96, 101]), ({'cycle': 80, 'current_offset': 21, 'target_offset': 2, 'lengthen_pct': 17, 'shorten_pct': 17}, [67, 74]), ({'cycle': 140, 'current_offset': 139, 'target_offset': 94, 'lengthen_pct': 25, 'shorten_pct': 13}, [175, 175, 165])], [({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 80, 'current_offset': 73, 'target_offset': 46, 'lengthen_pct': 17, 'shorten_pct': 10}, [72, 72, 72, 77]), ({'cycle': 70, 'current_offset': 29, 'target_offset': 68, 'lengthen_pct': 17, 'shorten_pct': 13}, [81, 81, 81, 76]), ({'cycle': 140, 'current_offset': 9, 'target_offset': 97, 'lengthen_pct': 25, 'shorten_pct': 10}, [175, 175, 158]), ({'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': 150, 'current_offset': 81, 'target_offset': 103, 'lengthen_pct': 10, 'shorten_pct': 20}, [165, 157]), ({'cycle': 60, 'current_offset': 39, 'target_offset': 31, 'lengthen_pct': 25, 'shorten_pct': 17}, [52])], [({'cycle': 100, 'current_offset': 10, 'target_offset': 50, 'lengthen_pct': 20, 'shorten_pct': 20}, [120, 120]), ({'cycle': 110, 'current_offset': 10, 'target_offset': 39, 'lengthen_pct': 10, 'shorten_pct': 20}, [121, 121, 117]), ({'cycle': 90, 'current_offset': 85, 'target_offset': 51, 'lengthen_pct': 25, 'shorten_pct': 10}, [112, 112, 102]), ({'cycle': 90, 'current_offset': 30, 'target_offset': 30, 'lengthen_pct': 20, 'shorten_pct': 17}, []), ({'cycle': 60, 'current_offset': 31, 'target_offset': 24, 'lengthen_pct': 17, 'shorten_pct': 17}, [53]), ({'cycle': 120, 'current_offset': 90, 'target_offset': 20, 'lengthen_pct': 17, 'shorten_pct': 13}, [140, 140, 130]), ({'cycle': 60, 'current_offset': 0, 'target_offset': 34, 'lengthen_pct': 17, 'shorten_pct': 13}, [70, 70, 70, 64]), ({'cycle': 150, 'current_offset': 135, 'target_offset': 114, 'lengthen_pct': 17, 'shorten_pct': 13}, [131, 148])]]
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[120, 120][120, 120]Passed
timing oracle 1[84, 84, 84, 72][84, 84, 84, 72]Passed
timing oracle 2[140, 140, 130][140, 140, 130]Passed
timing oracle 3[88, 88, 88, 87][88, 88, 88, 87]Passed
timing oracle 4[126, 136][126, 136]Passed
timing oracle 5[][]Passed
timing oracle 6[88, 106][88, 106]Passed
timing oracle 7[100, 100, 99][100, 100, 99]Passed

SHA-256 / 7d3414503f5e189762c1c38cd8e32cc4c3457e23197e48a9fac3a33dbab6930f

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

Case digest / 41f42fafa4a802ad169be1e8e22f709fa3e71b688b3724c6dcfb0207a83386ec