FAILURE MAP
← Case archive

FA-42433 / Listener lifecycle / Member archive

Default distinct equality conflates an absent selected key with explicit None · case 03

Default distinct equality conflates an absent selected key with explicit None; the returned lifecycle plan violates the stated transition contract.

Member previewVariant 3 · 3 implementations · 8 checks per implementation

Case contract

Plan a consecutive-distinct observer stage with explicit initialized bit. None and zero are valid keys. Comparison uses the incoming key and previous accepted key. A reset clears initialization but does not emit data. Comparator failure terminates the stage without replacing the prior key. Nonconsecutive repeats remain eligible. Suppressed values do not consume downstream credit. A prior composite key is snapshotted before the selector appends parts to its live storage; comparator-left receives the pre-selector list exactly. Selector/comparator call trace is select, then compare only when a previous key is initialized; absent input makes no calls. Key extraction may read a record but output records preserve every original field, including metadata on later records. A reset requested inside one active equality comparison is applied at comparator exit; outside a comparison it applies at its own trace position. Optional selected keys are [present,value]; equality compares presence first and compares values only for two present keys. 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: first = not s['initialized']; emit = s['has_value'] and s['error'] is None and (not s['initialized'] or not s['equal']); initialized = False if s['reset'] else s['initialized'] or (s['has_value'] and s['error'] is None); previous = s['key'] if s['has_value'] and s['error'] is None and (not s['initialized'] or not s['equal']) else s['previous']; comparator_left = list(s['previous_parts']); comparator_right = (['select']+(['compare'] if s['initialized'] else [])) if s['has_value'] else []; payload = [dict(r) for r in s['records']]; credit = max(0,s['credit']-int(s['has_value'] and s['error'] is None and (not s['initialized'] or not s['equal']))); compare = s['key_a'][0]==s['key_b'][0] and (not s['key_a'][0] or s['key_a'][1]==s['key_b'][1]); reset_emit = (s['comparison_trace'].index('exit') if 'enter' in s['comparison_trace'] and 'exit' in s['comparison_trace'] and s['comparison_trace'].index('enter')<s['comparison_trace'].index('reset')<s['comparison_trace'].index('exit') else s['comparison_trace'].index('reset')) if 'reset' in s['comparison_trace'] else None

Why this case matters

Observer implementations need to preserve this state while subscriptions enter, execute, and leave their lifecycle.

One recorded failure

Sample boundary fixture

This sample comes from the broken implementation of a controlled reproducer.

Boundary fixtureActualExpectedOutcome
transition 0{"comparator_left": ["a"], "comparator_right": ["select"], "compare": true, "credit": 9, "emit": false, "first": true, "initialized": false, "payload": [{"detail": 0, "key": "a"}, {"detail": "kept", "key": "b"}], "previous": 0, "reset_emit": 2}{"comparator_left": ["a"], "comparator_right": ["select"], "compare": false, "credit": 9, "emit": false, "first": true, "initialized": false, "payload": [{"detail": 0, "key": "a"}, {"detail": "kept", "key": "b"}], "previous": 0, "reset_emit": 2}Failed

MEMBER ARCHIVE

The complete case is available to members.

This record includes three runnable implementations, regression fixtures, execution results, and source hashes.

Member access is invitation-based. Sign in with your invited account to inspect the sources.

Sign in to the archive ↗