FA-94321 / Shift rostering labor rules / Open access
Refused overtime offers not charged to the ledger · case 01
Workers who always refuse stay at the top of the offer list.
ROOT CAUSE
Refusals skip the worker without charging the offered minutes.
VERIFIED REPAIR
Charge refused offers at the full offered minutes.
Unsuccessful approach: Charging half the offer still distorts the rotation.
Case contract
ledger: worker -> [overtime minutes charged, seniority rank (1 most senior), minutes already worked today]; offers: [minutes, workers who will refuse]. For each offer, candidates are ordered by charged overtime then seniority rank. Workers who would exceed 720 minutes today are skipped without charge; refusers are charged the offered minutes; the first remaining worker takes it and is charged and credited today. Return [taker per offer (or None), charged minutes by worker].
Why this case matters
Overtime equalization clauses require fair rotation of offers, including charging refusals.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(ledger, offers):
led = {w: list(v) for w, v in ledger.items()}
result = []
for minutes, refusers in offers:
cands = sorted(led, key=lambda w: (led[w][0], led[w][1]))
taker = None
for w in cands:
if led[w][2] + minutes > 720:
continue
if w in refusers:
continue
taker = w
break
if taker is not None:
led[taker][0] += minutes
led[taker][2] += minutes
result.append(taker)
return [result, {w: led[w][0] for w in sorted(led)}]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: refusal charge 1',
[{'p': [120, 1, 240], 'r': [0, 2, 480], 'q': [60, 3, 240], 's': [60, 4, 480]},
[[60, []], [240, ['q', 'r']]]],
[['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}]),
('regression variant: refusal charge 2',
[{'q': [120, 1, 0], 'p': [120, 2, 660]}, [[240, ['q']], [240, []], [120, []]]],
[[None, 'q', 'q'], {'p': 120, 'q': 720}]),
('partial repair guard 3',
[{'q': [120, 1, 600], 'p': [240, 2, 660]}, [[120, ['q']], [60, []], [120, []], [240, []]]],
[[None, 'q', None, None], {'p': 240, 'q': 300}]),
('normal control 4',
[{'q': [0, 1, 0], 'r': [60, 2, 600], 's': [0, 3, 240], 'p': [60, 4, 480]},
[[120, ['p', 'q']], [240, ['r']], [240, []], [60, ['p']]]],
[['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}]),
('normal control 5', [{'p': [60, 1, 480], 'r': [240, 2, 660], 'q': [0, 3, 600]}, [[120, []]]],
[['q'], {'p': 60, 'q': 120, 'r': 240}]),
('normal control 6',
[{'q': [60, 1, 600], 'p': [240, 2, 240], 's': [120, 3, 240], 'r': [120, 4, 0]},
[[120, ['p']], [120, ['r']], [240, ['q', 'p']], [120, ['p']]]],
[['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}]),
('normal control 7', [{'p': [0, 1, 660], 'q': [60, 2, 660]}, [[120, ['p']], [120, []], [60, ['q', 'p']]]],
[[None, None, None], {'p': 60, 'q': 120}]),
('normal control 8',
[{'q': [60, 1, 660], 'p': [60, 2, 0]}, [[60, []], [240, []], [120, ['p']], [240, ['q', 'p']]]],
[['q', 'p', None, None], {'p': 660, 'q': 120}])],
[('regression: refusal charge 1',
[{'p': [60, 1, 480], 'q': [120, 2, 600]}, [[60, ['p', 'q']], [60, ['q', 'p']], [60, ['p', 'q']]]],
[[None, None, None], {'p': 240, 'q': 300}]),
('regression variant: refusal charge 2',
[{'p': [240, 1, 660], 'r': [60, 2, 240], 's': [120, 3, 0], 'q': [0, 4, 600]},
[[240, []], [60, ['q', 'p']]]],
[['r', 's'], {'p': 240, 'q': 60, 'r': 300, 's': 180}]),
('partial repair guard 3',
[{'q': [120, 1, 0], 'r': [240, 2, 240], 'p': [0, 3, 0]},
[[120, []], [60, ['q', 'r']], [60, ['p']], [60, ['q']]]],
[['p', 'p', 'q', 'p'], {'p': 240, 'q': 240, 'r': 240}]),
('normal control 4', [{'p': [60, 1, 240], 'q': [120, 2, 0]}, [[60, ['q']]]], [['p'], {'p': 120, 'q': 120}]),
('normal control 5', [{'r': [120, 1, 240], 'p': [60, 2, 600], 'q': [240, 3, 660]}, [[60, []], [60, []]]],
[['p', 'r'], {'p': 120, 'q': 240, 'r': 180}]),
('normal control 6',
[{'r': [240, 1, 0], 's': [0, 2, 0], 'p': [120, 3, 660], 'q': [120, 4, 0]},
[[60, ['p', 's']], [240, ['r']], [60, ['s', 'r']], [240, ['r']]]],
[['q', 's', 'p', 'q'], {'p': 240, 'q': 420, 'r': 240, 's': 300}]),
('normal control 7',
[{'r': [240, 1, 600], 'p': [120, 2, 600], 's': [120, 3, 660], 'q': [120, 4, 600]},
[[120, []], [240, ['p', 's']], [60, ['s']]]],
[['p', None, 'q'], {'p': 240, 'q': 180, 'r': 240, 's': 180}]),
('normal control 8', [{'r': [60, 1, 240], 'q': [120, 2, 240], 'p': [60, 3, 480]}, [[60, ['r', 'p']]]],
[['q'], {'p': 120, 'q': 180, 'r': 120}])],
[('regression: refusal charge 1',
[{'p': [0, 1, 0], 'q': [120, 2, 600]}, [[60, ['q', 'p']], [120, []], [120, ['q']], [120, []]]],
[[None, 'p', 'p', 'q'], {'p': 300, 'q': 300}]),
('regression variant: refusal charge 2',
[{'q': [120, 1, 600], 'p': [240, 2, 0]}, [[120, []], [60, ['p']], [240, []], [120, ['p']]]],
[['q', None, 'p', None], {'p': 660, 'q': 240}]),
('partial repair guard 3', [{'q': [120, 1, 480], 'p': [120, 2, 660]}, [[240, ['q', 'p']]]],
[[None], {'p': 120, 'q': 360}]),
('normal control 4',
[{'q': [0, 1, 240], 'p': [0, 2, 240], 'r': [60, 3, 660]},
[[240, ['p']], [120, ['r']], [240, []], [120, ['q']]]],
[['q', 'p', 'p', 'p'], {'p': 480, 'q': 360, 'r': 60}]),
('normal control 5',
[{'q': [120, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 480]},
[[60, ['p']], [60, ['r', 'q']], [60, ['q', 'r']], [120, ['r', 'q']]]],
[['q', 'p', 'p', 'p'], {'p': 360, 'q': 360, 'r': 300}]),
('normal control 6', [{'p': [0, 1, 0], 'q': [60, 2, 660], 'r': [0, 3, 0]}, [[60, []]]],
[['p'], {'p': 60, 'q': 60, 'r': 0}]),
('normal control 7', [{'p': [60, 1, 0], 'r': [240, 2, 600], 'q': [0, 3, 480]}, [[240, ['r']]]],
[['q'], {'p': 60, 'q': 240, 'r': 240}]),
('normal control 8', [{'r': [120, 1, 0], 'p': [0, 2, 0], 'q': [120, 3, 480]}, [[60, ['r']], [60, []]]],
[['p', 'p'], {'p': 120, 'q': 120, 'r': 120}])],
[('regression: refusal charge 1', [{'q': [0, 1, 240], 'p': [120, 2, 0]}, [[120, ['p', 'q']], [240, []]]],
[[None, 'q'], {'p': 240, 'q': 360}]),
('regression variant: refusal charge 2',
[{'r': [0, 1, 600], 'p': [120, 2, 660], 'q': [0, 3, 660]},
[[60, ['p', 'r']], [120, ['p', 'r']], [60, ['r', 'p']]]],
[['q', None, None], {'p': 180, 'q': 60, 'r': 240}]),
('partial repair guard 3',
[{'p': [0, 1, 660], 'q': [120, 2, 480]}, [[60, []], [60, ['p', 'q']], [240, []], [240, ['q']]]],
[['p', None, 'q', None], {'p': 60, 'q': 420}]),
('normal control 4',
[{'p': [120, 1, 480], 'q': [120, 2, 660], 'r': [120, 3, 0]}, [[240, ['r', 'p']], [240, []]]],
[[None, 'p'], {'p': 600, 'q': 120, 'r': 360}]),
('normal control 5',
[{'p': [60, 1, 0], 's': [120, 2, 240], 'r': [240, 3, 600], 'q': [240, 4, 480]},
[[120, ['r', 's']], [120, []]]],
[['p', 's'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),
('normal control 6',
[{'p': [120, 1, 600], 'q': [0, 2, 600]}, [[120, ['p']], [240, ['q']], [60, ['p']], [240, ['q']]]],
[['q', None, None, None], {'p': 180, 'q': 120}]),
('normal control 7',
[{'q': [60, 1, 240], 'p': [60, 2, 480], 'r': [60, 3, 0]},
[[120, []], [240, ['r', 'p']], [60, ['q', 'p']]]],
[['q', 'q', 'r'], {'p': 360, 'q': 420, 'r': 360}]),
('normal control 8',
[{'q': [0, 1, 660], 'p': [120, 2, 480]}, [[60, ['p']], [60, ['p']], [240, []], [60, ['q', 'p']]]],
[['q', None, 'p', None], {'p': 420, 'q': 60}])],
[('regression: refusal charge 1',
[{'r': [240, 1, 0], 'p': [60, 2, 0], 'q': [120, 3, 0], 's': [120, 4, 600]}, [[120, ['p', 'q']]]],
[['s'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),
('regression variant: refusal charge 2',
[{'p': [120, 1, 480], 'q': [0, 2, 240]}, [[240, []], [120, ['p']], [60, []], [60, []]]],
[['q', 'q', 'p', 'p'], {'p': 360, 'q': 360}]),
('partial repair guard 3',
[{'p': [240, 1, 0], 'q': [60, 2, 660]}, [[60, ['q', 'p']], [120, ['p', 'q']], [120, ['p']]]],
[[None, None, None], {'p': 540, 'q': 120}]),
('normal control 4', [{'p': [60, 1, 600], 'q': [240, 2, 660]}, [[240, ['q']], [60, []]]],
[[None, 'p'], {'p': 120, 'q': 240}]),
('normal control 5',
[{'p': [0, 1, 600], 'r': [120, 2, 0], 'q': [120, 3, 0], 's': [0, 4, 240]},
[[60, ['r']], [60, ['q', 's']]]],
[['p', 'p'], {'p': 120, 'q': 120, 'r': 120, 's': 60}]),
('normal control 6',
[{'q': [120, 1, 480], 'p': [120, 2, 600], 'r': [240, 3, 600], 's': [240, 4, 480]},
[[120, ['r']], [120, ['s']], [60, ['q']], [240, ['q']]]],
[['q', 'p', 'r', 's'], {'p': 240, 'q': 300, 'r': 300, 's': 480}]),
('normal control 7',
[{'s': [60, 1, 660], 'r': [0, 2, 660], 'p': [0, 3, 0], 'q': [120, 4, 240]},
[[60, []], [120, ['s', 'q']], [240, ['q', 'p']], [240, ['r']]]],
[['r', 'p', None, 'p'], {'p': 600, 'q': 360, 'r': 60, 's': 60}]),
('normal control 8',
[{'q': [0, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 660]}, [[60, []], [120, []], [240, []]]],
[['q', 'q', 'p'], {'p': 360, 'q': 180, 'r': 120}])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: refusal charge 1 | [['r', 's'], {'p': 120, 'q': 60, 'r': 60, 's': 300}] | [['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}] | Failed |
| regression variant: refusal charge 2 | [[None, 'q', 'q'], {'p': 120, 'q': 480}] | [[None, 'q', 'q'], {'p': 120, 'q': 720}] | Failed |
| partial repair guard 3 | [[None, 'q', None, None], {'p': 240, 'q': 180}] | [[None, 'q', None, None], {'p': 240, 'q': 300}] | Failed |
| normal control 4 | [['s', 'q', 'p', 'r'], {'p': 300, 'q': 240, 'r': 120, 's': 120}] | [['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}] | Failed |
| normal control 5 | [['q'], {'p': 60, 'q': 120, 'r': 240}] | [['q'], {'p': 60, 'q': 120, 'r': 240}] | Passed |
| normal control 6 | [['q', 's', 'r', 's'], {'p': 240, 'q': 180, 'r': 360, 's': 360}] | [['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}] | Failed |
| normal control 7 | [[None, None, None], {'p': 0, 'q': 60}] | [[None, None, None], {'p': 60, 'q': 120}] | Failed |
| normal control 8 | [['q', 'p', None, None], {'p': 300, 'q': 120}] | [['q', 'p', None, None], {'p': 660, 'q': 120}] | Failed |
SHA-256 / 9cfe2edae258f8761af912aa8ef9efac69de6c9ca01e9a00e4ff1f87d3a04e36
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(ledger, offers):
led = {w: list(v) for w, v in ledger.items()}
result = []
for minutes, refusers in offers:
cands = sorted(led, key=lambda w: (led[w][0], led[w][1]))
taker = None
for w in cands:
if led[w][2] + minutes > 720:
continue
if w in refusers:
led[w][0] += minutes // 2
continue
taker = w
break
if taker is not None:
led[taker][0] += minutes
led[taker][2] += minutes
result.append(taker)
return [result, {w: led[w][0] for w in sorted(led)}]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: refusal charge 1',
[{'p': [120, 1, 240], 'r': [0, 2, 480], 'q': [60, 3, 240], 's': [60, 4, 480]},
[[60, []], [240, ['q', 'r']]]],
[['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}]),
('regression variant: refusal charge 2',
[{'q': [120, 1, 0], 'p': [120, 2, 660]}, [[240, ['q']], [240, []], [120, []]]],
[[None, 'q', 'q'], {'p': 120, 'q': 720}]),
('partial repair guard 3',
[{'q': [120, 1, 600], 'p': [240, 2, 660]}, [[120, ['q']], [60, []], [120, []], [240, []]]],
[[None, 'q', None, None], {'p': 240, 'q': 300}]),
('normal control 4',
[{'q': [0, 1, 0], 'r': [60, 2, 600], 's': [0, 3, 240], 'p': [60, 4, 480]},
[[120, ['p', 'q']], [240, ['r']], [240, []], [60, ['p']]]],
[['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}]),
('normal control 5', [{'p': [60, 1, 480], 'r': [240, 2, 660], 'q': [0, 3, 600]}, [[120, []]]],
[['q'], {'p': 60, 'q': 120, 'r': 240}]),
('normal control 6',
[{'q': [60, 1, 600], 'p': [240, 2, 240], 's': [120, 3, 240], 'r': [120, 4, 0]},
[[120, ['p']], [120, ['r']], [240, ['q', 'p']], [120, ['p']]]],
[['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}]),
('normal control 7', [{'p': [0, 1, 660], 'q': [60, 2, 660]}, [[120, ['p']], [120, []], [60, ['q', 'p']]]],
[[None, None, None], {'p': 60, 'q': 120}]),
('normal control 8',
[{'q': [60, 1, 660], 'p': [60, 2, 0]}, [[60, []], [240, []], [120, ['p']], [240, ['q', 'p']]]],
[['q', 'p', None, None], {'p': 660, 'q': 120}])],
[('regression: refusal charge 1',
[{'p': [60, 1, 480], 'q': [120, 2, 600]}, [[60, ['p', 'q']], [60, ['q', 'p']], [60, ['p', 'q']]]],
[[None, None, None], {'p': 240, 'q': 300}]),
('regression variant: refusal charge 2',
[{'p': [240, 1, 660], 'r': [60, 2, 240], 's': [120, 3, 0], 'q': [0, 4, 600]},
[[240, []], [60, ['q', 'p']]]],
[['r', 's'], {'p': 240, 'q': 60, 'r': 300, 's': 180}]),
('partial repair guard 3',
[{'q': [120, 1, 0], 'r': [240, 2, 240], 'p': [0, 3, 0]},
[[120, []], [60, ['q', 'r']], [60, ['p']], [60, ['q']]]],
[['p', 'p', 'q', 'p'], {'p': 240, 'q': 240, 'r': 240}]),
('normal control 4', [{'p': [60, 1, 240], 'q': [120, 2, 0]}, [[60, ['q']]]], [['p'], {'p': 120, 'q': 120}]),
('normal control 5', [{'r': [120, 1, 240], 'p': [60, 2, 600], 'q': [240, 3, 660]}, [[60, []], [60, []]]],
[['p', 'r'], {'p': 120, 'q': 240, 'r': 180}]),
('normal control 6',
[{'r': [240, 1, 0], 's': [0, 2, 0], 'p': [120, 3, 660], 'q': [120, 4, 0]},
[[60, ['p', 's']], [240, ['r']], [60, ['s', 'r']], [240, ['r']]]],
[['q', 's', 'p', 'q'], {'p': 240, 'q': 420, 'r': 240, 's': 300}]),
('normal control 7',
[{'r': [240, 1, 600], 'p': [120, 2, 600], 's': [120, 3, 660], 'q': [120, 4, 600]},
[[120, []], [240, ['p', 's']], [60, ['s']]]],
[['p', None, 'q'], {'p': 240, 'q': 180, 'r': 240, 's': 180}]),
('normal control 8', [{'r': [60, 1, 240], 'q': [120, 2, 240], 'p': [60, 3, 480]}, [[60, ['r', 'p']]]],
[['q'], {'p': 120, 'q': 180, 'r': 120}])],
[('regression: refusal charge 1',
[{'p': [0, 1, 0], 'q': [120, 2, 600]}, [[60, ['q', 'p']], [120, []], [120, ['q']], [120, []]]],
[[None, 'p', 'p', 'q'], {'p': 300, 'q': 300}]),
('regression variant: refusal charge 2',
[{'q': [120, 1, 600], 'p': [240, 2, 0]}, [[120, []], [60, ['p']], [240, []], [120, ['p']]]],
[['q', None, 'p', None], {'p': 660, 'q': 240}]),
('partial repair guard 3', [{'q': [120, 1, 480], 'p': [120, 2, 660]}, [[240, ['q', 'p']]]],
[[None], {'p': 120, 'q': 360}]),
('normal control 4',
[{'q': [0, 1, 240], 'p': [0, 2, 240], 'r': [60, 3, 660]},
[[240, ['p']], [120, ['r']], [240, []], [120, ['q']]]],
[['q', 'p', 'p', 'p'], {'p': 480, 'q': 360, 'r': 60}]),
('normal control 5',
[{'q': [120, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 480]},
[[60, ['p']], [60, ['r', 'q']], [60, ['q', 'r']], [120, ['r', 'q']]]],
[['q', 'p', 'p', 'p'], {'p': 360, 'q': 360, 'r': 300}]),
('normal control 6', [{'p': [0, 1, 0], 'q': [60, 2, 660], 'r': [0, 3, 0]}, [[60, []]]],
[['p'], {'p': 60, 'q': 60, 'r': 0}]),
('normal control 7', [{'p': [60, 1, 0], 'r': [240, 2, 600], 'q': [0, 3, 480]}, [[240, ['r']]]],
[['q'], {'p': 60, 'q': 240, 'r': 240}]),
('normal control 8', [{'r': [120, 1, 0], 'p': [0, 2, 0], 'q': [120, 3, 480]}, [[60, ['r']], [60, []]]],
[['p', 'p'], {'p': 120, 'q': 120, 'r': 120}])],
[('regression: refusal charge 1', [{'q': [0, 1, 240], 'p': [120, 2, 0]}, [[120, ['p', 'q']], [240, []]]],
[[None, 'q'], {'p': 240, 'q': 360}]),
('regression variant: refusal charge 2',
[{'r': [0, 1, 600], 'p': [120, 2, 660], 'q': [0, 3, 660]},
[[60, ['p', 'r']], [120, ['p', 'r']], [60, ['r', 'p']]]],
[['q', None, None], {'p': 180, 'q': 60, 'r': 240}]),
('partial repair guard 3',
[{'p': [0, 1, 660], 'q': [120, 2, 480]}, [[60, []], [60, ['p', 'q']], [240, []], [240, ['q']]]],
[['p', None, 'q', None], {'p': 60, 'q': 420}]),
('normal control 4',
[{'p': [120, 1, 480], 'q': [120, 2, 660], 'r': [120, 3, 0]}, [[240, ['r', 'p']], [240, []]]],
[[None, 'p'], {'p': 600, 'q': 120, 'r': 360}]),
('normal control 5',
[{'p': [60, 1, 0], 's': [120, 2, 240], 'r': [240, 3, 600], 'q': [240, 4, 480]},
[[120, ['r', 's']], [120, []]]],
[['p', 's'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),
('normal control 6',
[{'p': [120, 1, 600], 'q': [0, 2, 600]}, [[120, ['p']], [240, ['q']], [60, ['p']], [240, ['q']]]],
[['q', None, None, None], {'p': 180, 'q': 120}]),
('normal control 7',
[{'q': [60, 1, 240], 'p': [60, 2, 480], 'r': [60, 3, 0]},
[[120, []], [240, ['r', 'p']], [60, ['q', 'p']]]],
[['q', 'q', 'r'], {'p': 360, 'q': 420, 'r': 360}]),
('normal control 8',
[{'q': [0, 1, 660], 'p': [120, 2, 480]}, [[60, ['p']], [60, ['p']], [240, []], [60, ['q', 'p']]]],
[['q', None, 'p', None], {'p': 420, 'q': 60}])],
[('regression: refusal charge 1',
[{'r': [240, 1, 0], 'p': [60, 2, 0], 'q': [120, 3, 0], 's': [120, 4, 600]}, [[120, ['p', 'q']]]],
[['s'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),
('regression variant: refusal charge 2',
[{'p': [120, 1, 480], 'q': [0, 2, 240]}, [[240, []], [120, ['p']], [60, []], [60, []]]],
[['q', 'q', 'p', 'p'], {'p': 360, 'q': 360}]),
('partial repair guard 3',
[{'p': [240, 1, 0], 'q': [60, 2, 660]}, [[60, ['q', 'p']], [120, ['p', 'q']], [120, ['p']]]],
[[None, None, None], {'p': 540, 'q': 120}]),
('normal control 4', [{'p': [60, 1, 600], 'q': [240, 2, 660]}, [[240, ['q']], [60, []]]],
[[None, 'p'], {'p': 120, 'q': 240}]),
('normal control 5',
[{'p': [0, 1, 600], 'r': [120, 2, 0], 'q': [120, 3, 0], 's': [0, 4, 240]},
[[60, ['r']], [60, ['q', 's']]]],
[['p', 'p'], {'p': 120, 'q': 120, 'r': 120, 's': 60}]),
('normal control 6',
[{'q': [120, 1, 480], 'p': [120, 2, 600], 'r': [240, 3, 600], 's': [240, 4, 480]},
[[120, ['r']], [120, ['s']], [60, ['q']], [240, ['q']]]],
[['q', 'p', 'r', 's'], {'p': 240, 'q': 300, 'r': 300, 's': 480}]),
('normal control 7',
[{'s': [60, 1, 660], 'r': [0, 2, 660], 'p': [0, 3, 0], 'q': [120, 4, 240]},
[[60, []], [120, ['s', 'q']], [240, ['q', 'p']], [240, ['r']]]],
[['r', 'p', None, 'p'], {'p': 600, 'q': 360, 'r': 60, 's': 60}]),
('normal control 8',
[{'q': [0, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 660]}, [[60, []], [120, []], [240, []]]],
[['q', 'q', 'p'], {'p': 360, 'q': 180, 'r': 120}])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: refusal charge 1 | [['r', 's'], {'p': 120, 'q': 180, 'r': 60, 's': 300}] | [['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}] | Failed |
| regression variant: refusal charge 2 | [[None, 'q', 'q'], {'p': 120, 'q': 600}] | [[None, 'q', 'q'], {'p': 120, 'q': 720}] | Failed |
| partial repair guard 3 | [[None, 'q', None, None], {'p': 240, 'q': 240}] | [[None, 'q', None, None], {'p': 240, 'q': 300}] | Failed |
| normal control 4 | [['s', 'q', 'p', 'r'], {'p': 300, 'q': 300, 'r': 120, 's': 120}] | [['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}] | Failed |
| normal control 5 | [['q'], {'p': 60, 'q': 120, 'r': 240}] | [['q'], {'p': 60, 'q': 120, 'r': 240}] | Passed |
| normal control 6 | [['q', 's', 'r', 's'], {'p': 300, 'q': 180, 'r': 360, 's': 360}] | [['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}] | Failed |
| normal control 7 | [[None, None, None], {'p': 30, 'q': 90}] | [[None, None, None], {'p': 60, 'q': 120}] | Failed |
| normal control 8 | [['q', 'p', None, None], {'p': 480, 'q': 120}] | [['q', 'p', None, None], {'p': 660, 'q': 120}] | Failed |
SHA-256 / 92c49a892444222bb7313dbacb752a0fd1f4a939a901ba9decb1ada14b1f2956
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(ledger, offers):
led = {w: list(v) for w, v in ledger.items()}
result = []
for minutes, refusers in offers:
cands = sorted(led, key=lambda w: (led[w][0], led[w][1]))
taker = None
for w in cands:
if led[w][2] + minutes > 720:
continue
if w in refusers:
led[w][0] += minutes
continue
taker = w
break
if taker is not None:
led[taker][0] += minutes
led[taker][2] += minutes
result.append(taker)
return [result, {w: led[w][0] for w in sorted(led)}]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: refusal charge 1',
[{'p': [120, 1, 240], 'r': [0, 2, 480], 'q': [60, 3, 240], 's': [60, 4, 480]},
[[60, []], [240, ['q', 'r']]]],
[['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}]),
('regression variant: refusal charge 2',
[{'q': [120, 1, 0], 'p': [120, 2, 660]}, [[240, ['q']], [240, []], [120, []]]],
[[None, 'q', 'q'], {'p': 120, 'q': 720}]),
('partial repair guard 3',
[{'q': [120, 1, 600], 'p': [240, 2, 660]}, [[120, ['q']], [60, []], [120, []], [240, []]]],
[[None, 'q', None, None], {'p': 240, 'q': 300}]),
('normal control 4',
[{'q': [0, 1, 0], 'r': [60, 2, 600], 's': [0, 3, 240], 'p': [60, 4, 480]},
[[120, ['p', 'q']], [240, ['r']], [240, []], [60, ['p']]]],
[['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}]),
('normal control 5', [{'p': [60, 1, 480], 'r': [240, 2, 660], 'q': [0, 3, 600]}, [[120, []]]],
[['q'], {'p': 60, 'q': 120, 'r': 240}]),
('normal control 6',
[{'q': [60, 1, 600], 'p': [240, 2, 240], 's': [120, 3, 240], 'r': [120, 4, 0]},
[[120, ['p']], [120, ['r']], [240, ['q', 'p']], [120, ['p']]]],
[['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}]),
('normal control 7', [{'p': [0, 1, 660], 'q': [60, 2, 660]}, [[120, ['p']], [120, []], [60, ['q', 'p']]]],
[[None, None, None], {'p': 60, 'q': 120}]),
('normal control 8',
[{'q': [60, 1, 660], 'p': [60, 2, 0]}, [[60, []], [240, []], [120, ['p']], [240, ['q', 'p']]]],
[['q', 'p', None, None], {'p': 660, 'q': 120}])],
[('regression: refusal charge 1',
[{'p': [60, 1, 480], 'q': [120, 2, 600]}, [[60, ['p', 'q']], [60, ['q', 'p']], [60, ['p', 'q']]]],
[[None, None, None], {'p': 240, 'q': 300}]),
('regression variant: refusal charge 2',
[{'p': [240, 1, 660], 'r': [60, 2, 240], 's': [120, 3, 0], 'q': [0, 4, 600]},
[[240, []], [60, ['q', 'p']]]],
[['r', 's'], {'p': 240, 'q': 60, 'r': 300, 's': 180}]),
('partial repair guard 3',
[{'q': [120, 1, 0], 'r': [240, 2, 240], 'p': [0, 3, 0]},
[[120, []], [60, ['q', 'r']], [60, ['p']], [60, ['q']]]],
[['p', 'p', 'q', 'p'], {'p': 240, 'q': 240, 'r': 240}]),
('normal control 4', [{'p': [60, 1, 240], 'q': [120, 2, 0]}, [[60, ['q']]]], [['p'], {'p': 120, 'q': 120}]),
('normal control 5', [{'r': [120, 1, 240], 'p': [60, 2, 600], 'q': [240, 3, 660]}, [[60, []], [60, []]]],
[['p', 'r'], {'p': 120, 'q': 240, 'r': 180}]),
('normal control 6',
[{'r': [240, 1, 0], 's': [0, 2, 0], 'p': [120, 3, 660], 'q': [120, 4, 0]},
[[60, ['p', 's']], [240, ['r']], [60, ['s', 'r']], [240, ['r']]]],
[['q', 's', 'p', 'q'], {'p': 240, 'q': 420, 'r': 240, 's': 300}]),
('normal control 7',
[{'r': [240, 1, 600], 'p': [120, 2, 600], 's': [120, 3, 660], 'q': [120, 4, 600]},
[[120, []], [240, ['p', 's']], [60, ['s']]]],
[['p', None, 'q'], {'p': 240, 'q': 180, 'r': 240, 's': 180}]),
('normal control 8', [{'r': [60, 1, 240], 'q': [120, 2, 240], 'p': [60, 3, 480]}, [[60, ['r', 'p']]]],
[['q'], {'p': 120, 'q': 180, 'r': 120}])],
[('regression: refusal charge 1',
[{'p': [0, 1, 0], 'q': [120, 2, 600]}, [[60, ['q', 'p']], [120, []], [120, ['q']], [120, []]]],
[[None, 'p', 'p', 'q'], {'p': 300, 'q': 300}]),
('regression variant: refusal charge 2',
[{'q': [120, 1, 600], 'p': [240, 2, 0]}, [[120, []], [60, ['p']], [240, []], [120, ['p']]]],
[['q', None, 'p', None], {'p': 660, 'q': 240}]),
('partial repair guard 3', [{'q': [120, 1, 480], 'p': [120, 2, 660]}, [[240, ['q', 'p']]]],
[[None], {'p': 120, 'q': 360}]),
('normal control 4',
[{'q': [0, 1, 240], 'p': [0, 2, 240], 'r': [60, 3, 660]},
[[240, ['p']], [120, ['r']], [240, []], [120, ['q']]]],
[['q', 'p', 'p', 'p'], {'p': 480, 'q': 360, 'r': 60}]),
('normal control 5',
[{'q': [120, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 480]},
[[60, ['p']], [60, ['r', 'q']], [60, ['q', 'r']], [120, ['r', 'q']]]],
[['q', 'p', 'p', 'p'], {'p': 360, 'q': 360, 'r': 300}]),
('normal control 6', [{'p': [0, 1, 0], 'q': [60, 2, 660], 'r': [0, 3, 0]}, [[60, []]]],
[['p'], {'p': 60, 'q': 60, 'r': 0}]),
('normal control 7', [{'p': [60, 1, 0], 'r': [240, 2, 600], 'q': [0, 3, 480]}, [[240, ['r']]]],
[['q'], {'p': 60, 'q': 240, 'r': 240}]),
('normal control 8', [{'r': [120, 1, 0], 'p': [0, 2, 0], 'q': [120, 3, 480]}, [[60, ['r']], [60, []]]],
[['p', 'p'], {'p': 120, 'q': 120, 'r': 120}])],
[('regression: refusal charge 1', [{'q': [0, 1, 240], 'p': [120, 2, 0]}, [[120, ['p', 'q']], [240, []]]],
[[None, 'q'], {'p': 240, 'q': 360}]),
('regression variant: refusal charge 2',
[{'r': [0, 1, 600], 'p': [120, 2, 660], 'q': [0, 3, 660]},
[[60, ['p', 'r']], [120, ['p', 'r']], [60, ['r', 'p']]]],
[['q', None, None], {'p': 180, 'q': 60, 'r': 240}]),
('partial repair guard 3',
[{'p': [0, 1, 660], 'q': [120, 2, 480]}, [[60, []], [60, ['p', 'q']], [240, []], [240, ['q']]]],
[['p', None, 'q', None], {'p': 60, 'q': 420}]),
('normal control 4',
[{'p': [120, 1, 480], 'q': [120, 2, 660], 'r': [120, 3, 0]}, [[240, ['r', 'p']], [240, []]]],
[[None, 'p'], {'p': 600, 'q': 120, 'r': 360}]),
('normal control 5',
[{'p': [60, 1, 0], 's': [120, 2, 240], 'r': [240, 3, 600], 'q': [240, 4, 480]},
[[120, ['r', 's']], [120, []]]],
[['p', 's'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),
('normal control 6',
[{'p': [120, 1, 600], 'q': [0, 2, 600]}, [[120, ['p']], [240, ['q']], [60, ['p']], [240, ['q']]]],
[['q', None, None, None], {'p': 180, 'q': 120}]),
('normal control 7',
[{'q': [60, 1, 240], 'p': [60, 2, 480], 'r': [60, 3, 0]},
[[120, []], [240, ['r', 'p']], [60, ['q', 'p']]]],
[['q', 'q', 'r'], {'p': 360, 'q': 420, 'r': 360}]),
('normal control 8',
[{'q': [0, 1, 660], 'p': [120, 2, 480]}, [[60, ['p']], [60, ['p']], [240, []], [60, ['q', 'p']]]],
[['q', None, 'p', None], {'p': 420, 'q': 60}])],
[('regression: refusal charge 1',
[{'r': [240, 1, 0], 'p': [60, 2, 0], 'q': [120, 3, 0], 's': [120, 4, 600]}, [[120, ['p', 'q']]]],
[['s'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),
('regression variant: refusal charge 2',
[{'p': [120, 1, 480], 'q': [0, 2, 240]}, [[240, []], [120, ['p']], [60, []], [60, []]]],
[['q', 'q', 'p', 'p'], {'p': 360, 'q': 360}]),
('partial repair guard 3',
[{'p': [240, 1, 0], 'q': [60, 2, 660]}, [[60, ['q', 'p']], [120, ['p', 'q']], [120, ['p']]]],
[[None, None, None], {'p': 540, 'q': 120}]),
('normal control 4', [{'p': [60, 1, 600], 'q': [240, 2, 660]}, [[240, ['q']], [60, []]]],
[[None, 'p'], {'p': 120, 'q': 240}]),
('normal control 5',
[{'p': [0, 1, 600], 'r': [120, 2, 0], 'q': [120, 3, 0], 's': [0, 4, 240]},
[[60, ['r']], [60, ['q', 's']]]],
[['p', 'p'], {'p': 120, 'q': 120, 'r': 120, 's': 60}]),
('normal control 6',
[{'q': [120, 1, 480], 'p': [120, 2, 600], 'r': [240, 3, 600], 's': [240, 4, 480]},
[[120, ['r']], [120, ['s']], [60, ['q']], [240, ['q']]]],
[['q', 'p', 'r', 's'], {'p': 240, 'q': 300, 'r': 300, 's': 480}]),
('normal control 7',
[{'s': [60, 1, 660], 'r': [0, 2, 660], 'p': [0, 3, 0], 'q': [120, 4, 240]},
[[60, []], [120, ['s', 'q']], [240, ['q', 'p']], [240, ['r']]]],
[['r', 'p', None, 'p'], {'p': 600, 'q': 360, 'r': 60, 's': 60}]),
('normal control 8',
[{'q': [0, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 660]}, [[60, []], [120, []], [240, []]]],
[['q', 'q', 'p'], {'p': 360, 'q': 180, 'r': 120}])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: refusal charge 1 | [['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}] | [['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}] | Passed |
| regression variant: refusal charge 2 | [[None, 'q', 'q'], {'p': 120, 'q': 720}] | [[None, 'q', 'q'], {'p': 120, 'q': 720}] | Passed |
| partial repair guard 3 | [[None, 'q', None, None], {'p': 240, 'q': 300}] | [[None, 'q', None, None], {'p': 240, 'q': 300}] | Passed |
| normal control 4 | [['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}] | [['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}] | Passed |
| normal control 5 | [['q'], {'p': 60, 'q': 120, 'r': 240}] | [['q'], {'p': 60, 'q': 120, 'r': 240}] | Passed |
| normal control 6 | [['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}] | [['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}] | Passed |
| normal control 7 | [[None, None, None], {'p': 60, 'q': 120}] | [[None, None, None], {'p': 60, 'q': 120}] | Passed |
| normal control 8 | [['q', 'p', None, None], {'p': 660, 'q': 120}] | [['q', 'p', None, None], {'p': 660, 'q': 120}] | Passed |
SHA-256 / 7b842ffd3a19deb5067ca7fd1c6f8b96363688016c882f34119823a528d07b33
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.279284+00:00.
Case digest / e4f4e3160a8a668149ead4b70ff0b8ce1bfebda09b539d3754ad63971f6f7bbe