FA-18936 / Protocols / Open access
Capability-offer negotiation controller: fresh / payload · case 01
While fresh, event payload produces active/deliver instead of fresh/reject.
ROOT CAUSE
In fresh, the payload handler runs deliver and enters active; it must instead run reject and enter fresh.
VERIFIED REPAIR
In phase fresh, classify payload as transition to fresh and emit reject.
Unsuccessful approach: The partial repair chooses offered/buffer, which still violates this phase-specific event contract.
Case contract
For the stipulated Capability-offer negotiation 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.
Why this case matters
Incorrect event admission now changes concrete queued data, resource ownership, or emitted protocol frames and subsequent trace behavior.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(phase, events, seed):
payload = list(range(seed, seed * 2 + 2))
r = {'offered': ['base','delta','batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}
frames = []
observed = []
table = {('fresh', 'offer'): ('offered', 'advertise'), ('offered', 'subset_accept'): ('active', 'enable_subset'), ('offered', 'counteroffer'): ('countered', 'validate'), ('countered', 'compatible'): ('active', 'confirm'), ('countered', 'incompatible'): ('failed', 'reject'), ('offered', 'mandatory_missing'): ('failed', 'reject'), ('active', 'renegotiate'): ('offered', 'quiesce'), ('active', 'duplicate_accept'): ('active', 'ack_existing'), ('failed', 'payload'): ('failed', 'reject'), ('fresh', 'payload'): ('active', 'deliver')}
for event in events:
phase, action = table.get((phase, event), (phase, "reject"))
if action == 'advertise':
frames.append(['OFFER',r['offered'][:]])
elif action == 'enable_subset':
r['enabled']=['base','delta']
elif action == 'enable_all':
r['enabled']=r['offered'][:]
elif action == 'validate':
r['validations']+=1
elif action == 'confirm':
r['enabled']=['base','batch']; frames.append(['ACCEPT',['base','batch']])
elif action == 'reject':
frames.append(['REJECT',event])
elif action == 'quiesce':
r['quiesced']=True; frames.append(['OFFER',r['offered'][:]])
elif action == 'ack_existing':
frames.append(['ACCEPT',r['enabled'][:]])
elif action == 'enable':
r['enabled']=r['offered'][:]
elif action == 'reenable':
r['validations']+=seed; r['enabled']=r['offered'][:]
elif action == 'buffer':
r['queued'].extend(payload)
elif action == 'deliver':
r['quiesced']=False; frames.append(['DATA',payload])
elif action == 'continue':
frames.append(['DATA',payload])
else:
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"):
frames.append([action, payload[:]])
observed.append(json.loads(json.dumps({"phase": phase, "registers": r, "frames": frames})))
return observed
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 2: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 3: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 4: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing', 'payload'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 5: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing', 'payload', 'payload'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])]}
for label, phase, events, expected in cases[N]:
check(label, solve(phase, events, N), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fresh/offer | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/subset_accept | [{'frames': [], 'phase': 'active', 'registers': {'enabled': ['base', 'delta'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [], 'phase': 'active', 'registers': {'enabled': ['base', 'delta'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/counteroffer | [{'frames': [], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | [{'frames': [], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | Passed |
| countered/compatible | [{'frames': [['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| countered/incompatible | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/mandatory_missing | [{'frames': [['REJECT', 'mandatory_missing']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'mandatory_missing']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| active/renegotiate | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': True, 'validations': 0}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': True, 'validations': 0}}] | Passed |
| active/duplicate_accept | [{'frames': [['ACCEPT', ['base']]], 'phase': 'active', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['ACCEPT', ['base']]], 'phase': 'active', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| failed/payload | [{'frames': [['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| fresh/payload | [{'frames': [['DATA', [1, 2, 3]]], 'phase': 'active', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'payload']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Failed |
| ordered trace 0 | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | Passed |
| ordered trace 3 | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| empty input | [] | [] | Passed |
| unknown event | [{'frames': [['REJECT', 'unsupported']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'unsupported']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
SHA-256 / cb1cc87bdbf1836ef5af4d967bdae004851f958884d363c3449bb672958c1b48
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(phase, events, seed):
payload = list(range(seed, seed * 2 + 2))
r = {'offered': ['base','delta','batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}
frames = []
observed = []
table = {('fresh', 'offer'): ('offered', 'advertise'), ('offered', 'subset_accept'): ('active', 'enable_subset'), ('offered', 'counteroffer'): ('countered', 'validate'), ('countered', 'compatible'): ('active', 'confirm'), ('countered', 'incompatible'): ('failed', 'reject'), ('offered', 'mandatory_missing'): ('failed', 'reject'), ('active', 'renegotiate'): ('offered', 'quiesce'), ('active', 'duplicate_accept'): ('active', 'ack_existing'), ('failed', 'payload'): ('failed', 'reject'), ('fresh', 'payload'): ('offered', 'buffer')}
for event in events:
phase, action = table.get((phase, event), (phase, "reject"))
if action == 'advertise':
frames.append(['OFFER',r['offered'][:]])
elif action == 'enable_subset':
r['enabled']=['base','delta']
elif action == 'enable_all':
r['enabled']=r['offered'][:]
elif action == 'validate':
r['validations']+=1
elif action == 'confirm':
r['enabled']=['base','batch']; frames.append(['ACCEPT',['base','batch']])
elif action == 'reject':
frames.append(['REJECT',event])
elif action == 'quiesce':
r['quiesced']=True; frames.append(['OFFER',r['offered'][:]])
elif action == 'ack_existing':
frames.append(['ACCEPT',r['enabled'][:]])
elif action == 'enable':
r['enabled']=r['offered'][:]
elif action == 'reenable':
r['validations']+=seed; r['enabled']=r['offered'][:]
elif action == 'buffer':
r['queued'].extend(payload)
elif action == 'deliver':
r['quiesced']=False; frames.append(['DATA',payload])
elif action == 'continue':
frames.append(['DATA',payload])
else:
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"):
frames.append([action, payload[:]])
observed.append(json.loads(json.dumps({"phase": phase, "registers": r, "frames": frames})))
return observed
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 2: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 3: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 4: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing', 'payload'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 5: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing', 'payload', 'payload'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])]}
for label, phase, events, expected in cases[N]:
check(label, solve(phase, events, N), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fresh/offer | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/subset_accept | [{'frames': [], 'phase': 'active', 'registers': {'enabled': ['base', 'delta'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [], 'phase': 'active', 'registers': {'enabled': ['base', 'delta'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/counteroffer | [{'frames': [], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | [{'frames': [], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | Passed |
| countered/compatible | [{'frames': [['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| countered/incompatible | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/mandatory_missing | [{'frames': [['REJECT', 'mandatory_missing']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'mandatory_missing']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| active/renegotiate | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': True, 'validations': 0}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': True, 'validations': 0}}] | Passed |
| active/duplicate_accept | [{'frames': [['ACCEPT', ['base']]], 'phase': 'active', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['ACCEPT', ['base']]], 'phase': 'active', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| failed/payload | [{'frames': [['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| fresh/payload | [{'frames': [], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [1, 2, 3], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'payload']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Failed |
| ordered trace 0 | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | Passed |
| ordered trace 3 | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| empty input | [] | [] | Passed |
| unknown event | [{'frames': [['REJECT', 'unsupported']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'unsupported']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
SHA-256 / 43fa9205980f622cdee4de3953d71798fcec56f52c7f64a0dd92d7744e2942e6
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(phase, events, seed):
payload = list(range(seed, seed * 2 + 2))
r = {'offered': ['base','delta','batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}
frames = []
observed = []
table = {('fresh', 'offer'): ('offered', 'advertise'), ('offered', 'subset_accept'): ('active', 'enable_subset'), ('offered', 'counteroffer'): ('countered', 'validate'), ('countered', 'compatible'): ('active', 'confirm'), ('countered', 'incompatible'): ('failed', 'reject'), ('offered', 'mandatory_missing'): ('failed', 'reject'), ('active', 'renegotiate'): ('offered', 'quiesce'), ('active', 'duplicate_accept'): ('active', 'ack_existing'), ('failed', 'payload'): ('failed', 'reject'), ('fresh', 'payload'): ('fresh', 'reject')}
for event in events:
phase, action = table.get((phase, event), (phase, "reject"))
if action == 'advertise':
frames.append(['OFFER',r['offered'][:]])
elif action == 'enable_subset':
r['enabled']=['base','delta']
elif action == 'enable_all':
r['enabled']=r['offered'][:]
elif action == 'validate':
r['validations']+=1
elif action == 'confirm':
r['enabled']=['base','batch']; frames.append(['ACCEPT',['base','batch']])
elif action == 'reject':
frames.append(['REJECT',event])
elif action == 'quiesce':
r['quiesced']=True; frames.append(['OFFER',r['offered'][:]])
elif action == 'ack_existing':
frames.append(['ACCEPT',r['enabled'][:]])
elif action == 'enable':
r['enabled']=r['offered'][:]
elif action == 'reenable':
r['validations']+=seed; r['enabled']=r['offered'][:]
elif action == 'buffer':
r['queued'].extend(payload)
elif action == 'deliver':
r['quiesced']=False; frames.append(['DATA',payload])
elif action == 'continue':
frames.append(['DATA',payload])
else:
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"):
frames.append([action, payload[:]])
observed.append(json.loads(json.dumps({"phase": phase, "registers": r, "frames": frames})))
return observed
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 2: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 3: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 4: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing', 'payload'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])], 5: [('fresh/offer', 'fresh', ['offer'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('offered/subset_accept', 'offered', ['subset_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'delta'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': []}]), ('offered/counteroffer', 'offered', ['counteroffer'], [{'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': []}]), ('countered/compatible', 'countered', ['compatible'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base', 'batch']]]}]), ('countered/incompatible', 'countered', ['incompatible'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}]), ('offered/mandatory_missing', 'offered', ['mandatory_missing'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'mandatory_missing']]}]), ('active/renegotiate', 'active', ['renegotiate'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': True, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}]), ('active/duplicate_accept', 'active', ['duplicate_accept'], [{'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['ACCEPT', ['base']]]}]), ('failed/payload', 'failed', ['payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('fresh/payload', 'fresh', ['payload'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'payload']]}]), ('ordered trace 0', 'fresh', ['offer', 'counteroffer', 'compatible', 'duplicate_accept', 'renegotiate', 'mandatory_missing', 'payload', 'payload'], [{'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'countered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'active', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': False, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]]}, {'phase': 'offered', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']]]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base', 'batch'], 'quiesced': True, 'validations': 1, 'queued': []}, 'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']], ['OFFER', ['base', 'delta', 'batch']], ['REJECT', 'mandatory_missing'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('ordered trace 3', 'countered', ['incompatible', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload', 'payload'], [{'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}, {'phase': 'failed', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']]}]), ('empty input', 'fresh', [], []), ('unknown event', 'fresh', ['unsupported'], [{'phase': 'fresh', 'registers': {'offered': ['base', 'delta', 'batch'], 'enabled': ['base'], 'quiesced': False, 'validations': 0, 'queued': []}, 'frames': [['REJECT', 'unsupported']]}])]}
for label, phase, events, expected in cases[N]:
check(label, solve(phase, events, N), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fresh/offer | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/subset_accept | [{'frames': [], 'phase': 'active', 'registers': {'enabled': ['base', 'delta'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [], 'phase': 'active', 'registers': {'enabled': ['base', 'delta'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/counteroffer | [{'frames': [], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | [{'frames': [], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | Passed |
| countered/compatible | [{'frames': [['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| countered/incompatible | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| offered/mandatory_missing | [{'frames': [['REJECT', 'mandatory_missing']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'mandatory_missing']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| active/renegotiate | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': True, 'validations': 0}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': True, 'validations': 0}}] | Passed |
| active/duplicate_accept | [{'frames': [['ACCEPT', ['base']]], 'phase': 'active', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['ACCEPT', ['base']]], 'phase': 'active', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| failed/payload | [{'frames': [['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| fresh/payload | [{'frames': [['REJECT', 'payload']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'payload']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| ordered trace 0 | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | [{'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'offered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['OFFER', ['base', 'delta', 'batch']]], 'phase': 'countered', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}, {'frames': [['OFFER', ['base', 'delta', 'batch']], ['ACCEPT', ['base', 'batch']], ['ACCEPT', ['base', 'batch']]], 'phase': 'active', 'registers': {'enabled': ['base', 'batch'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 1}}] | Passed |
| ordered trace 3 | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'incompatible']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}, {'frames': [['REJECT', 'incompatible'], ['REJECT', 'payload'], ['REJECT', 'payload'], ['REJECT', 'payload']], 'phase': 'failed', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
| empty input | [] | [] | Passed |
| unknown event | [{'frames': [['REJECT', 'unsupported']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | [{'frames': [['REJECT', 'unsupported']], 'phase': 'fresh', 'registers': {'enabled': ['base'], 'offered': ['base', 'delta', 'batch'], 'queued': [], 'quiesced': False, 'validations': 0}}] | Passed |
SHA-256 / b2e31d2eb915244a7eb8fe44532ded43aaabd43b8d89f085b6443310ced5bb38
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:40:02.709581+00:00.
Case digest / 9052731a431854fd7fd7046ac507c4a87f2b2c9b66c62f1020bd535f97e96233