FAILURE MAP
← Case archive

FA-42561 / Listener lifecycle / Open access

Inner completion closes a still-live outer observer · case 01

Inner completion closes a still-live outer observer; the returned lifecycle plan violates the stated transition contract.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The inner_complete decision in the switch-inner listener model is computed as s['inner_done'], losing a required lifecycle condition.

VERIFIED REPAIR

Compute the inner_complete decision from the complete contract: s['inner_done'] and s['outer_done'].

Unsuccessful approach: The partial repair uses s['inner_done'] or s['outer_done']; a retained regression distinguishes it from the full transition.

Case contract

Plan switch-to-latest observer ownership. A new outer value replaces the active inner and advances an inner generation. Late values from the replaced generation are suppressed. Outer completion waits for the current inner, while an inner completion alone does not close a live outer. An error closes both. Dispose the old inner before starting the replacement, even if it emitted no value. Completion considers only active inner records belonging to the current generation; stale active records and current inactive records do not block it. 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: replace = s['outer_value'] and s['inner_active']; generation = s['generation']+int(s['outer_value']); accept = s['event_generation']==s['generation'] and s['inner_active'] and not s['cancel'] and s['error'] is None; outer_complete = s['outer_done'] and not any(active for generation,active in s['inner_records'] if generation==s['generation']); inner_complete = s['inner_done'] and s['outer_done']; start = s['outer_value'] and not s['outer_done'] and not s['cancel'] and s['error'] is None; transition_order = ['dispose','start'] if s['outer_value'] and s['inner_active'] else (['start'] if s['outer_value'] else []); active_after_done = s['inner_active'] and not(s['inner_done'] and s['event_generation']==s['generation']); dispose_outer = s['error'] is not None or s['cancel']; late_value = s['event_generation']!=s['generation']

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 {
        'replace': s['outer_value'] and s['inner_active'],
        'generation': s['generation']+int(s['outer_value']),
        'accept': s['event_generation']==s['generation'] and s['inner_active'] and not s['cancel'] and s['error'] is None,
        'outer_complete': s['outer_done'] and not any(active for generation,active in s['inner_records'] if generation==s['generation']),
        'inner_complete': s['inner_done'],
        'start': s['outer_value'] and not s['outer_done'] and not s['cancel'] and s['error'] is None,
        'transition_order': ['dispose','start'] if s['outer_value'] and s['inner_active'] else (['start'] if s['outer_value'] else []),
        'active_after_done': s['inner_active'] and not(s['inner_done'] and s['event_generation']==s['generation']),
        'dispose_outer': s['error'] is not None or s['cancel'],
        'late_value': s['event_generation']!=s['generation'],
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [2, True]]}, {'replace': True, 'generation': 3, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [2, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [2, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 2, 'event_generation': 2, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 2, 'accept': True, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [2, False]]}, {'replace': False, 'generation': 2, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 3, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 2: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 4, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [4, False]]}, {'replace': False, 'generation': 4, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 4, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [4, True]]}, {'replace': False, 'generation': 5, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 4, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, True], [4, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [4, True]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 4, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [4, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 4, 'event_generation': 4, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 5, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 3: [({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 6, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 6, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [6, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, True], [6, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 6, 'event_generation': 6, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 7, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 4: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 8, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [8, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 8, 'event_generation': 8, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 8, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 8, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [8, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 8, 'event_generation': 8, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 9, 'accept': True, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 8, 'event_generation': 8, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 9, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 5: [({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 10, 'event_generation': 10, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [10, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 10, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [10, True]]}, {'replace': False, 'generation': 10, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [10, True]]}, {'replace': True, 'generation': 1, 'accept': True, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 10, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, True], [10, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 10, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 10, 'event_generation': 10, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})]}
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 fixtureActualExpectedOutcome
transition 0{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': False, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}Failed
transition 1{'accept': False, 'active_after_done': True, 'dispose_outer': True, 'generation': 0, 'inner_complete': True, 'late_value': True, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': True, 'dispose_outer': True, 'generation': 0, 'inner_complete': True, 'late_value': True, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 2{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 1, 'inner_complete': True, 'late_value': True, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': ['start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': ['start']}Failed
transition 3{'accept': False, 'active_after_done': True, 'dispose_outer': False, 'generation': 1, 'inner_complete': True, 'late_value': True, 'outer_complete': False, 'replace': True, 'start': True, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': True, 'dispose_outer': False, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': True, 'start': True, 'transition_order': ['dispose', 'start']}Failed
transition 4{'accept': True, 'active_after_done': True, 'dispose_outer': False, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}{'accept': True, 'active_after_done': True, 'dispose_outer': False, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 5{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 2, 'inner_complete': True, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}Failed
transition 6{'accept': False, 'active_after_done': False, 'dispose_outer': False, 'generation': 0, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': False, 'dispose_outer': False, 'generation': 0, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 7{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': True, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': True, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}Passed

SHA-256 / 07a418f1b3a457fb1e6ee3bbf76a71326f42a142625516a218af11c8bae08176

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(s):
    return {
        'replace': s['outer_value'] and s['inner_active'],
        'generation': s['generation']+int(s['outer_value']),
        'accept': s['event_generation']==s['generation'] and s['inner_active'] and not s['cancel'] and s['error'] is None,
        'outer_complete': s['outer_done'] and not any(active for generation,active in s['inner_records'] if generation==s['generation']),
        'inner_complete': s['inner_done'] or s['outer_done'],
        'start': s['outer_value'] and not s['outer_done'] and not s['cancel'] and s['error'] is None,
        'transition_order': ['dispose','start'] if s['outer_value'] and s['inner_active'] else (['start'] if s['outer_value'] else []),
        'active_after_done': s['inner_active'] and not(s['inner_done'] and s['event_generation']==s['generation']),
        'dispose_outer': s['error'] is not None or s['cancel'],
        'late_value': s['event_generation']!=s['generation'],
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [2, True]]}, {'replace': True, 'generation': 3, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [2, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [2, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 2, 'event_generation': 2, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 2, 'accept': True, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [2, False]]}, {'replace': False, 'generation': 2, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 3, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 2: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 4, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [4, False]]}, {'replace': False, 'generation': 4, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 4, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [4, True]]}, {'replace': False, 'generation': 5, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 4, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, True], [4, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [4, True]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 4, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [4, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 4, 'event_generation': 4, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 5, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 3: [({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 6, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 6, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [6, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, True], [6, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 6, 'event_generation': 6, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 7, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 4: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 8, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [8, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 8, 'event_generation': 8, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 8, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 8, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [8, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 8, 'event_generation': 8, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 9, 'accept': True, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 8, 'event_generation': 8, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 9, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 5: [({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 10, 'event_generation': 10, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [10, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 10, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [10, True]]}, {'replace': False, 'generation': 10, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [10, True]]}, {'replace': True, 'generation': 1, 'accept': True, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 10, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, True], [10, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 10, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 10, 'event_generation': 10, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})]}
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 fixtureActualExpectedOutcome
transition 0{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': False, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}Failed
transition 1{'accept': False, 'active_after_done': True, 'dispose_outer': True, 'generation': 0, 'inner_complete': True, 'late_value': True, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': True, 'dispose_outer': True, 'generation': 0, 'inner_complete': True, 'late_value': True, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 2{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 1, 'inner_complete': True, 'late_value': True, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': ['start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': ['start']}Failed
transition 3{'accept': False, 'active_after_done': True, 'dispose_outer': False, 'generation': 1, 'inner_complete': True, 'late_value': True, 'outer_complete': False, 'replace': True, 'start': True, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': True, 'dispose_outer': False, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': True, 'start': True, 'transition_order': ['dispose', 'start']}Failed
transition 4{'accept': True, 'active_after_done': True, 'dispose_outer': False, 'generation': 2, 'inner_complete': True, 'late_value': False, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}{'accept': True, 'active_after_done': True, 'dispose_outer': False, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}Failed
transition 5{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 2, 'inner_complete': True, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}Failed
transition 6{'accept': False, 'active_after_done': False, 'dispose_outer': False, 'generation': 0, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': False, 'dispose_outer': False, 'generation': 0, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 7{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': True, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': True, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}Passed

SHA-256 / 21ef1bf15bb264b5e1e2913500de6b4b217d1b07ed71d6f111cfcb35a505d372

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(s):
    return {
        'replace': s['outer_value'] and s['inner_active'],
        'generation': s['generation']+int(s['outer_value']),
        'accept': s['event_generation']==s['generation'] and s['inner_active'] and not s['cancel'] and s['error'] is None,
        'outer_complete': s['outer_done'] and not any(active for generation,active in s['inner_records'] if generation==s['generation']),
        'inner_complete': s['inner_done'] and s['outer_done'],
        'start': s['outer_value'] and not s['outer_done'] and not s['cancel'] and s['error'] is None,
        'transition_order': ['dispose','start'] if s['outer_value'] and s['inner_active'] else (['start'] if s['outer_value'] else []),
        'active_after_done': s['inner_active'] and not(s['inner_done'] and s['event_generation']==s['generation']),
        'dispose_outer': s['error'] is not None or s['cancel'],
        'late_value': s['event_generation']!=s['generation'],
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [2, True]]}, {'replace': True, 'generation': 3, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [2, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 2, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [2, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 2, 'event_generation': 2, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 2, 'accept': True, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [2, False]]}, {'replace': False, 'generation': 2, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 2, 'event_generation': 2, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 3, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 2: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 4, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [4, False]]}, {'replace': False, 'generation': 4, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 4, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [4, True]]}, {'replace': False, 'generation': 5, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 4, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, True], [4, False]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [4, True]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 4, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [4, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 4, 'event_generation': 4, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 5, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 3: [({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 6, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 6, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, True], [6, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, True], [6, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, False], [6, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 6, 'event_generation': 6, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 7, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 4: [({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': True, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 8, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False], [8, True]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 8, 'event_generation': 8, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 8, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': True, 'inner_active': False, 'inner_done': True, 'generation': 0, 'event_generation': 8, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [8, False]]}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': True, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 8, 'event_generation': 8, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 9, 'accept': True, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': False, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 8, 'event_generation': 8, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 9, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})], 5: [({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': False, 'generation': 10, 'event_generation': 10, 'error': 'bad', 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': [[0, True], [10, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': False}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 10, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [10, True]]}, {'replace': False, 'generation': 10, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': True, 'outer_done': True, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': 'bad', 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 1, 'accept': False, 'outer_complete': True, 'inner_complete': False, 'start': False, 'transition_order': ['start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': True, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': True, 'inner_records': [[0, False], [10, True]]}, {'replace': True, 'generation': 1, 'accept': True, 'outer_complete': False, 'inner_complete': False, 'start': True, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 10, 'event_generation': 0, 'error': None, 'cancel': True, 'inner_value': 'value', 'inner_seen': False, 'inner_records': [[0, True], [10, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': True, 'dispose_outer': True, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': True, 'inner_done': False, 'generation': 0, 'event_generation': 10, 'error': None, 'cancel': False, 'inner_value': 'value', 'inner_seen': True, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': True, 'dispose_outer': False, 'late_value': True}), ({'outer_value': False, 'outer_done': False, 'inner_active': False, 'inner_done': False, 'generation': 0, 'event_generation': 0, 'error': None, 'cancel': False, 'inner_value': None, 'inner_seen': False, 'inner_records': []}, {'replace': False, 'generation': 0, 'accept': False, 'outer_complete': False, 'inner_complete': False, 'start': False, 'transition_order': [], 'active_after_done': False, 'dispose_outer': False, 'late_value': False}), ({'outer_value': True, 'outer_done': True, 'inner_active': True, 'inner_done': True, 'generation': 10, 'event_generation': 10, 'error': 'bad', 'cancel': True, 'inner_value': 'value', 'inner_seen': True, 'inner_records': [[0, False]]}, {'replace': True, 'generation': 11, 'accept': False, 'outer_complete': True, 'inner_complete': True, 'start': False, 'transition_order': ['dispose', 'start'], 'active_after_done': False, 'dispose_outer': True, 'late_value': False})]}
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 fixtureActualExpectedOutcome
transition 0{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}Passed
transition 1{'accept': False, 'active_after_done': True, 'dispose_outer': True, 'generation': 0, 'inner_complete': True, 'late_value': True, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': True, 'dispose_outer': True, 'generation': 0, 'inner_complete': True, 'late_value': True, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 2{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': ['start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': ['start']}Passed
transition 3{'accept': False, 'active_after_done': True, 'dispose_outer': False, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': True, 'start': True, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': True, 'dispose_outer': False, 'generation': 1, 'inner_complete': False, 'late_value': True, 'outer_complete': False, 'replace': True, 'start': True, 'transition_order': ['dispose', 'start']}Passed
transition 4{'accept': True, 'active_after_done': True, 'dispose_outer': False, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}{'accept': True, 'active_after_done': True, 'dispose_outer': False, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': True, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 5{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 2, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 6{'accept': False, 'active_after_done': False, 'dispose_outer': False, 'generation': 0, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}{'accept': False, 'active_after_done': False, 'dispose_outer': False, 'generation': 0, 'inner_complete': False, 'late_value': False, 'outer_complete': False, 'replace': False, 'start': False, 'transition_order': []}Passed
transition 7{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': True, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}{'accept': False, 'active_after_done': False, 'dispose_outer': True, 'generation': 3, 'inner_complete': True, 'late_value': False, 'outer_complete': True, 'replace': True, 'start': False, 'transition_order': ['dispose', 'start']}Passed

SHA-256 / 60e215ae62bfd8699595fdd5d4dde1981917260c08f5cb4e9accf02b50f6ae51

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.994188+00:00.

Case digest / b941ec432bcdf6509d0b16c18d4ce6a89ab3afaa93fdbe3c08f5e704c129ca2d