FAILURE MAP
← Case archive

FA-94311 / Shift rostering labor rules / Open access

Supplement paid on additional minutes inside the tolerance · case 01

Every additional minute earns the supplement.

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

ROOT CAUSE

The tolerance is not subtracted from the supplement base.

VERIFIED REPAIR

Supplement only additional minutes beyond the tolerance.

Unsuccessful approach: Falling back to all additional minutes within the tolerance pays the supplement there.

Case contract

Contract minutes per week and worked minutes per week. Per week: top-up = shortfall below contract; additional = minutes between contract and 2400; supplement base = additional minutes beyond a tolerance of contract // 10; overtime = minutes above 2400. Return [top-up, additional, supplement base, overtime] per week.

Why this case matters

Part-time contracts pay guaranteed hours, additional hours and supplements; each band has its own boundary.

1 / The failure

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

N = 1
observations = []
def solve(contract, weeks):
    out = []
    free = contract // 10
    for w in weeks:
        top = max(contract - w, 0)
        add = max(min(w, 2400) - contract, 0)
        sup = add
        ot = max(w - 2400, 0)
        out.append([top, add, sup, ot])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: supplement tolerance 1', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('regression variant: supplement tolerance 2', [1234, [2880, 1056, 2880, 2400, 1357]],
   [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]),
  ('partial repair guard 3', [1205, [2373, 1325, 1326, 1205]],
   [[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),
  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('normal control 5', [1205, [1325, 2500, 2500, 1145]],
   [[0, 120, 0, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]]),
  ('normal control 6', [1205, [1145, 2500]], [[60, 0, 0, 0], [0, 1195, 1075, 100]]),
  ('normal control 7', [2100, [2310, 2400]], [[0, 210, 0, 0], [0, 300, 90, 0]]),
  ('normal control 8', [1500, [2880, 2400, 0, 0]],
   [[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]])],
 [('regression: supplement tolerance 1', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('regression variant: supplement tolerance 2', [1800, [1740, 2880]], [[60, 0, 0, 0], [0, 600, 420, 480]]),
  ('partial repair guard 3', [1500, [1651, 1650]], [[0, 151, 1, 0], [0, 150, 0, 0]]),
  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),
  ('boundary control 5', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('normal control 6', [1234, [2728, 2378]], [[0, 1166, 1043, 328], [0, 1144, 1021, 0]]),
  ('normal control 7', [1500, [5, 1500, 1651, 1651, 1651]],
   [[1495, 0, 0, 0], [0, 0, 0, 0], [0, 151, 1, 0], [0, 151, 1, 0], [0, 151, 1, 0]]),
  ('normal control 8', [1800, [1800, 1980]], [[0, 0, 0, 0], [0, 180, 0, 0]])],
 [('regression: supplement tolerance 1', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),
  ('regression variant: supplement tolerance 2', [1234, [1174, 2400, 1358]],
   [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),
  ('partial repair guard 3', [1800, [1980, 1981, 1980, 2500]],
   [[0, 180, 0, 0], [0, 181, 1, 0], [0, 180, 0, 0], [0, 600, 420, 100]]),
  ('boundary control 4', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 5', [1200, [27, 2500]], [[1173, 0, 0, 0], [0, 1200, 1080, 100]]),
  ('normal control 6', [1200, [2400, 1320, 1200]], [[0, 1200, 1080, 0], [0, 120, 0, 0], [0, 0, 0, 0]]),
  ('normal control 7', [1800, [2500, 2500]], [[0, 600, 420, 100], [0, 600, 420, 100]]),
  ('normal control 8', [1200, [1140, 2880, 2880, 1320, 2500]],
   [[60, 0, 0, 0], [0, 1200, 1080, 480], [0, 1200, 1080, 480], [0, 120, 0, 0], [0, 1200, 1080, 100]])],
 [('regression: supplement tolerance 1', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('regression variant: supplement tolerance 2', [1800, [0, 1981]], [[1800, 0, 0, 0], [0, 181, 1, 0]]),
  ('partial repair guard 3', [2100, [2400, 2400, 0, 2310, 2400]],
   [[0, 300, 90, 0], [0, 300, 90, 0], [2100, 0, 0, 0], [0, 210, 0, 0], [0, 300, 90, 0]]),
  ('boundary control 4', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('boundary control 5', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 6', [1500, [2500, 2400, 2500, 1650]],
   [[0, 900, 750, 100], [0, 900, 750, 0], [0, 900, 750, 100], [0, 150, 0, 0]]),
  ('normal control 7', [1234, [2400, 1234, 1174, 1358, 1357]],
   [[0, 1166, 1043, 0], [0, 0, 0, 0], [60, 0, 0, 0], [0, 124, 1, 0], [0, 123, 0, 0]]),
  ('normal control 8', [2100, [2040, 2310, 0, 2880, 2310]],
   [[60, 0, 0, 0], [0, 210, 0, 0], [2100, 0, 0, 0], [0, 300, 90, 480], [0, 210, 0, 0]])],
 [('regression: supplement tolerance 1', [1500, [1650, 1500]], [[0, 150, 0, 0], [0, 0, 0, 0]]),
  ('regression variant: supplement tolerance 2', [1500, [1500, 1957, 1500]],
   [[0, 0, 0, 0], [0, 457, 307, 0], [0, 0, 0, 0]]),
  ('partial repair guard 3', [1200, [1320, 1200, 1200, 2880, 2880]],
   [[0, 120, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 480], [0, 1200, 1080, 480]]),
  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 6', [1500, [1651, 1146]], [[0, 151, 1, 0], [354, 0, 0, 0]]),
  ('normal control 7', [1200, [2880, 1200, 1200, 1140]],
   [[0, 1200, 1080, 480], [0, 0, 0, 0], [0, 0, 0, 0], [60, 0, 0, 0]]),
  ('normal control 8', [1200, [2500, 630, 1200, 2880]],
   [[0, 1200, 1080, 100], [570, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 480]])]]
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
regression: supplement tolerance 1[[0, 120, 120, 0], [0, 121, 121, 0]][[0, 120, 0, 0], [0, 121, 1, 0]]Failed
regression variant: supplement tolerance 2[[0, 1166, 1166, 480], [178, 0, 0, 0], [0, 1166, 1166, 480], [0, 1166, 1166, 0], [0, 123, 123, 0]][[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]Failed
partial repair guard 3[[0, 1168, 1168, 0], [0, 120, 120, 0], [0, 121, 121, 0], [0, 0, 0, 0]][[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]Failed
boundary control 4[[0, 600, 600, 0], [0, 600, 600, 600]][[0, 600, 420, 0], [0, 600, 420, 600]]Failed
normal control 5[[0, 120, 120, 0], [0, 1195, 1195, 100], [0, 1195, 1195, 100], [60, 0, 0, 0]][[0, 120, 0, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]]Failed
normal control 6[[60, 0, 0, 0], [0, 1195, 1195, 100]][[60, 0, 0, 0], [0, 1195, 1075, 100]]Failed
normal control 7[[0, 210, 210, 0], [0, 300, 300, 0]][[0, 210, 0, 0], [0, 300, 90, 0]]Failed
normal control 8[[0, 900, 900, 480], [0, 900, 900, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]][[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]]Failed

SHA-256 / 707ba2f7a1af21233164704957f2da34bfc650f87a85cdf971eeeeba7a36525b

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(contract, weeks):
    out = []
    free = contract // 10
    for w in weeks:
        top = max(contract - w, 0)
        add = max(min(w, 2400) - contract, 0)
        sup = max(add - free, 0) if add > free else add
        ot = max(w - 2400, 0)
        out.append([top, add, sup, ot])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: supplement tolerance 1', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('regression variant: supplement tolerance 2', [1234, [2880, 1056, 2880, 2400, 1357]],
   [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]),
  ('partial repair guard 3', [1205, [2373, 1325, 1326, 1205]],
   [[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),
  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('normal control 5', [1205, [1325, 2500, 2500, 1145]],
   [[0, 120, 0, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]]),
  ('normal control 6', [1205, [1145, 2500]], [[60, 0, 0, 0], [0, 1195, 1075, 100]]),
  ('normal control 7', [2100, [2310, 2400]], [[0, 210, 0, 0], [0, 300, 90, 0]]),
  ('normal control 8', [1500, [2880, 2400, 0, 0]],
   [[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]])],
 [('regression: supplement tolerance 1', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('regression variant: supplement tolerance 2', [1800, [1740, 2880]], [[60, 0, 0, 0], [0, 600, 420, 480]]),
  ('partial repair guard 3', [1500, [1651, 1650]], [[0, 151, 1, 0], [0, 150, 0, 0]]),
  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),
  ('boundary control 5', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('normal control 6', [1234, [2728, 2378]], [[0, 1166, 1043, 328], [0, 1144, 1021, 0]]),
  ('normal control 7', [1500, [5, 1500, 1651, 1651, 1651]],
   [[1495, 0, 0, 0], [0, 0, 0, 0], [0, 151, 1, 0], [0, 151, 1, 0], [0, 151, 1, 0]]),
  ('normal control 8', [1800, [1800, 1980]], [[0, 0, 0, 0], [0, 180, 0, 0]])],
 [('regression: supplement tolerance 1', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),
  ('regression variant: supplement tolerance 2', [1234, [1174, 2400, 1358]],
   [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),
  ('partial repair guard 3', [1800, [1980, 1981, 1980, 2500]],
   [[0, 180, 0, 0], [0, 181, 1, 0], [0, 180, 0, 0], [0, 600, 420, 100]]),
  ('boundary control 4', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 5', [1200, [27, 2500]], [[1173, 0, 0, 0], [0, 1200, 1080, 100]]),
  ('normal control 6', [1200, [2400, 1320, 1200]], [[0, 1200, 1080, 0], [0, 120, 0, 0], [0, 0, 0, 0]]),
  ('normal control 7', [1800, [2500, 2500]], [[0, 600, 420, 100], [0, 600, 420, 100]]),
  ('normal control 8', [1200, [1140, 2880, 2880, 1320, 2500]],
   [[60, 0, 0, 0], [0, 1200, 1080, 480], [0, 1200, 1080, 480], [0, 120, 0, 0], [0, 1200, 1080, 100]])],
 [('regression: supplement tolerance 1', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('regression variant: supplement tolerance 2', [1800, [0, 1981]], [[1800, 0, 0, 0], [0, 181, 1, 0]]),
  ('partial repair guard 3', [2100, [2400, 2400, 0, 2310, 2400]],
   [[0, 300, 90, 0], [0, 300, 90, 0], [2100, 0, 0, 0], [0, 210, 0, 0], [0, 300, 90, 0]]),
  ('boundary control 4', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('boundary control 5', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 6', [1500, [2500, 2400, 2500, 1650]],
   [[0, 900, 750, 100], [0, 900, 750, 0], [0, 900, 750, 100], [0, 150, 0, 0]]),
  ('normal control 7', [1234, [2400, 1234, 1174, 1358, 1357]],
   [[0, 1166, 1043, 0], [0, 0, 0, 0], [60, 0, 0, 0], [0, 124, 1, 0], [0, 123, 0, 0]]),
  ('normal control 8', [2100, [2040, 2310, 0, 2880, 2310]],
   [[60, 0, 0, 0], [0, 210, 0, 0], [2100, 0, 0, 0], [0, 300, 90, 480], [0, 210, 0, 0]])],
 [('regression: supplement tolerance 1', [1500, [1650, 1500]], [[0, 150, 0, 0], [0, 0, 0, 0]]),
  ('regression variant: supplement tolerance 2', [1500, [1500, 1957, 1500]],
   [[0, 0, 0, 0], [0, 457, 307, 0], [0, 0, 0, 0]]),
  ('partial repair guard 3', [1200, [1320, 1200, 1200, 2880, 2880]],
   [[0, 120, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 480], [0, 1200, 1080, 480]]),
  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 6', [1500, [1651, 1146]], [[0, 151, 1, 0], [354, 0, 0, 0]]),
  ('normal control 7', [1200, [2880, 1200, 1200, 1140]],
   [[0, 1200, 1080, 480], [0, 0, 0, 0], [0, 0, 0, 0], [60, 0, 0, 0]]),
  ('normal control 8', [1200, [2500, 630, 1200, 2880]],
   [[0, 1200, 1080, 100], [570, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 480]])]]
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
regression: supplement tolerance 1[[0, 120, 120, 0], [0, 121, 1, 0]][[0, 120, 0, 0], [0, 121, 1, 0]]Failed
regression variant: supplement tolerance 2[[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 123, 0]][[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]Failed
partial repair guard 3[[0, 1168, 1048, 0], [0, 120, 120, 0], [0, 121, 1, 0], [0, 0, 0, 0]][[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]Failed
boundary control 4[[0, 600, 420, 0], [0, 600, 420, 600]][[0, 600, 420, 0], [0, 600, 420, 600]]Passed
normal control 5[[0, 120, 120, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]][[0, 120, 0, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]]Failed
normal control 6[[60, 0, 0, 0], [0, 1195, 1075, 100]][[60, 0, 0, 0], [0, 1195, 1075, 100]]Passed
normal control 7[[0, 210, 210, 0], [0, 300, 90, 0]][[0, 210, 0, 0], [0, 300, 90, 0]]Failed
normal control 8[[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]][[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]]Passed

SHA-256 / 2142b8e459b0c57c6a9942ffba01ac5c80101fc32a0e52fef7f8a144fc59f8e2

3 / The verified repair

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

N = 1
observations = []
def solve(contract, weeks):
    out = []
    free = contract // 10
    for w in weeks:
        top = max(contract - w, 0)
        add = max(min(w, 2400) - contract, 0)
        sup = max(add - free, 0)
        ot = max(w - 2400, 0)
        out.append([top, add, sup, ot])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: supplement tolerance 1', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('regression variant: supplement tolerance 2', [1234, [2880, 1056, 2880, 2400, 1357]],
   [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]),
  ('partial repair guard 3', [1205, [2373, 1325, 1326, 1205]],
   [[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),
  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('normal control 5', [1205, [1325, 2500, 2500, 1145]],
   [[0, 120, 0, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]]),
  ('normal control 6', [1205, [1145, 2500]], [[60, 0, 0, 0], [0, 1195, 1075, 100]]),
  ('normal control 7', [2100, [2310, 2400]], [[0, 210, 0, 0], [0, 300, 90, 0]]),
  ('normal control 8', [1500, [2880, 2400, 0, 0]],
   [[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]])],
 [('regression: supplement tolerance 1', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('regression variant: supplement tolerance 2', [1800, [1740, 2880]], [[60, 0, 0, 0], [0, 600, 420, 480]]),
  ('partial repair guard 3', [1500, [1651, 1650]], [[0, 151, 1, 0], [0, 150, 0, 0]]),
  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),
  ('boundary control 5', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('normal control 6', [1234, [2728, 2378]], [[0, 1166, 1043, 328], [0, 1144, 1021, 0]]),
  ('normal control 7', [1500, [5, 1500, 1651, 1651, 1651]],
   [[1495, 0, 0, 0], [0, 0, 0, 0], [0, 151, 1, 0], [0, 151, 1, 0], [0, 151, 1, 0]]),
  ('normal control 8', [1800, [1800, 1980]], [[0, 0, 0, 0], [0, 180, 0, 0]])],
 [('regression: supplement tolerance 1', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),
  ('regression variant: supplement tolerance 2', [1234, [1174, 2400, 1358]],
   [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),
  ('partial repair guard 3', [1800, [1980, 1981, 1980, 2500]],
   [[0, 180, 0, 0], [0, 181, 1, 0], [0, 180, 0, 0], [0, 600, 420, 100]]),
  ('boundary control 4', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 5', [1200, [27, 2500]], [[1173, 0, 0, 0], [0, 1200, 1080, 100]]),
  ('normal control 6', [1200, [2400, 1320, 1200]], [[0, 1200, 1080, 0], [0, 120, 0, 0], [0, 0, 0, 0]]),
  ('normal control 7', [1800, [2500, 2500]], [[0, 600, 420, 100], [0, 600, 420, 100]]),
  ('normal control 8', [1200, [1140, 2880, 2880, 1320, 2500]],
   [[60, 0, 0, 0], [0, 1200, 1080, 480], [0, 1200, 1080, 480], [0, 120, 0, 0], [0, 1200, 1080, 100]])],
 [('regression: supplement tolerance 1', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('regression variant: supplement tolerance 2', [1800, [0, 1981]], [[1800, 0, 0, 0], [0, 181, 1, 0]]),
  ('partial repair guard 3', [2100, [2400, 2400, 0, 2310, 2400]],
   [[0, 300, 90, 0], [0, 300, 90, 0], [2100, 0, 0, 0], [0, 210, 0, 0], [0, 300, 90, 0]]),
  ('boundary control 4', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('boundary control 5', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 6', [1500, [2500, 2400, 2500, 1650]],
   [[0, 900, 750, 100], [0, 900, 750, 0], [0, 900, 750, 100], [0, 150, 0, 0]]),
  ('normal control 7', [1234, [2400, 1234, 1174, 1358, 1357]],
   [[0, 1166, 1043, 0], [0, 0, 0, 0], [60, 0, 0, 0], [0, 124, 1, 0], [0, 123, 0, 0]]),
  ('normal control 8', [2100, [2040, 2310, 0, 2880, 2310]],
   [[60, 0, 0, 0], [0, 210, 0, 0], [2100, 0, 0, 0], [0, 300, 90, 480], [0, 210, 0, 0]])],
 [('regression: supplement tolerance 1', [1500, [1650, 1500]], [[0, 150, 0, 0], [0, 0, 0, 0]]),
  ('regression variant: supplement tolerance 2', [1500, [1500, 1957, 1500]],
   [[0, 0, 0, 0], [0, 457, 307, 0], [0, 0, 0, 0]]),
  ('partial repair guard 3', [1200, [1320, 1200, 1200, 2880, 2880]],
   [[0, 120, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 480], [0, 1200, 1080, 480]]),
  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),
  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),
  ('normal control 6', [1500, [1651, 1146]], [[0, 151, 1, 0], [354, 0, 0, 0]]),
  ('normal control 7', [1200, [2880, 1200, 1200, 1140]],
   [[0, 1200, 1080, 480], [0, 0, 0, 0], [0, 0, 0, 0], [60, 0, 0, 0]]),
  ('normal control 8', [1200, [2500, 630, 1200, 2880]],
   [[0, 1200, 1080, 100], [570, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 480]])]]
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
regression: supplement tolerance 1[[0, 120, 0, 0], [0, 121, 1, 0]][[0, 120, 0, 0], [0, 121, 1, 0]]Passed
regression variant: supplement tolerance 2[[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]][[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]Passed
partial repair guard 3[[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]][[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]Passed
boundary control 4[[0, 600, 420, 0], [0, 600, 420, 600]][[0, 600, 420, 0], [0, 600, 420, 600]]Passed
normal control 5[[0, 120, 0, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]][[0, 120, 0, 0], [0, 1195, 1075, 100], [0, 1195, 1075, 100], [60, 0, 0, 0]]Passed
normal control 6[[60, 0, 0, 0], [0, 1195, 1075, 100]][[60, 0, 0, 0], [0, 1195, 1075, 100]]Passed
normal control 7[[0, 210, 0, 0], [0, 300, 90, 0]][[0, 210, 0, 0], [0, 300, 90, 0]]Passed
normal control 8[[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]][[0, 900, 750, 480], [0, 900, 750, 0], [1500, 0, 0, 0], [1500, 0, 0, 0]]Passed

SHA-256 / f0e0daeab1567e71e0f057db6ff2ebb0da7f47baabf6657a19ed88ba782f398b

Verification & scope

Stipulated toy labor rule for a bounded roster model; it is not legal advice and does not claim conformance with any jurisdiction, award, or collective agreement. 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:52:03.234628+00:00.

Case digest / b6babb820034863ce306a667df2f0918ae9e424533d21a2a345f03673dc2f4a6