FAILURE MAP
← Case archive

FA-92951 / EV charging session scheduling / Open access

Charging profile stack resolution: period ordering · case 01

The applied limit depends on the order periods were listed in the message.

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

ROOT CAUSE

Periods are scanned in list order, so a later-listed earlier period overwrites the current one.

VERIFIED REPAIR

Sort periods by offset before picking the last one that has started.

Unsuccessful approach: Reverse sorting keeps the earliest started period instead of the latest.

Case contract

Each profile has purpose max/default/tx, stack level, validity [valid_from, valid_to) (valid_to None = open), kind absolute (origin valid_from) or relative (origin session_start; skipped when no session) and periods [[offset, amps]] in any order. A profile yields the amps of the last period with offset <= t-origin, or nothing before its first period. Per purpose the highest stack wins (ties: earlier profile). tx replaces default. Effective limit is the minimum of max, tx-or-default and hw_max, ties resolved in that order. Return [amps, source].

Why this case matters

Depot, workplace and public EV chargers schedule sessions against prices, circuit limits and departure deadlines; a wrong decision silently strands a driver or overloads a feeder.

1 / The failure

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

N = 1
observations = []
def solve(profiles, t, session_start, hw_max):
    best = {}
    for p in profiles:
        if not (p['valid_from'] <= t and (p['valid_to'] is None or t < p['valid_to'])):
            continue
        if p['kind'] == 'relative':
            if session_start is None:
                continue
            origin = session_start
        else:
            origin = p['valid_from']
        el = t - origin
        lim = None
        for off, val in p['periods']:
            if off <= el:
                lim = val
        if lim is None:
            continue
        cur = best.get(p['purpose'])
        if cur is None or p['stack'] > cur[0]:
            best[p['purpose']] = [p['stack'], lim]
    cands = []
    if 'max' in best:
        cands.append(['max', best['max'][1]])
    if 'tx' in best:
        cands.append(['tx', best['tx'][1]])
    elif 'default' in best:
        cands.append(['default', best['default'][1]])
    cands.append(['hw', hw_max])
    win = cands[0]
    for c in cands[1:]:
        if c[1] < win[1]:
            win = c
    return [win[1], win[0]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 45,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 32], [45, 20], [5, 16]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 58,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 10], [45, 32], [0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 42,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 10], [0, 32]]}],
    56, None, 24],
   [24, 'hw']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 11,
      'valid_to': 58,
      'kind': 'absolute',
      'periods': [[20, 32], [30, 20]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 23,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 16]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 57,
      'valid_to': 98,
      'kind': 'relative',
      'periods': [[10, 6], [0, 10], [0, 20]]}],
    100, 56, 16],
   [16, 'tx']],
  ['control 1',
   [[{'purpose': 'max',
      'stack': 1,
      'valid_from': 44,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 10], [0, 10], [5, 10]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 7,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 10], [30, 20]]}],
    3, None, 24],
   [24, 'hw']],
  ['control 2',
   [[{'purpose': 'max',
      'stack': 2,
      'valid_from': 11,
      'valid_to': 21,
      'kind': 'relative',
      'periods': [[30, 32], [10, 20], [45, 6]]},
     {'purpose': 'max',
      'stack': 1,
      'valid_from': 14,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 32]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 19,
      'valid_to': 56,
      'kind': 'absolute',
      'periods': [[0, 6], [45, 10], [20, 16]]},
     {'purpose': 'max',
      'stack': 1,
      'valid_from': 53,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 10], [0, 32], [0, 20]]}],
    97, None, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 7,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[45, 16], [20, 6]]}],
    100, None, 24],
   [16, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 10,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 16], [20, 32], [45, 10]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 24,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 16], [5, 32], [5, 10]]}],
    90, 50, 24],
   [10, 'tx']],
  ['control 1',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 20,
      'valid_to': 56,
      'kind': 'relative',
      'periods': [[20, 10], [10, 20]]}],
    53, 38, 24],
   [20, 'default']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 43,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 32]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 44,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 32], [45, 6], [20, 20]]}],
    88, 57, 24],
   [24, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 5,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 6]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 56,
      'valid_to': 120,
      'kind': 'absolute',
      'periods': [[45, 32], [45, 16]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 56,
      'valid_to': 77,
      'kind': 'absolute',
      'periods': [[10, 10], [0, 32]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 4,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 16], [20, 16], [5, 6]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 53,
      'valid_to': 121,
      'kind': 'relative',
      'periods': [[0, 32], [0, 6]]}],
    58, 13, 16],
   [16, 'hw']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 18,
      'valid_to': 34,
      'kind': 'relative',
      'periods': [[30, 16], [20, 10], [5, 10]]},
     {'purpose': 'max',
      'stack': 2,
      'valid_from': 21,
      'valid_to': 43,
      'kind': 'relative',
      'periods': [[45, 20], [10, 16], [5, 10]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 59,
      'valid_to': 88,
      'kind': 'absolute',
      'periods': [[0, 10], [10, 20]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 41,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 20], [10, 10], [20, 10]]}],
    69, None, 24],
   [20, 'tx']],
  ['control 1',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 29,
      'valid_to': 52,
      'kind': 'absolute',
      'periods': [[30, 16], [45, 32], [0, 16]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 13,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [0, 10], [45, 16]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 58,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 16]]}],
    74, None, 24],
   [16, 'max']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 8,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6], [10, 6], [20, 32]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 59,
      'valid_to': 85,
      'kind': 'absolute',
      'periods': [[5, 6], [5, 20], [30, 20]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 29,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 10], [30, 10]]}],
    15, 48, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'max',
      'stack': 0,
      'valid_from': 9,
      'valid_to': 26,
      'kind': 'absolute',
      'periods': [[30, 6]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 36,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6], [10, 32], [10, 10]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 54,
      'valid_to': 130,
      'kind': 'relative',
      'periods': [[30, 32], [10, 10], [30, 6]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 29,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 20], [5, 32]]}],
    81, 13, 32],
   [32, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 6,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 10], [45, 16]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 2,
      'valid_to': 37,
      'kind': 'relative',
      'periods': [[45, 10], [10, 32]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 38,
      'valid_to': 48,
      'kind': 'absolute',
      'periods': [[5, 10]]}],
    53, None, 24],
   [16, 'default']],
  ['control 1',
   [[{'purpose': 'max',
      'stack': 2,
      'valid_from': 22,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[30, 6]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 34,
      'valid_to': 106,
      'kind': 'absolute',
      'periods': [[30, 16], [30, 10]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 11,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 6], [30, 20]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 26,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[5, 6], [5, 6], [45, 10]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 12,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 32], [20, 6]]}],
    77, None, 24],
   [20, 'tx']],
  ['control 2',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 55,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[5, 10], [30, 10]]}],
    25, 14, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 56,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 10], [0, 6], [0, 20]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 23,
      'valid_to': 53,
      'kind': 'relative',
      'periods': [[10, 10], [5, 20], [45, 20]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 59,
      'valid_to': 135,
      'kind': 'absolute',
      'periods': [[0, 32]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 59,
      'valid_to': 130,
      'kind': 'relative',
      'periods': [[0, 16], [20, 32], [30, 20]]}],
    51, 36, 16],
   [10, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 24,
      'valid_to': 78,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 20]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 1,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 20], [0, 10], [0, 16]]}],
    99, None, 32],
   [20, 'default']],
  ['control 1',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 8,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6]]}],
    71, 15, 16],
   [6, 'tx']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 39,
      'valid_to': 108,
      'kind': 'absolute',
      'periods': [[20, 16], [30, 32], [20, 20]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 45,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[5, 20]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 21,
      'valid_to': 46,
      'kind': 'absolute',
      'periods': [[5, 20]]}],
    34, None, 24],
   [20, 'default']]]]
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 fixtureActualExpectedOutcome
boundary: profile expires at t[32, 'hw'][32, 'hw']Passed
boundary: relative profile without session[32, 'hw'][32, 'hw']Passed
boundary: tx overrides lower default[20, 'tx'][20, 'tx']Passed
regression: period ordering[16, 'default'][24, 'hw']Failed
regression: period ordering (partial repair)[16, 'tx'][16, 'tx']Passed
control 1[24, 'hw'][24, 'hw']Passed
control 2[16, 'hw'][16, 'hw']Passed

SHA-256 / eb5ee951fb9a93c39d7565139259a3f260fd14870a9adb7ab8b6619f1d6df88c

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(profiles, t, session_start, hw_max):
    best = {}
    for p in profiles:
        if not (p['valid_from'] <= t and (p['valid_to'] is None or t < p['valid_to'])):
            continue
        if p['kind'] == 'relative':
            if session_start is None:
                continue
            origin = session_start
        else:
            origin = p['valid_from']
        el = t - origin
        lim = None
        for off, val in sorted(p['periods'], reverse=True):
            if off <= el:
                lim = val
        if lim is None:
            continue
        cur = best.get(p['purpose'])
        if cur is None or p['stack'] > cur[0]:
            best[p['purpose']] = [p['stack'], lim]
    cands = []
    if 'max' in best:
        cands.append(['max', best['max'][1]])
    if 'tx' in best:
        cands.append(['tx', best['tx'][1]])
    elif 'default' in best:
        cands.append(['default', best['default'][1]])
    cands.append(['hw', hw_max])
    win = cands[0]
    for c in cands[1:]:
        if c[1] < win[1]:
            win = c
    return [win[1], win[0]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 45,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 32], [45, 20], [5, 16]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 58,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 10], [45, 32], [0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 42,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 10], [0, 32]]}],
    56, None, 24],
   [24, 'hw']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 11,
      'valid_to': 58,
      'kind': 'absolute',
      'periods': [[20, 32], [30, 20]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 23,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 16]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 57,
      'valid_to': 98,
      'kind': 'relative',
      'periods': [[10, 6], [0, 10], [0, 20]]}],
    100, 56, 16],
   [16, 'tx']],
  ['control 1',
   [[{'purpose': 'max',
      'stack': 1,
      'valid_from': 44,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 10], [0, 10], [5, 10]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 7,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 10], [30, 20]]}],
    3, None, 24],
   [24, 'hw']],
  ['control 2',
   [[{'purpose': 'max',
      'stack': 2,
      'valid_from': 11,
      'valid_to': 21,
      'kind': 'relative',
      'periods': [[30, 32], [10, 20], [45, 6]]},
     {'purpose': 'max',
      'stack': 1,
      'valid_from': 14,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 32]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 19,
      'valid_to': 56,
      'kind': 'absolute',
      'periods': [[0, 6], [45, 10], [20, 16]]},
     {'purpose': 'max',
      'stack': 1,
      'valid_from': 53,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 10], [0, 32], [0, 20]]}],
    97, None, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 7,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[45, 16], [20, 6]]}],
    100, None, 24],
   [16, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 10,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 16], [20, 32], [45, 10]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 24,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 16], [5, 32], [5, 10]]}],
    90, 50, 24],
   [10, 'tx']],
  ['control 1',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 20,
      'valid_to': 56,
      'kind': 'relative',
      'periods': [[20, 10], [10, 20]]}],
    53, 38, 24],
   [20, 'default']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 43,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 32]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 44,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 32], [45, 6], [20, 20]]}],
    88, 57, 24],
   [24, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 5,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 6]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 56,
      'valid_to': 120,
      'kind': 'absolute',
      'periods': [[45, 32], [45, 16]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 56,
      'valid_to': 77,
      'kind': 'absolute',
      'periods': [[10, 10], [0, 32]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 4,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 16], [20, 16], [5, 6]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 53,
      'valid_to': 121,
      'kind': 'relative',
      'periods': [[0, 32], [0, 6]]}],
    58, 13, 16],
   [16, 'hw']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 18,
      'valid_to': 34,
      'kind': 'relative',
      'periods': [[30, 16], [20, 10], [5, 10]]},
     {'purpose': 'max',
      'stack': 2,
      'valid_from': 21,
      'valid_to': 43,
      'kind': 'relative',
      'periods': [[45, 20], [10, 16], [5, 10]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 59,
      'valid_to': 88,
      'kind': 'absolute',
      'periods': [[0, 10], [10, 20]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 41,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 20], [10, 10], [20, 10]]}],
    69, None, 24],
   [20, 'tx']],
  ['control 1',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 29,
      'valid_to': 52,
      'kind': 'absolute',
      'periods': [[30, 16], [45, 32], [0, 16]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 13,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [0, 10], [45, 16]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 58,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 16]]}],
    74, None, 24],
   [16, 'max']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 8,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6], [10, 6], [20, 32]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 59,
      'valid_to': 85,
      'kind': 'absolute',
      'periods': [[5, 6], [5, 20], [30, 20]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 29,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 10], [30, 10]]}],
    15, 48, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'max',
      'stack': 0,
      'valid_from': 9,
      'valid_to': 26,
      'kind': 'absolute',
      'periods': [[30, 6]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 36,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6], [10, 32], [10, 10]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 54,
      'valid_to': 130,
      'kind': 'relative',
      'periods': [[30, 32], [10, 10], [30, 6]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 29,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 20], [5, 32]]}],
    81, 13, 32],
   [32, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 6,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 10], [45, 16]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 2,
      'valid_to': 37,
      'kind': 'relative',
      'periods': [[45, 10], [10, 32]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 38,
      'valid_to': 48,
      'kind': 'absolute',
      'periods': [[5, 10]]}],
    53, None, 24],
   [16, 'default']],
  ['control 1',
   [[{'purpose': 'max',
      'stack': 2,
      'valid_from': 22,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[30, 6]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 34,
      'valid_to': 106,
      'kind': 'absolute',
      'periods': [[30, 16], [30, 10]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 11,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 6], [30, 20]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 26,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[5, 6], [5, 6], [45, 10]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 12,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 32], [20, 6]]}],
    77, None, 24],
   [20, 'tx']],
  ['control 2',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 55,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[5, 10], [30, 10]]}],
    25, 14, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 56,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 10], [0, 6], [0, 20]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 23,
      'valid_to': 53,
      'kind': 'relative',
      'periods': [[10, 10], [5, 20], [45, 20]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 59,
      'valid_to': 135,
      'kind': 'absolute',
      'periods': [[0, 32]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 59,
      'valid_to': 130,
      'kind': 'relative',
      'periods': [[0, 16], [20, 32], [30, 20]]}],
    51, 36, 16],
   [10, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 24,
      'valid_to': 78,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 20]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 1,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 20], [0, 10], [0, 16]]}],
    99, None, 32],
   [20, 'default']],
  ['control 1',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 8,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6]]}],
    71, 15, 16],
   [6, 'tx']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 39,
      'valid_to': 108,
      'kind': 'absolute',
      'periods': [[20, 16], [30, 32], [20, 20]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 45,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[5, 20]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 21,
      'valid_to': 46,
      'kind': 'absolute',
      'periods': [[5, 20]]}],
    34, None, 24],
   [20, 'default']]]]
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 fixtureActualExpectedOutcome
boundary: profile expires at t[32, 'hw'][32, 'hw']Passed
boundary: relative profile without session[32, 'hw'][32, 'hw']Passed
boundary: tx overrides lower default[20, 'tx'][20, 'tx']Passed
regression: period ordering[16, 'default'][24, 'hw']Failed
regression: period ordering (partial repair)[6, 'tx'][16, 'tx']Failed
control 1[24, 'hw'][24, 'hw']Passed
control 2[16, 'hw'][16, 'hw']Passed

SHA-256 / 15638a0f0e1fc0cd5b08f5b3ce99db99c898159ee88cb4386a90e16abdd9c4d9

3 / The verified repair

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

N = 1
observations = []
def solve(profiles, t, session_start, hw_max):
    best = {}
    for p in profiles:
        if not (p['valid_from'] <= t and (p['valid_to'] is None or t < p['valid_to'])):
            continue
        if p['kind'] == 'relative':
            if session_start is None:
                continue
            origin = session_start
        else:
            origin = p['valid_from']
        el = t - origin
        lim = None
        for off, val in sorted(p['periods']):
            if off <= el:
                lim = val
        if lim is None:
            continue
        cur = best.get(p['purpose'])
        if cur is None or p['stack'] > cur[0]:
            best[p['purpose']] = [p['stack'], lim]
    cands = []
    if 'max' in best:
        cands.append(['max', best['max'][1]])
    if 'tx' in best:
        cands.append(['tx', best['tx'][1]])
    elif 'default' in best:
        cands.append(['default', best['default'][1]])
    cands.append(['hw', hw_max])
    win = cands[0]
    for c in cands[1:]:
        if c[1] < win[1]:
            win = c
    return [win[1], win[0]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 45,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 32], [45, 20], [5, 16]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 58,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 10], [45, 32], [0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 42,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 10], [0, 32]]}],
    56, None, 24],
   [24, 'hw']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 11,
      'valid_to': 58,
      'kind': 'absolute',
      'periods': [[20, 32], [30, 20]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 23,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 16]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 57,
      'valid_to': 98,
      'kind': 'relative',
      'periods': [[10, 6], [0, 10], [0, 20]]}],
    100, 56, 16],
   [16, 'tx']],
  ['control 1',
   [[{'purpose': 'max',
      'stack': 1,
      'valid_from': 44,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 10], [0, 10], [5, 10]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 7,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 10], [30, 20]]}],
    3, None, 24],
   [24, 'hw']],
  ['control 2',
   [[{'purpose': 'max',
      'stack': 2,
      'valid_from': 11,
      'valid_to': 21,
      'kind': 'relative',
      'periods': [[30, 32], [10, 20], [45, 6]]},
     {'purpose': 'max',
      'stack': 1,
      'valid_from': 14,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 32]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 19,
      'valid_to': 56,
      'kind': 'absolute',
      'periods': [[0, 6], [45, 10], [20, 16]]},
     {'purpose': 'max',
      'stack': 1,
      'valid_from': 53,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 10], [0, 32], [0, 20]]}],
    97, None, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 7,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[45, 16], [20, 6]]}],
    100, None, 24],
   [16, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 10,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 16], [20, 32], [45, 10]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 24,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 16], [5, 32], [5, 10]]}],
    90, 50, 24],
   [10, 'tx']],
  ['control 1',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 20,
      'valid_to': 56,
      'kind': 'relative',
      'periods': [[20, 10], [10, 20]]}],
    53, 38, 24],
   [20, 'default']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 43,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 32]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 44,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 32], [45, 6], [20, 20]]}],
    88, 57, 24],
   [24, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 5,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 6]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 56,
      'valid_to': 120,
      'kind': 'absolute',
      'periods': [[45, 32], [45, 16]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 56,
      'valid_to': 77,
      'kind': 'absolute',
      'periods': [[10, 10], [0, 32]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 4,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 16], [20, 16], [5, 6]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 53,
      'valid_to': 121,
      'kind': 'relative',
      'periods': [[0, 32], [0, 6]]}],
    58, 13, 16],
   [16, 'hw']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 18,
      'valid_to': 34,
      'kind': 'relative',
      'periods': [[30, 16], [20, 10], [5, 10]]},
     {'purpose': 'max',
      'stack': 2,
      'valid_from': 21,
      'valid_to': 43,
      'kind': 'relative',
      'periods': [[45, 20], [10, 16], [5, 10]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 59,
      'valid_to': 88,
      'kind': 'absolute',
      'periods': [[0, 10], [10, 20]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 41,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 20], [10, 10], [20, 10]]}],
    69, None, 24],
   [20, 'tx']],
  ['control 1',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 29,
      'valid_to': 52,
      'kind': 'absolute',
      'periods': [[30, 16], [45, 32], [0, 16]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 13,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [0, 10], [45, 16]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 58,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[10, 16]]}],
    74, None, 24],
   [16, 'max']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 8,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6], [10, 6], [20, 32]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 59,
      'valid_to': 85,
      'kind': 'absolute',
      'periods': [[5, 6], [5, 20], [30, 20]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 29,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 10], [30, 10]]}],
    15, 48, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'max',
      'stack': 0,
      'valid_from': 9,
      'valid_to': 26,
      'kind': 'absolute',
      'periods': [[30, 6]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 36,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6], [10, 32], [10, 10]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 54,
      'valid_to': 130,
      'kind': 'relative',
      'periods': [[30, 32], [10, 10], [30, 6]]},
     {'purpose': 'tx',
      'stack': 1,
      'valid_from': 29,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 20], [5, 32]]}],
    81, 13, 32],
   [32, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 6,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 10], [45, 16]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 2,
      'valid_to': 37,
      'kind': 'relative',
      'periods': [[45, 10], [10, 32]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 38,
      'valid_to': 48,
      'kind': 'absolute',
      'periods': [[5, 10]]}],
    53, None, 24],
   [16, 'default']],
  ['control 1',
   [[{'purpose': 'max',
      'stack': 2,
      'valid_from': 22,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[30, 6]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 34,
      'valid_to': 106,
      'kind': 'absolute',
      'periods': [[30, 16], [30, 10]]},
     {'purpose': 'tx',
      'stack': 2,
      'valid_from': 11,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[10, 6], [30, 20]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 26,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[5, 6], [5, 6], [45, 10]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 12,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 32], [20, 6]]}],
    77, None, 24],
   [20, 'tx']],
  ['control 2',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 55,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[5, 10], [30, 10]]}],
    25, 14, 16],
   [16, 'hw']]],
 [['boundary: profile expires at t',
   [[{'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': 30,
      'kind': 'absolute',
      'periods': [[0, 10]]}],
    30, None, 32],
   [32, 'hw']],
  ['boundary: relative profile without session',
   [[{'purpose': 'default',
      'stack': 1,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[0, 8]]}],
    20, None, 32],
   [32, 'hw']],
  ['boundary: tx overrides lower default',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 6]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 0,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[0, 20]]}],
    5, 0, 32],
   [20, 'tx']],
  ['regression: period ordering',
   [[{'purpose': 'default',
      'stack': 2,
      'valid_from': 56,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[45, 10], [0, 6], [0, 20]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 23,
      'valid_to': 53,
      'kind': 'relative',
      'periods': [[10, 10], [5, 20], [45, 20]]},
     {'purpose': 'tx',
      'stack': 0,
      'valid_from': 59,
      'valid_to': 135,
      'kind': 'absolute',
      'periods': [[0, 32]]},
     {'purpose': 'default',
      'stack': 2,
      'valid_from': 59,
      'valid_to': 130,
      'kind': 'relative',
      'periods': [[0, 16], [20, 32], [30, 20]]}],
    51, 36, 16],
   [10, 'tx']],
  ['regression: period ordering (partial repair)',
   [[{'purpose': 'default',
      'stack': 0,
      'valid_from': 24,
      'valid_to': 78,
      'kind': 'absolute',
      'periods': [[0, 6], [20, 20]]},
     {'purpose': 'default',
      'stack': 0,
      'valid_from': 1,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[20, 20], [0, 10], [0, 16]]}],
    99, None, 32],
   [20, 'default']],
  ['control 1',
   [[{'purpose': 'tx',
      'stack': 1,
      'valid_from': 8,
      'valid_to': None,
      'kind': 'absolute',
      'periods': [[30, 6]]}],
    71, 15, 16],
   [6, 'tx']],
  ['control 2',
   [[{'purpose': 'tx',
      'stack': 2,
      'valid_from': 39,
      'valid_to': 108,
      'kind': 'absolute',
      'periods': [[20, 16], [30, 32], [20, 20]]},
     {'purpose': 'max',
      'stack': 0,
      'valid_from': 45,
      'valid_to': None,
      'kind': 'relative',
      'periods': [[5, 20]]},
     {'purpose': 'default',
      'stack': 1,
      'valid_from': 21,
      'valid_to': 46,
      'kind': 'absolute',
      'periods': [[5, 20]]}],
    34, None, 24],
   [20, 'default']]]]
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 fixtureActualExpectedOutcome
boundary: profile expires at t[32, 'hw'][32, 'hw']Passed
boundary: relative profile without session[32, 'hw'][32, 'hw']Passed
boundary: tx overrides lower default[20, 'tx'][20, 'tx']Passed
regression: period ordering[24, 'hw'][24, 'hw']Passed
regression: period ordering (partial repair)[16, 'tx'][16, 'tx']Passed
control 1[24, 'hw'][24, 'hw']Passed
control 2[16, 'hw'][16, 'hw']Passed

SHA-256 / 91655f8296100fe29d062d20ca00d6955a0900d43a9aa5f54da85d51b6e3d7d8

Verification & scope

Deterministic stipulated toy contract for teaching; no claim of conformance with any standard, vendor protocol or production controller. 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:51:50.609054+00:00.

Case digest / 92e1d3ca92f47f6386df3b1614ac15ecaeec333fc1e6584db37541b15d25197a