{"abstract":"While active, event duplicate_activation produces active/swap_again instead of active/ack_current.","category":"Protocols","checks":14,"contract":"For the stipulated Peer configuration epoch activation controller, initialize the explicitly shown resource registers from seed (1..5), then consume classified events sequentially. After each event return a deep snapshot of phase, resource registers, and cumulative emitted control frames. The explicit ten phase/event rules and their resource effects define admission and response semantics. Unlisted events preserve phase and emit rejection. Payload is the consecutive integers seed through 2*seed+1. Empty event input returns no observations.","evaluation_group":"s3-protocols-configuration_epoch","failed_approach":"The partial repair chooses pending/stage_config, which still violates this phase-specific event contract.","family":"s3-protocols-configuration_epoch-active-duplicate_activation","id":"FA-19831","implementations":{"attempt":{"sha256":"3cd042b6d90a97ffebeba92b7c2d8f8807b9ebfcda5eb9899c0dcb652b452092","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phase, events, seed):\n    payload = list(range(seed, seed * 2 + 2))\n    r = {'active': [seed], 'staged': payload[:] if phase in ('pending','prepared','recovering') else [], 'epoch': seed, 'processed': [], 'validated': phase=='prepared'}\n    frames = []\n    observed = []\n    table = {('active', 'propose'): ('pending', 'stage_config'), ('pending', 'validated'): ('prepared', 'send_prepared'), ('pending', 'invalid'): ('active', 'discard_proposal'), ('prepared', 'activate'): ('active', 'swap_epoch'), ('prepared', 'withdraw'): ('active', 'discard_proposal'), ('prepared', 'old_epoch_data'): ('prepared', 'process_old'), ('active', 'future_epoch_data'): ('active', 'reject_future'), ('pending', 'second_proposal'): ('pending', 'reject_busy'), ('active', 'duplicate_activation'): ('pending', 'stage_config'), ('prepared', 'restart'): ('recovering', 'load_prepared')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'stage_config':\n            r['staged']=payload[:]\n        elif action == 'send_prepared':\n            r['validated']=True; frames.append(['PREPARED',seed+1])\n        elif action == 'discard_proposal':\n            r['staged']=[]\n        elif action == 'swap_epoch':\n            r['active']=r['staged'][:]; r['staged']=[]; r['epoch']+=1\n        elif action == 'process_old':\n            r['processed'].append([seed,payload])\n        elif action == 'reject_future':\n            frames.append(['FUTURE_EPOCH',seed+1])\n        elif action == 'reject_busy':\n            frames.append(['CONFIG_BUSY',seed])\n        elif action == 'ack_current':\n            frames.append(['ACTIVE',r['epoch']])\n        elif action == 'load_prepared':\n            frames.append(['RECOVER_PREPARED',r['staged'][:]])\n        elif action == 'activate_config':\n            r['active']=payload[:]; r['epoch']+=1\n        elif action == 'overwrite_active':\n            r['active']=payload[:]\n        elif action == 'send_active':\n            frames.append(['ACTIVE',seed+1])\n        elif action == 'merge_epochs':\n            r['active'].extend(r['staged']); r['epoch']+=1\n        elif action == 'clear_active':\n            r['active']=[]\n        elif action == 'process_new':\n            r['processed'].append([seed+1,payload])\n        elif action == 'stage_from_data':\n            r['staged']=payload[:]\n        elif action == 'replace_staged':\n            r['staged']=payload[:]\n        elif action == 'discard_all':\n            r['active']=[]; r['staged']=[]\n        elif action == 'swap_again':\n            r['epoch']+=1\n        elif action == 'load_active_only':\n            frames.append(['RECOVER_ACTIVE',r['active'][:]])\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 2]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [1, 2, 3], 'staged': [], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [[1, [1, 2, 3]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 2]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 1]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [1, 2, 3]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}, {'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [1, 2, 3]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 3]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [2, 3, 4, 5], 'staged': [], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [[2, [2, 3, 4, 5]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 3]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 2]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [2, 3, 4, 5]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}, {'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [2, 3, 4, 5]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 4]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [3, 4, 5, 6, 7], 'staged': [], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [[3, [3, 4, 5, 6, 7]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 4]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 3]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [3, 4, 5, 6, 7]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3], ['ACTIVE', 3]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [3, 4, 5, 6, 7]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 5]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [4, 5, 6, 7, 8, 9], 'staged': [], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [[4, [4, 5, 6, 7, 8, 9]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 5]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 4]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [4, 5, 6, 7, 8, 9]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation', 'propose'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4], ['ACTIVE', 4]]}, {'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4], ['ACTIVE', 4]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [4, 5, 6, 7, 8, 9]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 6]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [5, 6, 7, 8, 9, 10, 11], 'staged': [], 'epoch': 6, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [[5, [5, 6, 7, 8, 9, 10, 11]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 6]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 5]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [5, 6, 7, 8, 9, 10, 11]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation', 'propose', 'invalid'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}, {'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [5, 6, 7, 8, 9, 10, 11]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), 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":"da6d27a07c91105b66b3f7e9aaa5a954df7dcb3ebd3fc2ccd86201d12262bd00","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phase, events, seed):\n    payload = list(range(seed, seed * 2 + 2))\n    r = {'active': [seed], 'staged': payload[:] if phase in ('pending','prepared','recovering') else [], 'epoch': seed, 'processed': [], 'validated': phase=='prepared'}\n    frames = []\n    observed = []\n    table = {('active', 'propose'): ('pending', 'stage_config'), ('pending', 'validated'): ('prepared', 'send_prepared'), ('pending', 'invalid'): ('active', 'discard_proposal'), ('prepared', 'activate'): ('active', 'swap_epoch'), ('prepared', 'withdraw'): ('active', 'discard_proposal'), ('prepared', 'old_epoch_data'): ('prepared', 'process_old'), ('active', 'future_epoch_data'): ('active', 'reject_future'), ('pending', 'second_proposal'): ('pending', 'reject_busy'), ('active', 'duplicate_activation'): ('active', 'swap_again'), ('prepared', 'restart'): ('recovering', 'load_prepared')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'stage_config':\n            r['staged']=payload[:]\n        elif action == 'send_prepared':\n            r['validated']=True; frames.append(['PREPARED',seed+1])\n        elif action == 'discard_proposal':\n            r['staged']=[]\n        elif action == 'swap_epoch':\n            r['active']=r['staged'][:]; r['staged']=[]; r['epoch']+=1\n        elif action == 'process_old':\n            r['processed'].append([seed,payload])\n        elif action == 'reject_future':\n            frames.append(['FUTURE_EPOCH',seed+1])\n        elif action == 'reject_busy':\n            frames.append(['CONFIG_BUSY',seed])\n        elif action == 'ack_current':\n            frames.append(['ACTIVE',r['epoch']])\n        elif action == 'load_prepared':\n            frames.append(['RECOVER_PREPARED',r['staged'][:]])\n        elif action == 'activate_config':\n            r['active']=payload[:]; r['epoch']+=1\n        elif action == 'overwrite_active':\n            r['active']=payload[:]\n        elif action == 'send_active':\n            frames.append(['ACTIVE',seed+1])\n        elif action == 'merge_epochs':\n            r['active'].extend(r['staged']); r['epoch']+=1\n        elif action == 'clear_active':\n            r['active']=[]\n        elif action == 'process_new':\n            r['processed'].append([seed+1,payload])\n        elif action == 'stage_from_data':\n            r['staged']=payload[:]\n        elif action == 'replace_staged':\n            r['staged']=payload[:]\n        elif action == 'discard_all':\n            r['active']=[]; r['staged']=[]\n        elif action == 'swap_again':\n            r['epoch']+=1\n        elif action == 'load_active_only':\n            frames.append(['RECOVER_ACTIVE',r['active'][:]])\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 2]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [1, 2, 3], 'staged': [], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [[1, [1, 2, 3]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 2]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 1]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [1, 2, 3]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}, {'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [1, 2, 3]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 3]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [2, 3, 4, 5], 'staged': [], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [[2, [2, 3, 4, 5]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 3]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 2]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [2, 3, 4, 5]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}, {'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [2, 3, 4, 5]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 4]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [3, 4, 5, 6, 7], 'staged': [], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [[3, [3, 4, 5, 6, 7]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 4]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 3]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [3, 4, 5, 6, 7]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3], ['ACTIVE', 3]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [3, 4, 5, 6, 7]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 5]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [4, 5, 6, 7, 8, 9], 'staged': [], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [[4, [4, 5, 6, 7, 8, 9]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 5]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 4]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [4, 5, 6, 7, 8, 9]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation', 'propose'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4], ['ACTIVE', 4]]}, {'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4], ['ACTIVE', 4]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [4, 5, 6, 7, 8, 9]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 6]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [5, 6, 7, 8, 9, 10, 11], 'staged': [], 'epoch': 6, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [[5, [5, 6, 7, 8, 9, 10, 11]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 6]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 5]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [5, 6, 7, 8, 9, 10, 11]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation', 'propose', 'invalid'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}, {'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [5, 6, 7, 8, 9, 10, 11]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), 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":"1aee02e972851e694d8df54f9778fd2a38dd01a258e35fef036cac7852c5b184","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phase, events, seed):\n    payload = list(range(seed, seed * 2 + 2))\n    r = {'active': [seed], 'staged': payload[:] if phase in ('pending','prepared','recovering') else [], 'epoch': seed, 'processed': [], 'validated': phase=='prepared'}\n    frames = []\n    observed = []\n    table = {('active', 'propose'): ('pending', 'stage_config'), ('pending', 'validated'): ('prepared', 'send_prepared'), ('pending', 'invalid'): ('active', 'discard_proposal'), ('prepared', 'activate'): ('active', 'swap_epoch'), ('prepared', 'withdraw'): ('active', 'discard_proposal'), ('prepared', 'old_epoch_data'): ('prepared', 'process_old'), ('active', 'future_epoch_data'): ('active', 'reject_future'), ('pending', 'second_proposal'): ('pending', 'reject_busy'), ('active', 'duplicate_activation'): ('active', 'ack_current'), ('prepared', 'restart'): ('recovering', 'load_prepared')}\n    for event in events:\n        phase, action = table.get((phase, event), (phase, \"reject\"))\n        if action == 'stage_config':\n            r['staged']=payload[:]\n        elif action == 'send_prepared':\n            r['validated']=True; frames.append(['PREPARED',seed+1])\n        elif action == 'discard_proposal':\n            r['staged']=[]\n        elif action == 'swap_epoch':\n            r['active']=r['staged'][:]; r['staged']=[]; r['epoch']+=1\n        elif action == 'process_old':\n            r['processed'].append([seed,payload])\n        elif action == 'reject_future':\n            frames.append(['FUTURE_EPOCH',seed+1])\n        elif action == 'reject_busy':\n            frames.append(['CONFIG_BUSY',seed])\n        elif action == 'ack_current':\n            frames.append(['ACTIVE',r['epoch']])\n        elif action == 'load_prepared':\n            frames.append(['RECOVER_PREPARED',r['staged'][:]])\n        elif action == 'activate_config':\n            r['active']=payload[:]; r['epoch']+=1\n        elif action == 'overwrite_active':\n            r['active']=payload[:]\n        elif action == 'send_active':\n            frames.append(['ACTIVE',seed+1])\n        elif action == 'merge_epochs':\n            r['active'].extend(r['staged']); r['epoch']+=1\n        elif action == 'clear_active':\n            r['active']=[]\n        elif action == 'process_new':\n            r['processed'].append([seed+1,payload])\n        elif action == 'stage_from_data':\n            r['staged']=payload[:]\n        elif action == 'replace_staged':\n            r['staged']=payload[:]\n        elif action == 'discard_all':\n            r['active']=[]; r['staged']=[]\n        elif action == 'swap_again':\n            r['epoch']+=1\n        elif action == 'load_active_only':\n            frames.append(['RECOVER_ACTIVE',r['active'][:]])\n        else:\n            if action not in (\"wait\", \"ignore\", \"keep\", \"retain\", \"keep_peer\", \"keep_offer\", \"keep_hold\", \"keep_batch\", \"retain_staging\", \"keep_staging\", \"keep_local_owner\", \"keep_old_session\", \"keep_address\", \"keep_old_expiry\", \"ignore_conflict\", \"keep_service\", \"keep_subscription\", \"retain_shadow\", \"keep_live\", \"keep_suspicion\", \"keep_roles\", \"keep_staged\"):\n                frames.append([action, payload[:]])\n        observed.append(json.loads(json.dumps({\"phase\": phase, \"registers\": r, \"frames\": frames})))\n    return observed\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 2]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [1, 2, 3], 'staged': [], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [[1, [1, 2, 3]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 2]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 1]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [1, 2, 3]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose'], [{'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}, {'phase': 'pending', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 1]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [1], 'staged': [1, 2, 3], 'epoch': 1, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [1, 2, 3]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [1], 'staged': [], 'epoch': 1, 'processed': [], 'validated': False}, 'frames': [['reject', [1, 2, 3]]]}])], 2: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 3]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [2, 3, 4, 5], 'staged': [], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [[2, [2, 3, 4, 5]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 3]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 2]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [2, 3, 4, 5]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid'], [{'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}, {'phase': 'pending', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}, {'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 2]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [2], 'staged': [2, 3, 4, 5], 'epoch': 2, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [2, 3, 4, 5]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [2], 'staged': [], 'epoch': 2, 'processed': [], 'validated': False}, 'frames': [['reject', [2, 3, 4, 5]]]}])], 3: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 4]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [3, 4, 5, 6, 7], 'staged': [], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [[3, [3, 4, 5, 6, 7]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 4]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 3]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [3, 4, 5, 6, 7]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation'], [{'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'pending', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3]]}, {'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 3], ['ACTIVE', 3]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [3], 'staged': [3, 4, 5, 6, 7], 'epoch': 3, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [3, 4, 5, 6, 7]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [3], 'staged': [], 'epoch': 3, 'processed': [], 'validated': False}, 'frames': [['reject', [3, 4, 5, 6, 7]]]}])], 4: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 5]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [4, 5, 6, 7, 8, 9], 'staged': [], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [[4, [4, 5, 6, 7, 8, 9]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 5]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 4]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [4, 5, 6, 7, 8, 9]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation', 'propose'], [{'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4]]}, {'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4], ['ACTIVE', 4]]}, {'phase': 'pending', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 4], ['ACTIVE', 4]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [4], 'staged': [4, 5, 6, 7, 8, 9], 'epoch': 4, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [4, 5, 6, 7, 8, 9]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [4], 'staged': [], 'epoch': 4, 'processed': [], 'validated': False}, 'frames': [['reject', [4, 5, 6, 7, 8, 9]]]}])], 5: [('active/propose', 'active', ['propose'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}]), ('pending/validated', 'pending', ['validated'], [{'phase': 'prepared', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['PREPARED', 6]]}]), ('pending/invalid', 'pending', ['invalid'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}]), ('prepared/activate', 'prepared', ['activate'], [{'phase': 'active', 'registers': {'active': [5, 6, 7, 8, 9, 10, 11], 'staged': [], 'epoch': 6, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/withdraw', 'prepared', ['withdraw'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': []}]), ('prepared/old_epoch_data', 'prepared', ['old_epoch_data'], [{'phase': 'prepared', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [[5, [5, 6, 7, 8, 9, 10, 11]]], 'validated': True}, 'frames': []}]), ('active/future_epoch_data', 'active', ['future_epoch_data'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['FUTURE_EPOCH', 6]]}]), ('pending/second_proposal', 'pending', ['second_proposal'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['CONFIG_BUSY', 5]]}]), ('active/duplicate_activation', 'active', ['duplicate_activation'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}]), ('prepared/restart', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [5, 6, 7, 8, 9, 10, 11]]]}]), ('ordered trace 0', 'active', ['propose', 'invalid', 'duplicate_activation', 'propose', 'invalid', 'duplicate_activation', 'propose', 'invalid'], [{'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': []}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}, {'phase': 'pending', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}, {'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['ACTIVE', 5], ['ACTIVE', 5]]}]), ('ordered trace 3', 'prepared', ['restart'], [{'phase': 'recovering', 'registers': {'active': [5], 'staged': [5, 6, 7, 8, 9, 10, 11], 'epoch': 5, 'processed': [], 'validated': True}, 'frames': [['RECOVER_PREPARED', [5, 6, 7, 8, 9, 10, 11]]]}]), ('empty input', 'active', [], []), ('unknown event', 'active', ['unsupported'], [{'phase': 'active', 'registers': {'active': [5], 'staged': [], 'epoch': 5, 'processed': [], 'validated': False}, 'frames': [['reject', [5, 6, 7, 8, 9, 10, 11]]]}])]}\nfor label, phase, events, expected in cases[N]:\n    check(label, solve(phase, events, N), 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":"Bounded offline control-plane abstraction with prescribed initial registers and classified events. Not a named protocol implementation or conformance test; excludes wire parsing, transport retries, physical execution, authentication, crash persistence, and timing. Related event faults share the full corrected controller and evaluation group. 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":"s3-protocols-configuration_epoch-active-duplicate_activation","generated_at":"2026-09-29T14:40:12.464714+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Incorrect event admission now changes concrete queued data, resource ownership, or emitted protocol frames and subsequent trace behavior.","repair":"In phase active, classify duplicate_activation as transition to active and emit ack_current.","root_cause":"In active, the duplicate activation handler runs swap again and enters active; it must instead run ack current and enter active.","sha256":"cb21725b05a8db5145a71bcd01a15bf21f359f79c7cc66afb44b6b818f315712","title":"Peer configuration epoch activation controller: active / duplicate activation · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":48.019,"exit_code":1,"observations":[{"actual":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"active/propose","expected":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":true},{"actual":[{"frames":[["PREPARED",2]],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"pending/validated","expected":[{"frames":[["PREPARED",2]],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"pending/invalid","expected":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1,2,3],"epoch":2,"processed":[],"staged":[],"validated":true}}],"check":"prepared/activate","expected":[{"frames":[],"phase":"active","registers":{"active":[1,2,3],"epoch":2,"processed":[],"staged":[],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":true}}],"check":"prepared/withdraw","expected":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[[1,[1,2,3]]],"staged":[1,2,3],"validated":true}}],"check":"prepared/old_epoch_data","expected":[{"frames":[],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[[1,[1,2,3]]],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[["FUTURE_EPOCH",2]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"active/future_epoch_data","expected":[{"frames":[["FUTURE_EPOCH",2]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true},{"actual":[{"frames":[["CONFIG_BUSY",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"pending/second_proposal","expected":[{"frames":[["CONFIG_BUSY",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":true},{"actual":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"active/duplicate_activation","expected":[{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":false},{"actual":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"prepared/restart","expected":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}},{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}},{"frames":[["reject",[1,2,3]]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"ordered trace 0","expected":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}},{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":false},{"actual":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"ordered trace 3","expected":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"active/propose\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"pending/validated\", \"actual\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"PREPARED\", 2]]}], \"expected\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"PREPARED\", 2]]}], \"passed\": true}, {\"check\": \"pending/invalid\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/activate\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1, 2, 3], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1, 2, 3], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/withdraw\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/old_epoch_data\", \"actual\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [[1, [1, 2, 3]]], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [[1, [1, 2, 3]]], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"active/future_epoch_data\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"FUTURE_EPOCH\", 2]]}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"FUTURE_EPOCH\", 2]]}], \"passed\": true}, {\"check\": \"pending/second_proposal\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"CONFIG_BUSY\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"CONFIG_BUSY\", 1]]}], \"passed\": true}, {\"check\": \"active/duplicate_activation\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"passed\": false}, {\"check\": \"prepared/restart\", \"actual\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}, {\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"passed\": false}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.484,"exit_code":1,"observations":[{"actual":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"active/propose","expected":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":true},{"actual":[{"frames":[["PREPARED",2]],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"pending/validated","expected":[{"frames":[["PREPARED",2]],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"pending/invalid","expected":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1,2,3],"epoch":2,"processed":[],"staged":[],"validated":true}}],"check":"prepared/activate","expected":[{"frames":[],"phase":"active","registers":{"active":[1,2,3],"epoch":2,"processed":[],"staged":[],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":true}}],"check":"prepared/withdraw","expected":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[[1,[1,2,3]]],"staged":[1,2,3],"validated":true}}],"check":"prepared/old_epoch_data","expected":[{"frames":[],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[[1,[1,2,3]]],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[["FUTURE_EPOCH",2]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"active/future_epoch_data","expected":[{"frames":[["FUTURE_EPOCH",2]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true},{"actual":[{"frames":[["CONFIG_BUSY",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"pending/second_proposal","expected":[{"frames":[["CONFIG_BUSY",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":2,"processed":[],"staged":[],"validated":false}}],"check":"active/duplicate_activation","expected":[{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":false},{"actual":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"prepared/restart","expected":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}},{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[],"phase":"active","registers":{"active":[1],"epoch":2,"processed":[],"staged":[],"validated":false}},{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":2,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"ordered trace 0","expected":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}},{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":false},{"actual":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"ordered trace 3","expected":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"active/propose\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"pending/validated\", \"actual\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"PREPARED\", 2]]}], \"expected\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"PREPARED\", 2]]}], \"passed\": true}, {\"check\": \"pending/invalid\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/activate\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1, 2, 3], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1, 2, 3], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/withdraw\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/old_epoch_data\", \"actual\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [[1, [1, 2, 3]]], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [[1, [1, 2, 3]]], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"active/future_epoch_data\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"FUTURE_EPOCH\", 2]]}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"FUTURE_EPOCH\", 2]]}], \"passed\": true}, {\"check\": \"pending/second_proposal\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"CONFIG_BUSY\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"CONFIG_BUSY\", 1]]}], \"passed\": true}, {\"check\": \"active/duplicate_activation\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"passed\": false}, {\"check\": \"prepared/restart\", \"actual\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 2, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}, {\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"passed\": false}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.832,"exit_code":0,"observations":[{"actual":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"active/propose","expected":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":true},{"actual":[{"frames":[["PREPARED",2]],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"pending/validated","expected":[{"frames":[["PREPARED",2]],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"pending/invalid","expected":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1,2,3],"epoch":2,"processed":[],"staged":[],"validated":true}}],"check":"prepared/activate","expected":[{"frames":[],"phase":"active","registers":{"active":[1,2,3],"epoch":2,"processed":[],"staged":[],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":true}}],"check":"prepared/withdraw","expected":[{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[[1,[1,2,3]]],"staged":[1,2,3],"validated":true}}],"check":"prepared/old_epoch_data","expected":[{"frames":[],"phase":"prepared","registers":{"active":[1],"epoch":1,"processed":[[1,[1,2,3]]],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[["FUTURE_EPOCH",2]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"active/future_epoch_data","expected":[{"frames":[["FUTURE_EPOCH",2]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true},{"actual":[{"frames":[["CONFIG_BUSY",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"pending/second_proposal","expected":[{"frames":[["CONFIG_BUSY",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":true},{"actual":[{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"active/duplicate_activation","expected":[{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true},{"actual":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"prepared/restart","expected":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}},{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"check":"ordered trace 0","expected":[{"frames":[],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}},{"frames":[],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}},{"frames":[["ACTIVE",1]],"phase":"pending","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":false}}],"passed":true},{"actual":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"check":"ordered trace 3","expected":[{"frames":[["RECOVER_PREPARED",[1,2,3]]],"phase":"recovering","registers":{"active":[1],"epoch":1,"processed":[],"staged":[1,2,3],"validated":true}}],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[{"frames":[["reject",[1,2,3]]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"check":"unknown event","expected":[{"frames":[["reject",[1,2,3]]],"phase":"active","registers":{"active":[1],"epoch":1,"processed":[],"staged":[],"validated":false}}],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"active/propose\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"pending/validated\", \"actual\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"PREPARED\", 2]]}], \"expected\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"PREPARED\", 2]]}], \"passed\": true}, {\"check\": \"pending/invalid\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/activate\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1, 2, 3], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1, 2, 3], \"staged\": [], \"epoch\": 2, \"processed\": [], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/withdraw\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"prepared/old_epoch_data\", \"actual\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [[1, [1, 2, 3]]], \"validated\": true}, \"frames\": []}], \"expected\": [{\"phase\": \"prepared\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [[1, [1, 2, 3]]], \"validated\": true}, \"frames\": []}], \"passed\": true}, {\"check\": \"active/future_epoch_data\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"FUTURE_EPOCH\", 2]]}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"FUTURE_EPOCH\", 2]]}], \"passed\": true}, {\"check\": \"pending/second_proposal\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"CONFIG_BUSY\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"CONFIG_BUSY\", 1]]}], \"passed\": true}, {\"check\": \"active/duplicate_activation\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"passed\": true}, {\"check\": \"prepared/restart\", \"actual\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"passed\": true}, {\"check\": \"ordered trace 0\", \"actual\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}, {\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"expected\": [{\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": []}, {\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}, {\"phase\": \"pending\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"ACTIVE\", 1]]}], \"passed\": true}, {\"check\": \"ordered trace 3\", \"actual\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"recovering\", \"registers\": {\"active\": [1], \"staged\": [1, 2, 3], \"epoch\": 1, \"processed\": [], \"validated\": true}, \"frames\": [[\"RECOVER_PREPARED\", [1, 2, 3]]]}], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unknown event\", \"actual\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"expected\": [{\"phase\": \"active\", \"registers\": {\"active\": [1], \"staged\": [], \"epoch\": 1, \"processed\": [], \"validated\": false}, \"frames\": [[\"reject\", [1, 2, 3]]]}], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}