FAILURE MAP
← Case archive

FA-41526 / Listener lifecycle / Open access

Last unsubscribe leaves queued connection requests behind · case 01

Last unsubscribe leaves queued connection requests behind; the returned lifecycle plan violates the stated transition contract.

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

ROOT CAUSE

The pending decision in the refcount-connect listener model is computed as s['pending'], losing a required lifecycle condition.

VERIFIED REPAIR

Compute the pending decision from the complete contract: s['pending'] if s['after']>0 else 0.

Unsuccessful approach: The partial repair uses s['pending'] if s['connected'] else 0; a retained regression distinguishes it from the full transition.

Case contract

A reference-counted observer connection transitions from before subscribers to after subscribers. Connect on zero-to-positive, disconnect on positive-to-zero unless keepalive; a failed connection is retried only when requested. A generation advances only on a fresh successful connection. Ownership controls upstream disposal, not subscriber accounting. 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: connect = s['after']>0 and not s['connected'] and (not s['failed'] or s['retry']); disconnect = s['before']>0 and s['after']==0 and s['connected'] and not s['keep']; delta = s['after']-s['before']; generation = s['generation']+int(not s['connected'] and s['after']>0 and s['successful']); dispose = s['owned'] and s['connected'] and s['after']==0 and not s['keep']; retry = s['retry'] and s['failed'] and s['after']>0 and not s['connected']; idle = s['after']==0 and s['connected'] and s['keep']; pending = s['pending'] if s['after']>0 else 0; first = s['before']==0 and s['after']>0; last = s['before']>0 and s['after']==0

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 {
        'connect': s['after']>0 and not s['connected'] and (not s['failed'] or s['retry']),
        'disconnect': s['before']>0 and s['after']==0 and s['connected'] and not s['keep'],
        'delta': s['after']-s['before'],
        'generation': s['generation']+int(not s['connected'] and s['after']>0 and s['successful']),
        'dispose': s['owned'] and s['connected'] and s['after']==0 and not s['keep'],
        'retry': s['retry'] and s['failed'] and s['after']>0 and not s['connected'],
        'idle': s['after']==0 and s['connected'] and s['keep'],
        'pending': s['pending'],
        'first': s['before']==0 and s['after']>0,
        'last': s['before']>0 and s['after']==0,
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'before': 3, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': -3, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 3, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': False, 'generation': 2, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 2, 'generation': 2, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': False, 'failed': False, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 3, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 0, 'successful': True, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': -2, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 2, 'first': False, 'last': False}), ({'before': 1, 'after': 3, 'keep': True, 'connected': False, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': True, 'disconnect': False, 'delta': 2, 'generation': 0, 'dispose': False, 'retry': True, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': True, 'connected': True, 'failed': False, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 3, 'after': 3, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 2, 'successful': True, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 2, 'dispose': False, 'retry': False, 'idle': False, 'pending': 2, 'first': False, 'last': False})], 2: [({'before': 1, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': -1, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 6, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 5, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': False, 'generation': 4, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 6, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 4, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': -5, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False}), ({'before': 1, 'after': 6, 'keep': True, 'connected': True, 'failed': True, 'retry': False, 'owned': False, 'generation': 4, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 5, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 6, 'keep': True, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 4, 'successful': False, 'pending': 0}, {'connect': True, 'disconnect': False, 'delta': 6, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 6, 'after': 6, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 4, 'successful': True, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False})], 3: [({'before': 9, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': -9, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 9, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 6, 'successful': False, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 8, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': True, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 9, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 6, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': -8, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': False, 'connected': True, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': False, 'connected': True, 'failed': False, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 9, 'after': 9, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 6, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False})], 4: [({'before': 12, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': -12, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 12, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 11, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 8, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 12, 'after': 1, 'keep': False, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 8, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': -11, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 12, 'keep': True, 'connected': True, 'failed': False, 'retry': False, 'owned': True, 'generation': 0, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 11, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False}), ({'before': 0, 'after': 12, 'keep': False, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 12, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 12, 'after': 12, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 8, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False})], 5: [({'before': 1, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 10, 'successful': False, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': -1, 'generation': 10, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 15, 'after': 1, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 10, 'successful': False, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': -14, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 10, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': True, 'generation': 10, 'successful': True, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 15, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 10, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 14, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 15, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 15, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 15, 'after': 15, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 10, 'successful': True, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 10, 'first': False, 'last': 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{'connect': False, 'delta': -3, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': True, 'last': True, 'pending': 2, 'retry': False}{'connect': False, 'delta': -3, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': True, 'last': True, 'pending': 0, 'retry': False}Failed
transition 1{'connect': False, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 2{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 3{'connect': False, 'delta': -2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 2, 'retry': False}{'connect': False, 'delta': -2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 2, 'retry': False}Passed
transition 4{'connect': True, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': True}{'connect': True, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': True}Passed
transition 5{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 6{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 7{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 2, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 2, 'retry': False}Passed

SHA-256 / fd707b3da6e1e319a5811cde1f9d81ff3ee4e23e753c59c8e00a39b646c1256a

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(s):
    return {
        'connect': s['after']>0 and not s['connected'] and (not s['failed'] or s['retry']),
        'disconnect': s['before']>0 and s['after']==0 and s['connected'] and not s['keep'],
        'delta': s['after']-s['before'],
        'generation': s['generation']+int(not s['connected'] and s['after']>0 and s['successful']),
        'dispose': s['owned'] and s['connected'] and s['after']==0 and not s['keep'],
        'retry': s['retry'] and s['failed'] and s['after']>0 and not s['connected'],
        'idle': s['after']==0 and s['connected'] and s['keep'],
        'pending': s['pending'] if s['connected'] else 0,
        'first': s['before']==0 and s['after']>0,
        'last': s['before']>0 and s['after']==0,
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'before': 3, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': -3, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 3, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': False, 'generation': 2, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 2, 'generation': 2, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': False, 'failed': False, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 3, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 0, 'successful': True, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': -2, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 2, 'first': False, 'last': False}), ({'before': 1, 'after': 3, 'keep': True, 'connected': False, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': True, 'disconnect': False, 'delta': 2, 'generation': 0, 'dispose': False, 'retry': True, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': True, 'connected': True, 'failed': False, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 3, 'after': 3, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 2, 'successful': True, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 2, 'dispose': False, 'retry': False, 'idle': False, 'pending': 2, 'first': False, 'last': False})], 2: [({'before': 1, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': -1, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 6, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 5, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': False, 'generation': 4, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 6, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 4, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': -5, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False}), ({'before': 1, 'after': 6, 'keep': True, 'connected': True, 'failed': True, 'retry': False, 'owned': False, 'generation': 4, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 5, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 6, 'keep': True, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 4, 'successful': False, 'pending': 0}, {'connect': True, 'disconnect': False, 'delta': 6, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 6, 'after': 6, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 4, 'successful': True, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False})], 3: [({'before': 9, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': -9, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 9, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 6, 'successful': False, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 8, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': True, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 9, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 6, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': -8, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': False, 'connected': True, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': False, 'connected': True, 'failed': False, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 9, 'after': 9, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 6, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False})], 4: [({'before': 12, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': -12, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 12, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 11, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 8, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 12, 'after': 1, 'keep': False, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 8, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': -11, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 12, 'keep': True, 'connected': True, 'failed': False, 'retry': False, 'owned': True, 'generation': 0, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 11, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False}), ({'before': 0, 'after': 12, 'keep': False, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 12, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 12, 'after': 12, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 8, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False})], 5: [({'before': 1, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 10, 'successful': False, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': -1, 'generation': 10, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 15, 'after': 1, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 10, 'successful': False, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': -14, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 10, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': True, 'generation': 10, 'successful': True, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 15, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 10, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 14, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 15, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 15, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 15, 'after': 15, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 10, 'successful': True, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 10, 'first': False, 'last': 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{'connect': False, 'delta': -3, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': True, 'last': True, 'pending': 2, 'retry': False}{'connect': False, 'delta': -3, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': True, 'last': True, 'pending': 0, 'retry': False}Failed
transition 1{'connect': False, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 2{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 3{'connect': False, 'delta': -2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 2, 'retry': False}{'connect': False, 'delta': -2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 2, 'retry': False}Passed
transition 4{'connect': True, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': True}{'connect': True, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': True}Passed
transition 5{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 6{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 7{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 2, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 2, 'retry': False}Passed

SHA-256 / cb1a76f603093870683a280ef0a6a2724894009bb875971d32ebd611edbd056e

3 / The verified repair

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

N = 1
observations = []
def solve(s):
    return {
        'connect': s['after']>0 and not s['connected'] and (not s['failed'] or s['retry']),
        'disconnect': s['before']>0 and s['after']==0 and s['connected'] and not s['keep'],
        'delta': s['after']-s['before'],
        'generation': s['generation']+int(not s['connected'] and s['after']>0 and s['successful']),
        'dispose': s['owned'] and s['connected'] and s['after']==0 and not s['keep'],
        'retry': s['retry'] and s['failed'] and s['after']>0 and not s['connected'],
        'idle': s['after']==0 and s['connected'] and s['keep'],
        'pending': s['pending'] if s['after']>0 else 0,
        'first': s['before']==0 and s['after']>0,
        'last': s['before']>0 and s['after']==0,
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'before': 3, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': -3, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 3, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': False, 'generation': 2, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 2, 'generation': 2, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': False, 'failed': False, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 3, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 0, 'successful': True, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': -2, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 2, 'first': False, 'last': False}), ({'before': 1, 'after': 3, 'keep': True, 'connected': False, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': True, 'disconnect': False, 'delta': 2, 'generation': 0, 'dispose': False, 'retry': True, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': True, 'connected': True, 'failed': False, 'retry': True, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 3, 'after': 3, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 2, 'successful': True, 'pending': 2}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 2, 'dispose': False, 'retry': False, 'idle': False, 'pending': 2, 'first': False, 'last': False})], 2: [({'before': 1, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': -1, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 6, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 5, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': False, 'generation': 4, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 6, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 4, 'successful': False, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': -5, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False}), ({'before': 1, 'after': 6, 'keep': True, 'connected': True, 'failed': True, 'retry': False, 'owned': False, 'generation': 4, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 5, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 6, 'keep': True, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 4, 'successful': False, 'pending': 0}, {'connect': True, 'disconnect': False, 'delta': 6, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 6, 'after': 6, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 4, 'successful': True, 'pending': 4}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 4, 'dispose': False, 'retry': False, 'idle': False, 'pending': 4, 'first': False, 'last': False})], 3: [({'before': 9, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': -9, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 9, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 6, 'successful': False, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 8, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': True, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 9, 'after': 1, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 6, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': -8, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': False, 'connected': True, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 1, 'keep': False, 'connected': True, 'failed': False, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 9, 'after': 9, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 6, 'successful': True, 'pending': 6}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 6, 'dispose': False, 'retry': False, 'idle': False, 'pending': 6, 'first': False, 'last': False})], 4: [({'before': 12, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': -12, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 1, 'after': 12, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 11, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 8, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 12, 'after': 1, 'keep': False, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 8, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': -11, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 12, 'keep': True, 'connected': True, 'failed': False, 'retry': False, 'owned': True, 'generation': 0, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 11, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False}), ({'before': 0, 'after': 12, 'keep': False, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 12, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 12, 'after': 12, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 8, 'successful': True, 'pending': 8}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 8, 'dispose': False, 'retry': False, 'idle': False, 'pending': 8, 'first': False, 'last': False})], 5: [({'before': 1, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 10, 'successful': False, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': -1, 'generation': 10, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': True}), ({'before': 15, 'after': 1, 'keep': True, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 10, 'successful': False, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': -14, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 10, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': True, 'generation': 10, 'successful': True, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 1, 'after': 15, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': False, 'generation': 10, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 14, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 0, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 0, 'successful': True, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': True, 'pending': 0, 'first': False, 'last': False}), ({'before': 0, 'after': 15, 'keep': False, 'connected': False, 'failed': True, 'retry': False, 'owned': True, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 15, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': True, 'last': False}), ({'before': 0, 'after': 0, 'keep': False, 'connected': False, 'failed': False, 'retry': False, 'owned': False, 'generation': 0, 'successful': False, 'pending': 0}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 0, 'dispose': False, 'retry': False, 'idle': False, 'pending': 0, 'first': False, 'last': False}), ({'before': 15, 'after': 15, 'keep': True, 'connected': True, 'failed': True, 'retry': True, 'owned': True, 'generation': 10, 'successful': True, 'pending': 10}, {'connect': False, 'disconnect': False, 'delta': 0, 'generation': 10, 'dispose': False, 'retry': False, 'idle': False, 'pending': 10, 'first': False, 'last': 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{'connect': False, 'delta': -3, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': True, 'last': True, 'pending': 0, 'retry': False}{'connect': False, 'delta': -3, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': True, 'last': True, 'pending': 0, 'retry': False}Passed
transition 1{'connect': False, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 2{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 3{'connect': False, 'delta': -2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 2, 'retry': False}{'connect': False, 'delta': -2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 2, 'retry': False}Passed
transition 4{'connect': True, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': True}{'connect': True, 'delta': 2, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': True}Passed
transition 5{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 6{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 0, 'idle': False, 'last': False, 'pending': 0, 'retry': False}Passed
transition 7{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 2, 'retry': False}{'connect': False, 'delta': 0, 'disconnect': False, 'dispose': False, 'first': False, 'generation': 2, 'idle': False, 'last': False, 'pending': 2, 'retry': False}Passed

SHA-256 / 3e5c3770a4a3041b41e02df89d3c0bdb1a2f63d0948987bfe90ece04e3263694

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

Case digest / 4f15f85a9f38015db48f70a662fcbfe382db36ba66e630482098b9031763e524