FA-42481 / Listener lifecycle / Open access
One source error fails to cancel its combine-latest sibling · case 01
One source error fails to cancel its combine-latest sibling; the returned lifecycle plan violates the stated transition contract.
ROOT CAUSE
The cancel_both decision in the combine-latest listener model is computed as ['left'] if s['error'] is not None else [], losing a required lifecycle condition.
VERIFIED REPAIR
Compute the cancel_both decision from the complete contract: ['left','right'] if s['error'] is not None else [].
Unsuccessful approach: The partial repair uses ['right'] if s['error'] is not None else []; a retained regression distinguishes it from the full transition.
Case contract
Plan a two-input combine-latest observer. A value may be None, so readiness comes from separate seen flags. Updating one side preserves the other. Emit a pair only after both inputs have been seen. A completed input with no value makes a pair impossible; completion after a value keeps its last value usable. Any source error terminates both subscriptions. Inputs are finite state snapshots, including transitional and stale states; output fields are the exact independent actions/metadata defined by the corrected expression table. Numeric fixture capacities and counts vary with N. Field definitions, each independently computed from the input snapshot: ready = s['left_seen'] and s['right_seen']; left = s['value'] if s['side']=='left' else s['left']; right = s['value'] if s['side']=='right' else s['right']; left_seen = s['left_seen'] or s['side']=='left'; right_seen = s['right_seen'] or s['side']=='right'; impossible = (s['left_done'] and not s['left_seen']) or (s['right_done'] and not s['right_seen']); complete = s['left_done'] and s['right_done']; pair = [s['left'],s['right']]; cancel_both = ['left','right'] if s['error'] is not None else []; usable_left = s['left_seen']
Why this case matters
Observer implementations need to preserve this state while subscriptions enter, execute, and leave their lifecycle.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(s):
return {
'ready': s['left_seen'] and s['right_seen'],
'left': s['value'] if s['side']=='left' else s['left'],
'right': s['value'] if s['side']=='right' else s['right'],
'left_seen': s['left_seen'] or s['side']=='left',
'right_seen': s['right_seen'] or s['side']=='right',
'impossible': (s['left_done'] and not s['left_seen']) or (s['right_done'] and not s['right_seen']),
'complete': s['left_done'] and s['right_done'],
'pair': [s['left'],s['right']],
'cancel_both': ['left'] if s['error'] is not None else [],
'usable_left': s['left_seen'],
}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 3}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 3}, {'ready': True, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 3}, {'ready': True, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 3}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 2: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 6}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 6}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': None, 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 0, 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': 'new', 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': False, 'left': 0, 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 6}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 6}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 3: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': None, 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': True, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': ['L', None], 'cancel_both': [], 'usable_left': True}), ({'left': None, 'right': 0, 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 9}, {'ready': False, 'left': 'new', 'right': 0, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, 0], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 0, 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': None, 'credit': 9}, {'ready': False, 'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 9}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 4: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 0, 'right': 0, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 12}, {'ready': True, 'left': 0, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': [0, 0], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': 0, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, 0], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 0, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'new', 'right': 0, 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': True, 'pair': [0, 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 12}, {'ready': False, 'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, None], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 12}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 5: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 15}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': None, 'credit': 0}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', None], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 15}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})]}
for i,(state,expected) in enumerate(fixtures[N]):
check("transition "+str(i), solve(state), 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 |
|---|---|---|---|
| transition 0 | {'cancel_both': ['left'], 'complete': False, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | Failed |
| transition 1 | {'cancel_both': ['left'], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | Failed |
| transition 2 | {'cancel_both': ['left'], 'complete': True, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': [0, 'R'], 'ready': False, 'right': 'R', 'right_seen': True, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': [0, 'R'], 'ready': False, 'right': 'R', 'right_seen': True, 'usable_left': False} | Failed |
| transition 3 | {'cancel_both': ['left'], 'complete': False, 'impossible': False, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | Failed |
| transition 4 | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'R', 'right_seen': True, 'usable_left': True} | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'R', 'right_seen': True, 'usable_left': True} | Passed |
| transition 5 | {'cancel_both': ['left'], 'complete': False, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', None], 'ready': True, 'right': None, 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', None], 'ready': True, 'right': None, 'right_seen': True, 'usable_left': True} | Failed |
| transition 6 | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': False, 'right': None, 'right_seen': False, 'usable_left': False} | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': False, 'right': None, 'right_seen': False, 'usable_left': False} | Passed |
| transition 7 | {'cancel_both': ['left'], 'complete': True, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | Failed |
SHA-256 / ebdab4717ebe4eb4b35ac168fc4818162c30c54c3d159792f5f76493051795a4
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(s):
return {
'ready': s['left_seen'] and s['right_seen'],
'left': s['value'] if s['side']=='left' else s['left'],
'right': s['value'] if s['side']=='right' else s['right'],
'left_seen': s['left_seen'] or s['side']=='left',
'right_seen': s['right_seen'] or s['side']=='right',
'impossible': (s['left_done'] and not s['left_seen']) or (s['right_done'] and not s['right_seen']),
'complete': s['left_done'] and s['right_done'],
'pair': [s['left'],s['right']],
'cancel_both': ['right'] if s['error'] is not None else [],
'usable_left': s['left_seen'],
}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 3}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 3}, {'ready': True, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 3}, {'ready': True, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 3}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 2: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 6}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 6}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': None, 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 0, 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': 'new', 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': False, 'left': 0, 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 6}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 6}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 3: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': None, 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': True, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': ['L', None], 'cancel_both': [], 'usable_left': True}), ({'left': None, 'right': 0, 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 9}, {'ready': False, 'left': 'new', 'right': 0, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, 0], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 0, 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': None, 'credit': 9}, {'ready': False, 'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 9}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 4: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 0, 'right': 0, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 12}, {'ready': True, 'left': 0, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': [0, 0], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': 0, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, 0], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 0, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'new', 'right': 0, 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': True, 'pair': [0, 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 12}, {'ready': False, 'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, None], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 12}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 5: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 15}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': None, 'credit': 0}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', None], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 15}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})]}
for i,(state,expected) in enumerate(fixtures[N]):
check("transition "+str(i), solve(state), 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 |
|---|---|---|---|
| transition 0 | {'cancel_both': ['right'], 'complete': False, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | Failed |
| transition 1 | {'cancel_both': ['right'], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | Failed |
| transition 2 | {'cancel_both': ['right'], 'complete': True, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': [0, 'R'], 'ready': False, 'right': 'R', 'right_seen': True, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': [0, 'R'], 'ready': False, 'right': 'R', 'right_seen': True, 'usable_left': False} | Failed |
| transition 3 | {'cancel_both': ['right'], 'complete': False, 'impossible': False, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | Failed |
| transition 4 | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'R', 'right_seen': True, 'usable_left': True} | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'R', 'right_seen': True, 'usable_left': True} | Passed |
| transition 5 | {'cancel_both': ['right'], 'complete': False, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', None], 'ready': True, 'right': None, 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', None], 'ready': True, 'right': None, 'right_seen': True, 'usable_left': True} | Failed |
| transition 6 | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': False, 'right': None, 'right_seen': False, 'usable_left': False} | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': False, 'right': None, 'right_seen': False, 'usable_left': False} | Passed |
| transition 7 | {'cancel_both': ['right'], 'complete': True, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | Failed |
SHA-256 / 931f2e2aec093baee48c813d1aa1aba4b3b0e4ad94d116cd81771f1960e550a3
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(s):
return {
'ready': s['left_seen'] and s['right_seen'],
'left': s['value'] if s['side']=='left' else s['left'],
'right': s['value'] if s['side']=='right' else s['right'],
'left_seen': s['left_seen'] or s['side']=='left',
'right_seen': s['right_seen'] or s['side']=='right',
'impossible': (s['left_done'] and not s['left_seen']) or (s['right_done'] and not s['right_seen']),
'complete': s['left_done'] and s['right_done'],
'pair': [s['left'],s['right']],
'cancel_both': ['left','right'] if s['error'] is not None else [],
'usable_left': s['left_seen'],
}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 3}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 3}, {'ready': True, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 3}, {'ready': True, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 3}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 2: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 6}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 6}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': False, 'error': None, 'credit': 1}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 0, 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': 'new', 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': False, 'left': 0, 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 6}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 6}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 3: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 'L', 'right': None, 'left_seen': True, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': True, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': ['L', None], 'cancel_both': [], 'usable_left': True}), ({'left': None, 'right': 0, 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 9}, {'ready': False, 'left': 'new', 'right': 0, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, 0], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 0, 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 1}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': ['L', 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': None, 'credit': 9}, {'ready': False, 'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 9}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 4: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': 0, 'right': 0, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 12}, {'ready': True, 'left': 0, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': [0, 0], 'cancel_both': [], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': None, 'right': 0, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': False, 'right_done': True, 'error': 'upstream', 'credit': 0}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, 0], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 0, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 1}, {'ready': False, 'left': 'new', 'right': 0, 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': True, 'pair': [0, 0], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'side': 'right', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 12}, {'ready': False, 'left': 0, 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': [0, None], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 12}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})], 5: [({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': True, 'complete': False, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': False}), ({'left': None, 'right': None, 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': False, 'error': 'upstream', 'credit': 1}, {'ready': True, 'left': None, 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 'L', 'right': 'R', 'left_seen': False, 'right_seen': True, 'side': 'left', 'value': 'new', 'left_done': True, 'right_done': True, 'error': None, 'credit': 15}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': True, 'impossible': True, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'right', 'value': None, 'left_done': False, 'right_done': True, 'error': None, 'credit': 0}, {'ready': False, 'left': 'L', 'right': None, 'left_seen': False, 'right_seen': True, 'impossible': True, 'complete': False, 'pair': ['L', None], 'cancel_both': [], 'usable_left': False}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': 'new', 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': 'new', 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': 0, 'right': 'R', 'left_seen': True, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': 'upstream', 'credit': 15}, {'ready': False, 'left': None, 'right': 'R', 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [0, 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True}), ({'left': None, 'right': None, 'left_seen': False, 'right_seen': False, 'side': 'left', 'value': None, 'left_done': False, 'right_done': False, 'error': None, 'credit': 0}, {'ready': False, 'left': None, 'right': None, 'left_seen': True, 'right_seen': False, 'impossible': False, 'complete': False, 'pair': [None, None], 'cancel_both': [], 'usable_left': False}), ({'left': 'L', 'right': 'R', 'left_seen': True, 'right_seen': True, 'side': 'right', 'value': 'new', 'left_done': True, 'right_done': True, 'error': 'upstream', 'credit': 15}, {'ready': True, 'left': 'L', 'right': 'new', 'left_seen': True, 'right_seen': True, 'impossible': False, 'complete': True, 'pair': ['L', 'R'], 'cancel_both': ['left', 'right'], 'usable_left': True})]}
for i,(state,expected) in enumerate(fixtures[N]):
check("transition "+str(i), solve(state), 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 |
|---|---|---|---|
| transition 0 | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | Passed |
| transition 1 | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | Passed |
| transition 2 | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': [0, 'R'], 'ready': False, 'right': 'R', 'right_seen': True, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': True, 'left': 'new', 'left_seen': True, 'pair': [0, 'R'], 'ready': False, 'right': 'R', 'right_seen': True, 'usable_left': False} | Passed |
| transition 3 | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'new', 'left_seen': True, 'pair': ['L', 'R'], 'ready': False, 'right': 'R', 'right_seen': False, 'usable_left': False} | Passed |
| transition 4 | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'R', 'right_seen': True, 'usable_left': True} | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'R', 'right_seen': True, 'usable_left': True} | Passed |
| transition 5 | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', None], 'ready': True, 'right': None, 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': False, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', None], 'ready': True, 'right': None, 'right_seen': True, 'usable_left': True} | Passed |
| transition 6 | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': False, 'right': None, 'right_seen': False, 'usable_left': False} | {'cancel_both': [], 'complete': False, 'impossible': False, 'left': None, 'left_seen': True, 'pair': [None, None], 'ready': False, 'right': None, 'right_seen': False, 'usable_left': False} | Passed |
| transition 7 | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | {'cancel_both': ['left', 'right'], 'complete': True, 'impossible': False, 'left': 'L', 'left_seen': True, 'pair': ['L', 'R'], 'ready': True, 'right': 'new', 'right_seen': True, 'usable_left': True} | Passed |
SHA-256 / 81cc54f38560a6b4e6aca303be5bcd8591fd33c0e57a9ecab84141a2fa96cc41
Verification & scope
A deterministic, bounded, single-threaded transition planner. Returned plans model state changes; they do not implement a production event framework. 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:43:52.274505+00:00.
Case digest / cf1b6a47db24358046e9074a8120beb466475c3e92bea88a3db75db5bd3f3c47