{"abstract":"Up-peak flickers off as soon as the lobby share dips below the entry level.","category":"Elevator dispatch scheduling","checks":8,"contract":"Per 5-minute window, total = lobby_up + other_up + down. up% = lobby_up*100//total and down% = to_lobby*100//total (0 if total is 0). An active peak ends when its percentage falls below 40 or total < 10. From interfloor (including just after a peak ended) a window with total >= 10 enters up-peak at up% >= 60, else down-peak at down% >= 60. Output the mode per window.","evaluation_group":"w2-elevator_dispatch_scheduling-traffic-pattern-detection","failed_approach":"An inclusive exit ends the peak at exactly 40 percent.","family":"w2-elevator_dispatch_scheduling-traffic-pattern-detection-exit-hysteresis","id":"FA-67746","implementations":{"attempt":{"sha256":"3440b37f75087ff56354452f609c1e1da551600a7e9c87a5335d5e6f087c14da","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    mode = 'interfloor'\n    out = []\n    for w in x['windows']:\n        tot = w['lobby_up'] + w['other_up'] + w['down']\n        up_pct = w['lobby_up'] * 100 // tot if tot else 0\n        dn_pct = w['to_lobby'] * 100 // tot if tot else 0\n        if mode == 'up-peak':\n            if up_pct <= 40 or tot < 10:\n                mode = 'interfloor'\n        elif mode == 'down-peak':\n            if dn_pct < 40 or tot < 10:\n                mode = 'interfloor'\n        if mode == 'interfloor' and tot >= 10:\n            if up_pct >= 60:\n                mode = 'up-peak'\n            elif dn_pct >= 60:\n                mode = 'down-peak'\n        out.append(mode)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 16', {'windows': [{'lobby_up': 1, 'other_up': 0, 'down': 6, 'to_lobby': 5}, {'lobby_up': 18, 'other_up': 8, 'down': 13, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 6, 'down': 2, 'to_lobby': 2}, {'lobby_up': 8, 'other_up': 6, 'down': 12, 'to_lobby': 6}, {'lobby_up': 17, 'other_up': 7, 'down': 7, 'to_lobby': 4}, {'lobby_up': 4, 'other_up': 8, 'down': 8, 'to_lobby': 6}, {'lobby_up': 18, 'other_up': 4, 'down': 0, 'to_lobby': 0}, {'lobby_up': 14, 'other_up': 4, 'down': 10, 'to_lobby': 10}]}, ['interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: quiet window ends a peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 6, 'other_up': 0, 'down': 2, 'to_lobby': 0}]}, ['up-peak', 'interfloor']), ('control 1', {'windows': [{'lobby_up': 0, 'other_up': 2, 'down': 3, 'to_lobby': 3}, {'lobby_up': 10, 'other_up': 4, 'down': 12, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 8, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 3, 'down': 17, 'to_lobby': 15}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 4', {'windows': [{'lobby_up': 18, 'other_up': 3, 'down': 8, 'to_lobby': 4}, {'lobby_up': 2, 'other_up': 3, 'down': 15, 'to_lobby': 5}, {'lobby_up': 20, 'other_up': 6, 'down': 15, 'to_lobby': 15}, {'lobby_up': 16, 'other_up': 5, 'down': 19, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 6, 'down': 16, 'to_lobby': 6}, {'lobby_up': 1, 'other_up': 8, 'down': 0, 'to_lobby': 0}, {'lobby_up': 1, 'other_up': 2, 'down': 8, 'to_lobby': 8}, {'lobby_up': 6, 'other_up': 6, 'down': 0, 'to_lobby': 0}]}, ['up-peak', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'down-peak', 'interfloor']), ('sampled regression 7', {'windows': [{'lobby_up': 17, 'other_up': 7, 'down': 6, 'to_lobby': 6}, {'lobby_up': 7, 'other_up': 3, 'down': 4, 'to_lobby': 3}, {'lobby_up': 20, 'other_up': 8, 'down': 2, 'to_lobby': 1}, {'lobby_up': 17, 'other_up': 7, 'down': 7, 'to_lobby': 6}, {'lobby_up': 2, 'other_up': 3, 'down': 8, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 3, 'down': 16, 'to_lobby': 7}, {'lobby_up': 5, 'other_up': 5, 'down': 1, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'interfloor', 'interfloor', 'interfloor'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('sampled regression 50', {'windows': [{'lobby_up': 13, 'other_up': 3, 'down': 2, 'to_lobby': 2}, {'lobby_up': 9, 'other_up': 8, 'down': 8, 'to_lobby': 8}, {'lobby_up': 18, 'other_up': 2, 'down': 6, 'to_lobby': 2}, {'lobby_up': 13, 'other_up': 7, 'down': 10, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 5, 'down': 17, 'to_lobby': 13}]}, ['up-peak', 'interfloor', 'up-peak', 'up-peak', 'interfloor']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 12', {'windows': [{'lobby_up': 16, 'other_up': 6, 'down': 0, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 4, 'down': 13, 'to_lobby': 8}, {'lobby_up': 6, 'other_up': 1, 'down': 17, 'to_lobby': 7}, {'lobby_up': 20, 'other_up': 8, 'down': 13, 'to_lobby': 11}, {'lobby_up': 19, 'other_up': 5, 'down': 0, 'to_lobby': 0}, {'lobby_up': 2, 'other_up': 6, 'down': 20, 'to_lobby': 10}, {'lobby_up': 17, 'other_up': 1, 'down': 5, 'to_lobby': 4}]}, ['up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor', 'up-peak']), ('control 15', {'windows': [{'lobby_up': 8, 'other_up': 2, 'down': 2, 'to_lobby': 2}, {'lobby_up': 2, 'other_up': 0, 'down': 19, 'to_lobby': 13}, {'lobby_up': 11, 'other_up': 7, 'down': 20, 'to_lobby': 2}, {'lobby_up': 13, 'other_up': 7, 'down': 5, 'to_lobby': 5}, {'lobby_up': 1, 'other_up': 6, 'down': 7, 'to_lobby': 2}, {'lobby_up': 3, 'other_up': 1, 'down': 20, 'to_lobby': 20}]}, ['up-peak', 'down-peak', 'interfloor', 'interfloor', 'interfloor', 'down-peak']), ('control 18', {'windows': [{'lobby_up': 9, 'other_up': 7, 'down': 0, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 8, 'down': 11, 'to_lobby': 5}, {'lobby_up': 2, 'other_up': 6, 'down': 8, 'to_lobby': 3}, {'lobby_up': 10, 'other_up': 4, 'down': 20, 'to_lobby': 1}, {'lobby_up': 13, 'other_up': 5, 'down': 19, 'to_lobby': 12}, {'lobby_up': 1, 'other_up': 5, 'down': 16, 'to_lobby': 4}, {'lobby_up': 12, 'other_up': 6, 'down': 11, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 75', {'windows': [{'lobby_up': 4, 'other_up': 5, 'down': 11, 'to_lobby': 10}, {'lobby_up': 7, 'other_up': 6, 'down': 4, 'to_lobby': 4}, {'lobby_up': 19, 'other_up': 7, 'down': 2, 'to_lobby': 1}, {'lobby_up': 6, 'other_up': 8, 'down': 14, 'to_lobby': 4}, {'lobby_up': 18, 'other_up': 0, 'down': 17, 'to_lobby': 12}, {'lobby_up': 6, 'other_up': 3, 'down': 0, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 6, 'down': 4, 'to_lobby': 1}, {'lobby_up': 20, 'other_up': 2, 'down': 19, 'to_lobby': 14}]}, ['interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: fraction just under sixty', {'windows': [{'lobby_up': 119, 'other_up': 41, 'down': 40, 'to_lobby': 0}]}, ['interfloor']), ('control 23', {'windows': [{'lobby_up': 6, 'other_up': 6, 'down': 20, 'to_lobby': 19}, {'lobby_up': 4, 'other_up': 7, 'down': 17, 'to_lobby': 9}, {'lobby_up': 3, 'other_up': 8, 'down': 7, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 8, 'down': 3, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 26', {'windows': [{'lobby_up': 6, 'other_up': 0, 'down': 20, 'to_lobby': 17}, {'lobby_up': 17, 'other_up': 3, 'down': 18, 'to_lobby': 1}, {'lobby_up': 6, 'other_up': 5, 'down': 7, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 8, 'down': 20, 'to_lobby': 8}, {'lobby_up': 3, 'other_up': 5, 'down': 5, 'to_lobby': 0}, {'lobby_up': 12, 'other_up': 3, 'down': 20, 'to_lobby': 19}, {'lobby_up': 17, 'other_up': 2, 'down': 1, 'to_lobby': 1}, {'lobby_up': 7, 'other_up': 5, 'down': 9, 'to_lobby': 6}]}, ['down-peak', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor']), ('control 29', {'windows': [{'lobby_up': 19, 'other_up': 4, 'down': 20, 'to_lobby': 10}, {'lobby_up': 6, 'other_up': 5, 'down': 9, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 0, 'down': 17, 'to_lobby': 0}, {'lobby_up': 19, 'other_up': 4, 'down': 8, 'to_lobby': 1}]}, ['interfloor', 'interfloor', 'interfloor', 'up-peak'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('boundary: quiet window ends a peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 6, 'other_up': 0, 'down': 2, 'to_lobby': 0}]}, ['up-peak', 'interfloor']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 34', {'windows': [{'lobby_up': 14, 'other_up': 3, 'down': 13, 'to_lobby': 8}, {'lobby_up': 8, 'other_up': 4, 'down': 1, 'to_lobby': 1}, {'lobby_up': 20, 'other_up': 0, 'down': 3, 'to_lobby': 3}, {'lobby_up': 4, 'other_up': 5, 'down': 8, 'to_lobby': 7}, {'lobby_up': 6, 'other_up': 6, 'down': 19, 'to_lobby': 5}, {'lobby_up': 6, 'other_up': 5, 'down': 7, 'to_lobby': 5}]}, ['interfloor', 'up-peak', 'up-peak', 'interfloor', 'interfloor', 'interfloor']), ('control 37', {'windows': [{'lobby_up': 16, 'other_up': 8, 'down': 17, 'to_lobby': 12}, {'lobby_up': 16, 'other_up': 3, 'down': 11, 'to_lobby': 0}, {'lobby_up': 4, 'other_up': 8, 'down': 1, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 5, 'down': 8, 'to_lobby': 5}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('sampled regression 40', {'windows': [{'lobby_up': 7, 'other_up': 6, 'down': 2, 'to_lobby': 1}, {'lobby_up': 11, 'other_up': 2, 'down': 1, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 7, 'down': 16, 'to_lobby': 4}, {'lobby_up': 0, 'other_up': 8, 'down': 18, 'to_lobby': 1}, {'lobby_up': 1, 'other_up': 2, 'down': 12, 'to_lobby': 9}, {'lobby_up': 7, 'other_up': 3, 'down': 0, 'to_lobby': 0}]}, ['interfloor', 'up-peak', 'up-peak', 'interfloor', 'down-peak', 'up-peak'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 53', {'windows': [{'lobby_up': 16, 'other_up': 7, 'down': 15, 'to_lobby': 3}, {'lobby_up': 20, 'other_up': 7, 'down': 6, 'to_lobby': 1}, {'lobby_up': 15, 'other_up': 2, 'down': 9, 'to_lobby': 3}]}, ['interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 45', {'windows': [{'lobby_up': 15, 'other_up': 5, 'down': 7, 'to_lobby': 2}, {'lobby_up': 5, 'other_up': 7, 'down': 14, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 2, 'down': 13, 'to_lobby': 4}, {'lobby_up': 3, 'other_up': 3, 'down': 10, 'to_lobby': 7}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 48', {'windows': [{'lobby_up': 0, 'other_up': 3, 'down': 12, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 1, 'down': 12, 'to_lobby': 11}, {'lobby_up': 8, 'other_up': 2, 'down': 4, 'to_lobby': 3}, {'lobby_up': 18, 'other_up': 8, 'down': 1, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 7, 'down': 18, 'to_lobby': 17}, {'lobby_up': 11, 'other_up': 1, 'down': 18, 'to_lobby': 7}, {'lobby_up': 10, 'other_up': 2, 'down': 15, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor']), ('control 51', {'windows': [{'lobby_up': 4, 'other_up': 0, 'down': 1, 'to_lobby': 0}, {'lobby_up': 16, 'other_up': 6, 'down': 19, 'to_lobby': 15}, {'lobby_up': 13, 'other_up': 6, 'down': 3, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 0, 'down': 16, 'to_lobby': 2}, {'lobby_up': 20, 'other_up': 8, 'down': 11, 'to_lobby': 7}, {'lobby_up': 10, 'other_up': 5, 'down': 6, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 6, 'down': 19, 'to_lobby': 0}, {'lobby_up': 20, 'other_up': 2, 'down': 1, 'to_lobby': 1}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'up-peak'])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"c382c868c8a90c790c319c0cfa9565d5b967a2d555f4117547a9a4b25f3d2129","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    mode = 'interfloor'\n    out = []\n    for w in x['windows']:\n        tot = w['lobby_up'] + w['other_up'] + w['down']\n        up_pct = w['lobby_up'] * 100 // tot if tot else 0\n        dn_pct = w['to_lobby'] * 100 // tot if tot else 0\n        if mode == 'up-peak':\n            if up_pct < 60 or tot < 10:\n                mode = 'interfloor'\n        elif mode == 'down-peak':\n            if dn_pct < 40 or tot < 10:\n                mode = 'interfloor'\n        if mode == 'interfloor' and tot >= 10:\n            if up_pct >= 60:\n                mode = 'up-peak'\n            elif dn_pct >= 60:\n                mode = 'down-peak'\n        out.append(mode)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 16', {'windows': [{'lobby_up': 1, 'other_up': 0, 'down': 6, 'to_lobby': 5}, {'lobby_up': 18, 'other_up': 8, 'down': 13, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 6, 'down': 2, 'to_lobby': 2}, {'lobby_up': 8, 'other_up': 6, 'down': 12, 'to_lobby': 6}, {'lobby_up': 17, 'other_up': 7, 'down': 7, 'to_lobby': 4}, {'lobby_up': 4, 'other_up': 8, 'down': 8, 'to_lobby': 6}, {'lobby_up': 18, 'other_up': 4, 'down': 0, 'to_lobby': 0}, {'lobby_up': 14, 'other_up': 4, 'down': 10, 'to_lobby': 10}]}, ['interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: quiet window ends a peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 6, 'other_up': 0, 'down': 2, 'to_lobby': 0}]}, ['up-peak', 'interfloor']), ('control 1', {'windows': [{'lobby_up': 0, 'other_up': 2, 'down': 3, 'to_lobby': 3}, {'lobby_up': 10, 'other_up': 4, 'down': 12, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 8, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 3, 'down': 17, 'to_lobby': 15}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 4', {'windows': [{'lobby_up': 18, 'other_up': 3, 'down': 8, 'to_lobby': 4}, {'lobby_up': 2, 'other_up': 3, 'down': 15, 'to_lobby': 5}, {'lobby_up': 20, 'other_up': 6, 'down': 15, 'to_lobby': 15}, {'lobby_up': 16, 'other_up': 5, 'down': 19, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 6, 'down': 16, 'to_lobby': 6}, {'lobby_up': 1, 'other_up': 8, 'down': 0, 'to_lobby': 0}, {'lobby_up': 1, 'other_up': 2, 'down': 8, 'to_lobby': 8}, {'lobby_up': 6, 'other_up': 6, 'down': 0, 'to_lobby': 0}]}, ['up-peak', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'down-peak', 'interfloor']), ('sampled regression 7', {'windows': [{'lobby_up': 17, 'other_up': 7, 'down': 6, 'to_lobby': 6}, {'lobby_up': 7, 'other_up': 3, 'down': 4, 'to_lobby': 3}, {'lobby_up': 20, 'other_up': 8, 'down': 2, 'to_lobby': 1}, {'lobby_up': 17, 'other_up': 7, 'down': 7, 'to_lobby': 6}, {'lobby_up': 2, 'other_up': 3, 'down': 8, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 3, 'down': 16, 'to_lobby': 7}, {'lobby_up': 5, 'other_up': 5, 'down': 1, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'interfloor', 'interfloor', 'interfloor'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('sampled regression 50', {'windows': [{'lobby_up': 13, 'other_up': 3, 'down': 2, 'to_lobby': 2}, {'lobby_up': 9, 'other_up': 8, 'down': 8, 'to_lobby': 8}, {'lobby_up': 18, 'other_up': 2, 'down': 6, 'to_lobby': 2}, {'lobby_up': 13, 'other_up': 7, 'down': 10, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 5, 'down': 17, 'to_lobby': 13}]}, ['up-peak', 'interfloor', 'up-peak', 'up-peak', 'interfloor']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 12', {'windows': [{'lobby_up': 16, 'other_up': 6, 'down': 0, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 4, 'down': 13, 'to_lobby': 8}, {'lobby_up': 6, 'other_up': 1, 'down': 17, 'to_lobby': 7}, {'lobby_up': 20, 'other_up': 8, 'down': 13, 'to_lobby': 11}, {'lobby_up': 19, 'other_up': 5, 'down': 0, 'to_lobby': 0}, {'lobby_up': 2, 'other_up': 6, 'down': 20, 'to_lobby': 10}, {'lobby_up': 17, 'other_up': 1, 'down': 5, 'to_lobby': 4}]}, ['up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor', 'up-peak']), ('control 15', {'windows': [{'lobby_up': 8, 'other_up': 2, 'down': 2, 'to_lobby': 2}, {'lobby_up': 2, 'other_up': 0, 'down': 19, 'to_lobby': 13}, {'lobby_up': 11, 'other_up': 7, 'down': 20, 'to_lobby': 2}, {'lobby_up': 13, 'other_up': 7, 'down': 5, 'to_lobby': 5}, {'lobby_up': 1, 'other_up': 6, 'down': 7, 'to_lobby': 2}, {'lobby_up': 3, 'other_up': 1, 'down': 20, 'to_lobby': 20}]}, ['up-peak', 'down-peak', 'interfloor', 'interfloor', 'interfloor', 'down-peak']), ('control 18', {'windows': [{'lobby_up': 9, 'other_up': 7, 'down': 0, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 8, 'down': 11, 'to_lobby': 5}, {'lobby_up': 2, 'other_up': 6, 'down': 8, 'to_lobby': 3}, {'lobby_up': 10, 'other_up': 4, 'down': 20, 'to_lobby': 1}, {'lobby_up': 13, 'other_up': 5, 'down': 19, 'to_lobby': 12}, {'lobby_up': 1, 'other_up': 5, 'down': 16, 'to_lobby': 4}, {'lobby_up': 12, 'other_up': 6, 'down': 11, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 75', {'windows': [{'lobby_up': 4, 'other_up': 5, 'down': 11, 'to_lobby': 10}, {'lobby_up': 7, 'other_up': 6, 'down': 4, 'to_lobby': 4}, {'lobby_up': 19, 'other_up': 7, 'down': 2, 'to_lobby': 1}, {'lobby_up': 6, 'other_up': 8, 'down': 14, 'to_lobby': 4}, {'lobby_up': 18, 'other_up': 0, 'down': 17, 'to_lobby': 12}, {'lobby_up': 6, 'other_up': 3, 'down': 0, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 6, 'down': 4, 'to_lobby': 1}, {'lobby_up': 20, 'other_up': 2, 'down': 19, 'to_lobby': 14}]}, ['interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: fraction just under sixty', {'windows': [{'lobby_up': 119, 'other_up': 41, 'down': 40, 'to_lobby': 0}]}, ['interfloor']), ('control 23', {'windows': [{'lobby_up': 6, 'other_up': 6, 'down': 20, 'to_lobby': 19}, {'lobby_up': 4, 'other_up': 7, 'down': 17, 'to_lobby': 9}, {'lobby_up': 3, 'other_up': 8, 'down': 7, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 8, 'down': 3, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 26', {'windows': [{'lobby_up': 6, 'other_up': 0, 'down': 20, 'to_lobby': 17}, {'lobby_up': 17, 'other_up': 3, 'down': 18, 'to_lobby': 1}, {'lobby_up': 6, 'other_up': 5, 'down': 7, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 8, 'down': 20, 'to_lobby': 8}, {'lobby_up': 3, 'other_up': 5, 'down': 5, 'to_lobby': 0}, {'lobby_up': 12, 'other_up': 3, 'down': 20, 'to_lobby': 19}, {'lobby_up': 17, 'other_up': 2, 'down': 1, 'to_lobby': 1}, {'lobby_up': 7, 'other_up': 5, 'down': 9, 'to_lobby': 6}]}, ['down-peak', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor']), ('control 29', {'windows': [{'lobby_up': 19, 'other_up': 4, 'down': 20, 'to_lobby': 10}, {'lobby_up': 6, 'other_up': 5, 'down': 9, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 0, 'down': 17, 'to_lobby': 0}, {'lobby_up': 19, 'other_up': 4, 'down': 8, 'to_lobby': 1}]}, ['interfloor', 'interfloor', 'interfloor', 'up-peak'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('boundary: quiet window ends a peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 6, 'other_up': 0, 'down': 2, 'to_lobby': 0}]}, ['up-peak', 'interfloor']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 34', {'windows': [{'lobby_up': 14, 'other_up': 3, 'down': 13, 'to_lobby': 8}, {'lobby_up': 8, 'other_up': 4, 'down': 1, 'to_lobby': 1}, {'lobby_up': 20, 'other_up': 0, 'down': 3, 'to_lobby': 3}, {'lobby_up': 4, 'other_up': 5, 'down': 8, 'to_lobby': 7}, {'lobby_up': 6, 'other_up': 6, 'down': 19, 'to_lobby': 5}, {'lobby_up': 6, 'other_up': 5, 'down': 7, 'to_lobby': 5}]}, ['interfloor', 'up-peak', 'up-peak', 'interfloor', 'interfloor', 'interfloor']), ('control 37', {'windows': [{'lobby_up': 16, 'other_up': 8, 'down': 17, 'to_lobby': 12}, {'lobby_up': 16, 'other_up': 3, 'down': 11, 'to_lobby': 0}, {'lobby_up': 4, 'other_up': 8, 'down': 1, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 5, 'down': 8, 'to_lobby': 5}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('sampled regression 40', {'windows': [{'lobby_up': 7, 'other_up': 6, 'down': 2, 'to_lobby': 1}, {'lobby_up': 11, 'other_up': 2, 'down': 1, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 7, 'down': 16, 'to_lobby': 4}, {'lobby_up': 0, 'other_up': 8, 'down': 18, 'to_lobby': 1}, {'lobby_up': 1, 'other_up': 2, 'down': 12, 'to_lobby': 9}, {'lobby_up': 7, 'other_up': 3, 'down': 0, 'to_lobby': 0}]}, ['interfloor', 'up-peak', 'up-peak', 'interfloor', 'down-peak', 'up-peak'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 53', {'windows': [{'lobby_up': 16, 'other_up': 7, 'down': 15, 'to_lobby': 3}, {'lobby_up': 20, 'other_up': 7, 'down': 6, 'to_lobby': 1}, {'lobby_up': 15, 'other_up': 2, 'down': 9, 'to_lobby': 3}]}, ['interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 45', {'windows': [{'lobby_up': 15, 'other_up': 5, 'down': 7, 'to_lobby': 2}, {'lobby_up': 5, 'other_up': 7, 'down': 14, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 2, 'down': 13, 'to_lobby': 4}, {'lobby_up': 3, 'other_up': 3, 'down': 10, 'to_lobby': 7}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 48', {'windows': [{'lobby_up': 0, 'other_up': 3, 'down': 12, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 1, 'down': 12, 'to_lobby': 11}, {'lobby_up': 8, 'other_up': 2, 'down': 4, 'to_lobby': 3}, {'lobby_up': 18, 'other_up': 8, 'down': 1, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 7, 'down': 18, 'to_lobby': 17}, {'lobby_up': 11, 'other_up': 1, 'down': 18, 'to_lobby': 7}, {'lobby_up': 10, 'other_up': 2, 'down': 15, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor']), ('control 51', {'windows': [{'lobby_up': 4, 'other_up': 0, 'down': 1, 'to_lobby': 0}, {'lobby_up': 16, 'other_up': 6, 'down': 19, 'to_lobby': 15}, {'lobby_up': 13, 'other_up': 6, 'down': 3, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 0, 'down': 16, 'to_lobby': 2}, {'lobby_up': 20, 'other_up': 8, 'down': 11, 'to_lobby': 7}, {'lobby_up': 10, 'other_up': 5, 'down': 6, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 6, 'down': 19, 'to_lobby': 0}, {'lobby_up': 20, 'other_up': 2, 'down': 1, 'to_lobby': 1}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'up-peak'])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"93d0f3710ea07576e44f4b0e4c50779dc9bf388061b050e267cfb3927cf795d1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    mode = 'interfloor'\n    out = []\n    for w in x['windows']:\n        tot = w['lobby_up'] + w['other_up'] + w['down']\n        up_pct = w['lobby_up'] * 100 // tot if tot else 0\n        dn_pct = w['to_lobby'] * 100 // tot if tot else 0\n        if mode == 'up-peak':\n            if up_pct < 40 or tot < 10:\n                mode = 'interfloor'\n        elif mode == 'down-peak':\n            if dn_pct < 40 or tot < 10:\n                mode = 'interfloor'\n        if mode == 'interfloor' and tot >= 10:\n            if up_pct >= 60:\n                mode = 'up-peak'\n            elif dn_pct >= 60:\n                mode = 'down-peak'\n        out.append(mode)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 16', {'windows': [{'lobby_up': 1, 'other_up': 0, 'down': 6, 'to_lobby': 5}, {'lobby_up': 18, 'other_up': 8, 'down': 13, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 6, 'down': 2, 'to_lobby': 2}, {'lobby_up': 8, 'other_up': 6, 'down': 12, 'to_lobby': 6}, {'lobby_up': 17, 'other_up': 7, 'down': 7, 'to_lobby': 4}, {'lobby_up': 4, 'other_up': 8, 'down': 8, 'to_lobby': 6}, {'lobby_up': 18, 'other_up': 4, 'down': 0, 'to_lobby': 0}, {'lobby_up': 14, 'other_up': 4, 'down': 10, 'to_lobby': 10}]}, ['interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: quiet window ends a peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 6, 'other_up': 0, 'down': 2, 'to_lobby': 0}]}, ['up-peak', 'interfloor']), ('control 1', {'windows': [{'lobby_up': 0, 'other_up': 2, 'down': 3, 'to_lobby': 3}, {'lobby_up': 10, 'other_up': 4, 'down': 12, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 8, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 3, 'down': 17, 'to_lobby': 15}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 4', {'windows': [{'lobby_up': 18, 'other_up': 3, 'down': 8, 'to_lobby': 4}, {'lobby_up': 2, 'other_up': 3, 'down': 15, 'to_lobby': 5}, {'lobby_up': 20, 'other_up': 6, 'down': 15, 'to_lobby': 15}, {'lobby_up': 16, 'other_up': 5, 'down': 19, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 6, 'down': 16, 'to_lobby': 6}, {'lobby_up': 1, 'other_up': 8, 'down': 0, 'to_lobby': 0}, {'lobby_up': 1, 'other_up': 2, 'down': 8, 'to_lobby': 8}, {'lobby_up': 6, 'other_up': 6, 'down': 0, 'to_lobby': 0}]}, ['up-peak', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'down-peak', 'interfloor']), ('sampled regression 7', {'windows': [{'lobby_up': 17, 'other_up': 7, 'down': 6, 'to_lobby': 6}, {'lobby_up': 7, 'other_up': 3, 'down': 4, 'to_lobby': 3}, {'lobby_up': 20, 'other_up': 8, 'down': 2, 'to_lobby': 1}, {'lobby_up': 17, 'other_up': 7, 'down': 7, 'to_lobby': 6}, {'lobby_up': 2, 'other_up': 3, 'down': 8, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 3, 'down': 16, 'to_lobby': 7}, {'lobby_up': 5, 'other_up': 5, 'down': 1, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'interfloor', 'interfloor', 'interfloor'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('sampled regression 50', {'windows': [{'lobby_up': 13, 'other_up': 3, 'down': 2, 'to_lobby': 2}, {'lobby_up': 9, 'other_up': 8, 'down': 8, 'to_lobby': 8}, {'lobby_up': 18, 'other_up': 2, 'down': 6, 'to_lobby': 2}, {'lobby_up': 13, 'other_up': 7, 'down': 10, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 5, 'down': 17, 'to_lobby': 13}]}, ['up-peak', 'interfloor', 'up-peak', 'up-peak', 'interfloor']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 12', {'windows': [{'lobby_up': 16, 'other_up': 6, 'down': 0, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 4, 'down': 13, 'to_lobby': 8}, {'lobby_up': 6, 'other_up': 1, 'down': 17, 'to_lobby': 7}, {'lobby_up': 20, 'other_up': 8, 'down': 13, 'to_lobby': 11}, {'lobby_up': 19, 'other_up': 5, 'down': 0, 'to_lobby': 0}, {'lobby_up': 2, 'other_up': 6, 'down': 20, 'to_lobby': 10}, {'lobby_up': 17, 'other_up': 1, 'down': 5, 'to_lobby': 4}]}, ['up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor', 'up-peak']), ('control 15', {'windows': [{'lobby_up': 8, 'other_up': 2, 'down': 2, 'to_lobby': 2}, {'lobby_up': 2, 'other_up': 0, 'down': 19, 'to_lobby': 13}, {'lobby_up': 11, 'other_up': 7, 'down': 20, 'to_lobby': 2}, {'lobby_up': 13, 'other_up': 7, 'down': 5, 'to_lobby': 5}, {'lobby_up': 1, 'other_up': 6, 'down': 7, 'to_lobby': 2}, {'lobby_up': 3, 'other_up': 1, 'down': 20, 'to_lobby': 20}]}, ['up-peak', 'down-peak', 'interfloor', 'interfloor', 'interfloor', 'down-peak']), ('control 18', {'windows': [{'lobby_up': 9, 'other_up': 7, 'down': 0, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 8, 'down': 11, 'to_lobby': 5}, {'lobby_up': 2, 'other_up': 6, 'down': 8, 'to_lobby': 3}, {'lobby_up': 10, 'other_up': 4, 'down': 20, 'to_lobby': 1}, {'lobby_up': 13, 'other_up': 5, 'down': 19, 'to_lobby': 12}, {'lobby_up': 1, 'other_up': 5, 'down': 16, 'to_lobby': 4}, {'lobby_up': 12, 'other_up': 6, 'down': 11, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 75', {'windows': [{'lobby_up': 4, 'other_up': 5, 'down': 11, 'to_lobby': 10}, {'lobby_up': 7, 'other_up': 6, 'down': 4, 'to_lobby': 4}, {'lobby_up': 19, 'other_up': 7, 'down': 2, 'to_lobby': 1}, {'lobby_up': 6, 'other_up': 8, 'down': 14, 'to_lobby': 4}, {'lobby_up': 18, 'other_up': 0, 'down': 17, 'to_lobby': 12}, {'lobby_up': 6, 'other_up': 3, 'down': 0, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 6, 'down': 4, 'to_lobby': 1}, {'lobby_up': 20, 'other_up': 2, 'down': 19, 'to_lobby': 14}]}, ['interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: fraction just under sixty', {'windows': [{'lobby_up': 119, 'other_up': 41, 'down': 40, 'to_lobby': 0}]}, ['interfloor']), ('control 23', {'windows': [{'lobby_up': 6, 'other_up': 6, 'down': 20, 'to_lobby': 19}, {'lobby_up': 4, 'other_up': 7, 'down': 17, 'to_lobby': 9}, {'lobby_up': 3, 'other_up': 8, 'down': 7, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 8, 'down': 3, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 26', {'windows': [{'lobby_up': 6, 'other_up': 0, 'down': 20, 'to_lobby': 17}, {'lobby_up': 17, 'other_up': 3, 'down': 18, 'to_lobby': 1}, {'lobby_up': 6, 'other_up': 5, 'down': 7, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 8, 'down': 20, 'to_lobby': 8}, {'lobby_up': 3, 'other_up': 5, 'down': 5, 'to_lobby': 0}, {'lobby_up': 12, 'other_up': 3, 'down': 20, 'to_lobby': 19}, {'lobby_up': 17, 'other_up': 2, 'down': 1, 'to_lobby': 1}, {'lobby_up': 7, 'other_up': 5, 'down': 9, 'to_lobby': 6}]}, ['down-peak', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor']), ('control 29', {'windows': [{'lobby_up': 19, 'other_up': 4, 'down': 20, 'to_lobby': 10}, {'lobby_up': 6, 'other_up': 5, 'down': 9, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 0, 'down': 17, 'to_lobby': 0}, {'lobby_up': 19, 'other_up': 4, 'down': 8, 'to_lobby': 1}]}, ['interfloor', 'interfloor', 'interfloor', 'up-peak'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('boundary: quiet window ends a peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 6, 'other_up': 0, 'down': 2, 'to_lobby': 0}]}, ['up-peak', 'interfloor']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 34', {'windows': [{'lobby_up': 14, 'other_up': 3, 'down': 13, 'to_lobby': 8}, {'lobby_up': 8, 'other_up': 4, 'down': 1, 'to_lobby': 1}, {'lobby_up': 20, 'other_up': 0, 'down': 3, 'to_lobby': 3}, {'lobby_up': 4, 'other_up': 5, 'down': 8, 'to_lobby': 7}, {'lobby_up': 6, 'other_up': 6, 'down': 19, 'to_lobby': 5}, {'lobby_up': 6, 'other_up': 5, 'down': 7, 'to_lobby': 5}]}, ['interfloor', 'up-peak', 'up-peak', 'interfloor', 'interfloor', 'interfloor']), ('control 37', {'windows': [{'lobby_up': 16, 'other_up': 8, 'down': 17, 'to_lobby': 12}, {'lobby_up': 16, 'other_up': 3, 'down': 11, 'to_lobby': 0}, {'lobby_up': 4, 'other_up': 8, 'down': 1, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 5, 'down': 8, 'to_lobby': 5}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('sampled regression 40', {'windows': [{'lobby_up': 7, 'other_up': 6, 'down': 2, 'to_lobby': 1}, {'lobby_up': 11, 'other_up': 2, 'down': 1, 'to_lobby': 0}, {'lobby_up': 18, 'other_up': 7, 'down': 16, 'to_lobby': 4}, {'lobby_up': 0, 'other_up': 8, 'down': 18, 'to_lobby': 1}, {'lobby_up': 1, 'other_up': 2, 'down': 12, 'to_lobby': 9}, {'lobby_up': 7, 'other_up': 3, 'down': 0, 'to_lobby': 0}]}, ['interfloor', 'up-peak', 'up-peak', 'interfloor', 'down-peak', 'up-peak'])], [('regression: hysteresis keeps up-peak', {'windows': [{'lobby_up': 12, 'other_up': 2, 'down': 6, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 5, 'down': 6, 'to_lobby': 1}]}, ['up-peak', 'up-peak']), ('sampled regression 22', {'windows': [{'lobby_up': 0, 'other_up': 0, 'down': 15, 'to_lobby': 7}, {'lobby_up': 7, 'other_up': 4, 'down': 18, 'to_lobby': 0}, {'lobby_up': 10, 'other_up': 0, 'down': 4, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 7, 'down': 4, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 2, 'down': 20, 'to_lobby': 14}, {'lobby_up': 6, 'other_up': 5, 'down': 11, 'to_lobby': 11}, {'lobby_up': 0, 'other_up': 6, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'interfloor', 'interfloor']), ('sampled regression 53', {'windows': [{'lobby_up': 16, 'other_up': 7, 'down': 15, 'to_lobby': 3}, {'lobby_up': 20, 'other_up': 7, 'down': 6, 'to_lobby': 1}, {'lobby_up': 15, 'other_up': 2, 'down': 9, 'to_lobby': 3}]}, ['interfloor', 'up-peak', 'up-peak']), ('sampled regression 67', {'windows': [{'lobby_up': 7, 'other_up': 0, 'down': 15, 'to_lobby': 4}, {'lobby_up': 8, 'other_up': 7, 'down': 9, 'to_lobby': 2}, {'lobby_up': 17, 'other_up': 1, 'down': 9, 'to_lobby': 2}, {'lobby_up': 19, 'other_up': 0, 'down': 15, 'to_lobby': 10}, {'lobby_up': 12, 'other_up': 1, 'down': 17, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 3, 'down': 15, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 7, 'down': 5, 'to_lobby': 0}]}, ['interfloor', 'interfloor', 'up-peak', 'up-peak', 'up-peak', 'up-peak', 'up-peak']), ('boundary: quiet window cannot start a peak', {'windows': [{'lobby_up': 8, 'other_up': 0, 'down': 1, 'to_lobby': 0}]}, ['interfloor']), ('control 45', {'windows': [{'lobby_up': 15, 'other_up': 5, 'down': 7, 'to_lobby': 2}, {'lobby_up': 5, 'other_up': 7, 'down': 14, 'to_lobby': 0}, {'lobby_up': 17, 'other_up': 2, 'down': 13, 'to_lobby': 4}, {'lobby_up': 3, 'other_up': 3, 'down': 10, 'to_lobby': 7}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor']), ('control 48', {'windows': [{'lobby_up': 0, 'other_up': 3, 'down': 12, 'to_lobby': 1}, {'lobby_up': 19, 'other_up': 1, 'down': 12, 'to_lobby': 11}, {'lobby_up': 8, 'other_up': 2, 'down': 4, 'to_lobby': 3}, {'lobby_up': 18, 'other_up': 8, 'down': 1, 'to_lobby': 0}, {'lobby_up': 9, 'other_up': 7, 'down': 18, 'to_lobby': 17}, {'lobby_up': 11, 'other_up': 1, 'down': 18, 'to_lobby': 7}, {'lobby_up': 10, 'other_up': 2, 'down': 15, 'to_lobby': 2}]}, ['interfloor', 'interfloor', 'interfloor', 'up-peak', 'interfloor', 'interfloor', 'interfloor']), ('control 51', {'windows': [{'lobby_up': 4, 'other_up': 0, 'down': 1, 'to_lobby': 0}, {'lobby_up': 16, 'other_up': 6, 'down': 19, 'to_lobby': 15}, {'lobby_up': 13, 'other_up': 6, 'down': 3, 'to_lobby': 3}, {'lobby_up': 15, 'other_up': 0, 'down': 16, 'to_lobby': 2}, {'lobby_up': 20, 'other_up': 8, 'down': 11, 'to_lobby': 7}, {'lobby_up': 10, 'other_up': 5, 'down': 6, 'to_lobby': 1}, {'lobby_up': 12, 'other_up': 6, 'down': 19, 'to_lobby': 0}, {'lobby_up': 20, 'other_up': 2, 'down': 1, 'to_lobby': 1}]}, ['interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'interfloor', 'up-peak'])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Stipulated toy lift-control contract for a bounded teaching model; it makes no claim of conformance to any lift code or vendor dispatcher and omits real safety cases. 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-elevator_dispatch_scheduling-traffic-pattern-detection-exit-hysteresis","generated_at":"2026-09-29T14:47:55.738484+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Lift group controllers make these decisions many times per minute; a wrong answer strands passengers, wastes trips or overrides a safety rule.","repair":"Leave up-peak only below 40 percent.","root_cause":"The exit threshold equals the entry threshold.","sha256":"23f38055f047a62b4f1c80a23e6dd7f981f1029a65be25d6375978b71d947bd4","title":"Traffic pattern detection with hysteresis: exit hysteresis · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.834,"exit_code":1,"observations":[{"actual":["up-peak","up-peak"],"check":"regression: hysteresis keeps up-peak","expected":["up-peak","up-peak"],"passed":true},{"actual":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"check":"sampled regression 22","expected":["interfloor","interfloor","up-peak","up-peak","up-peak","interfloor","interfloor"],"passed":false},{"actual":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","up-peak","up-peak"],"check":"sampled regression 16","expected":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","up-peak","up-peak"],"passed":true},{"actual":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"check":"sampled regression 67","expected":["interfloor","interfloor","up-peak","up-peak","up-peak","up-peak","up-peak"],"passed":false},{"actual":["up-peak","interfloor"],"check":"boundary: quiet window ends a peak","expected":["up-peak","interfloor"],"passed":true},{"actual":["interfloor","interfloor","interfloor","interfloor"],"check":"control 1","expected":["interfloor","interfloor","interfloor","interfloor"],"passed":true},{"actual":["up-peak","interfloor","interfloor","interfloor","interfloor","interfloor","down-peak","interfloor"],"check":"control 4","expected":["up-peak","interfloor","interfloor","interfloor","interfloor","interfloor","down-peak","interfloor"],"passed":true},{"actual":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"check":"sampled regression 7","expected":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hysteresis keeps up-peak\", \"actual\": [\"up-peak\", \"up-peak\"], \"expected\": [\"up-peak\", \"up-peak\"], \"passed\": true}, {\"check\": \"sampled regression 22\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\"], \"passed\": false}, {\"check\": \"sampled regression 16\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\"], \"passed\": true}, {\"check\": \"sampled regression 67\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\"], \"passed\": false}, {\"check\": \"boundary: quiet window ends a peak\", \"actual\": [\"up-peak\", \"interfloor\"], \"expected\": [\"up-peak\", \"interfloor\"], \"passed\": true}, {\"check\": \"control 1\", \"actual\": [\"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"down-peak\", \"interfloor\"], \"expected\": [\"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"down-peak\", \"interfloor\"], \"passed\": true}, {\"check\": \"sampled regression 7\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.019,"exit_code":1,"observations":[{"actual":["up-peak","interfloor"],"check":"regression: hysteresis keeps up-peak","expected":["up-peak","up-peak"],"passed":false},{"actual":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"check":"sampled regression 22","expected":["interfloor","interfloor","up-peak","up-peak","up-peak","interfloor","interfloor"],"passed":false},{"actual":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","up-peak","interfloor"],"check":"sampled regression 16","expected":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","up-peak","up-peak"],"passed":false},{"actual":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","interfloor"],"check":"sampled regression 67","expected":["interfloor","interfloor","up-peak","up-peak","up-peak","up-peak","up-peak"],"passed":false},{"actual":["up-peak","interfloor"],"check":"boundary: quiet window ends a peak","expected":["up-peak","interfloor"],"passed":true},{"actual":["interfloor","interfloor","interfloor","interfloor"],"check":"control 1","expected":["interfloor","interfloor","interfloor","interfloor"],"passed":true},{"actual":["up-peak","interfloor","interfloor","interfloor","interfloor","interfloor","down-peak","interfloor"],"check":"control 4","expected":["up-peak","interfloor","interfloor","interfloor","interfloor","interfloor","down-peak","interfloor"],"passed":true},{"actual":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","interfloor"],"check":"sampled regression 7","expected":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hysteresis keeps up-peak\", \"actual\": [\"up-peak\", \"interfloor\"], \"expected\": [\"up-peak\", \"up-peak\"], \"passed\": false}, {\"check\": \"sampled regression 22\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\"], \"passed\": false}, {\"check\": \"sampled regression 16\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\"], \"passed\": false}, {\"check\": \"sampled regression 67\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\"], \"passed\": false}, {\"check\": \"boundary: quiet window ends a peak\", \"actual\": [\"up-peak\", \"interfloor\"], \"expected\": [\"up-peak\", \"interfloor\"], \"passed\": true}, {\"check\": \"control 1\", \"actual\": [\"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"down-peak\", \"interfloor\"], \"expected\": [\"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"down-peak\", \"interfloor\"], \"passed\": true}, {\"check\": \"sampled regression 7\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.829,"exit_code":0,"observations":[{"actual":["up-peak","up-peak"],"check":"regression: hysteresis keeps up-peak","expected":["up-peak","up-peak"],"passed":true},{"actual":["interfloor","interfloor","up-peak","up-peak","up-peak","interfloor","interfloor"],"check":"sampled regression 22","expected":["interfloor","interfloor","up-peak","up-peak","up-peak","interfloor","interfloor"],"passed":true},{"actual":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","up-peak","up-peak"],"check":"sampled regression 16","expected":["interfloor","interfloor","up-peak","interfloor","interfloor","interfloor","up-peak","up-peak"],"passed":true},{"actual":["interfloor","interfloor","up-peak","up-peak","up-peak","up-peak","up-peak"],"check":"sampled regression 67","expected":["interfloor","interfloor","up-peak","up-peak","up-peak","up-peak","up-peak"],"passed":true},{"actual":["up-peak","interfloor"],"check":"boundary: quiet window ends a peak","expected":["up-peak","interfloor"],"passed":true},{"actual":["interfloor","interfloor","interfloor","interfloor"],"check":"control 1","expected":["interfloor","interfloor","interfloor","interfloor"],"passed":true},{"actual":["up-peak","interfloor","interfloor","interfloor","interfloor","interfloor","down-peak","interfloor"],"check":"control 4","expected":["up-peak","interfloor","interfloor","interfloor","interfloor","interfloor","down-peak","interfloor"],"passed":true},{"actual":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"check":"sampled regression 7","expected":["interfloor","interfloor","up-peak","up-peak","interfloor","interfloor","interfloor"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hysteresis keeps up-peak\", \"actual\": [\"up-peak\", \"up-peak\"], \"expected\": [\"up-peak\", \"up-peak\"], \"passed\": true}, {\"check\": \"sampled regression 22\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\"], \"passed\": true}, {\"check\": \"sampled regression 16\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\"], \"passed\": true}, {\"check\": \"sampled regression 67\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\", \"up-peak\"], \"passed\": true}, {\"check\": \"boundary: quiet window ends a peak\", \"actual\": [\"up-peak\", \"interfloor\"], \"expected\": [\"up-peak\", \"interfloor\"], \"passed\": true}, {\"check\": \"control 1\", \"actual\": [\"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\"], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"down-peak\", \"interfloor\"], \"expected\": [\"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"interfloor\", \"down-peak\", \"interfloor\"], \"passed\": true}, {\"check\": \"sampled regression 7\", \"actual\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"expected\": [\"interfloor\", \"interfloor\", \"up-peak\", \"up-peak\", \"interfloor\", \"interfloor\", \"interfloor\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}