FAILURE MAP
← Case archive

FA-41726 / Listener lifecycle / Open access

Callback current-target metadata points at the terminal target · case 01

Callback current-target metadata points at the terminal target; the returned lifecycle plan violates the stated transition contract.

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

ROOT CAUSE

The current_target decision in the propagation-plan listener model is computed as s['path'][-1] if s['path'] else None, losing a required lifecycle condition.

VERIFIED REPAIR

Compute the current_target decision from the complete contract: s['current'].

Unsuccessful approach: The partial repair uses s['current'] if not s['stopped'] else None; a retained regression distinguishes it from the full transition.

Case contract

A stipulated non-UI event path is root-to-target. Capture visits ancestors in that order; bubble visits ancestors in reverse only for bubbling events. Target is visited once. stopPropagation prevents later nodes but not sibling callbacks on the current node; stopImmediate prevents both. Only cancelable, nonpassive listeners may prevent the default action. A prior prevented marker is monotonic. 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: capture = s['path'][:-1]; bubble = list(reversed(s['path'][:-1])) if s['bubbles'] else []; target = s['path'][-1] if s['path'] else None; next_node = not s['stopped'] and not s['immediate']; siblings = 0 if s['immediate'] else s['siblings']; default_prevented = s['prevented'] or (s['prevent'] and s['cancelable'] and not s['passive']); default_run = not s['prevented'] and not(s['prevent'] and s['cancelable'] and not s['passive']); current_target = s['current']; path_copy = list(s['path']); prevent_ignored = s['prevent'] and (s['passive'] or not s['cancelable'])

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 {
        'capture': s['path'][:-1],
        'bubble': list(reversed(s['path'][:-1])) if s['bubbles'] else [],
        'target': s['path'][-1] if s['path'] else None,
        'next_node': not s['stopped'] and not s['immediate'],
        'siblings': 0 if s['immediate'] else s['siblings'],
        'default_prevented': s['prevented'] or (s['prevent'] and s['cancelable'] and not s['passive']),
        'default_run': not s['prevented'] and not(s['prevent'] and s['cancelable'] and not s['passive']),
        'current_target': s['path'][-1] if s['path'] else None,
        'path_copy': list(s['path']),
        'prevent_ignored': s['prevent'] and (s['passive'] or not s['cancelable']),
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 3, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 3, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 3, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 3, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 2: [({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 6, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 6, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 6, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 6, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 6, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 6, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': [], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 6, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 6, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 3: [({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 9, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 9, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 4: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 12, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 12, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 12, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 5: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 15, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 15, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 15, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 15, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 15, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})]}
for i,(state,expected) in enumerate(fixtures[N]):
    check("transition "+str(i), solve(state), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
transition 0{'bubble': [], 'capture': ['root', 'middle'], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 3, 'target': 'target'}{'bubble': [], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 3, 'target': 'target'}Failed
transition 1{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 2{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Failed
transition 3{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': False, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': False, 'siblings': 0, 'target': 'target'}Passed
transition 4{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 5{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 6{'bubble': [], 'capture': [], 'current_target': None, 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': [], 'prevent_ignored': False, 'siblings': 0, 'target': None}{'bubble': [], 'capture': [], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': [], 'prevent_ignored': False, 'siblings': 0, 'target': None}Failed
transition 7{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed

SHA-256 / 362b454d2977b5823918e1f4e1de99a7717ab1a0cfe5a4171e821b226a5a16a0

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(s):
    return {
        'capture': s['path'][:-1],
        'bubble': list(reversed(s['path'][:-1])) if s['bubbles'] else [],
        'target': s['path'][-1] if s['path'] else None,
        'next_node': not s['stopped'] and not s['immediate'],
        'siblings': 0 if s['immediate'] else s['siblings'],
        'default_prevented': s['prevented'] or (s['prevent'] and s['cancelable'] and not s['passive']),
        'default_run': not s['prevented'] and not(s['prevent'] and s['cancelable'] and not s['passive']),
        'current_target': s['current'] if not s['stopped'] else None,
        'path_copy': list(s['path']),
        'prevent_ignored': s['prevent'] and (s['passive'] or not s['cancelable']),
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 3, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 3, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 3, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 3, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 2: [({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 6, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 6, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 6, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 6, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 6, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 6, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': [], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 6, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 6, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 3: [({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 9, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 9, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 4: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 12, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 12, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 12, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 5: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 15, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 15, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 15, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 15, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 15, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})]}
for i,(state,expected) in enumerate(fixtures[N]):
    check("transition "+str(i), solve(state), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
transition 0{'bubble': [], 'capture': ['root', 'middle'], 'current_target': None, 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 3, 'target': 'target'}{'bubble': [], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 3, 'target': 'target'}Failed
transition 1{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 2{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 3{'bubble': [], 'capture': [], 'current_target': None, 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': False, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': False, 'siblings': 0, 'target': 'target'}Failed
transition 4{'bubble': [], 'capture': [], 'current_target': None, 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Failed
transition 5{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 6{'bubble': [], 'capture': [], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': [], 'prevent_ignored': False, 'siblings': 0, 'target': None}{'bubble': [], 'capture': [], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': [], 'prevent_ignored': False, 'siblings': 0, 'target': None}Passed
transition 7{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': None, 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Failed

SHA-256 / 972b537435f66479c3a9c022ea843487e491957bbece6fa815100e2a254cfbac

3 / The verified repair

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

N = 1
observations = []
def solve(s):
    return {
        'capture': s['path'][:-1],
        'bubble': list(reversed(s['path'][:-1])) if s['bubbles'] else [],
        'target': s['path'][-1] if s['path'] else None,
        'next_node': not s['stopped'] and not s['immediate'],
        'siblings': 0 if s['immediate'] else s['siblings'],
        'default_prevented': s['prevented'] or (s['prevent'] and s['cancelable'] and not s['passive']),
        'default_run': not s['prevented'] and not(s['prevent'] and s['cancelable'] and not s['passive']),
        'current_target': s['current'],
        'path_copy': list(s['path']),
        'prevent_ignored': s['prevent'] and (s['passive'] or not s['cancelable']),
    }
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 3, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 3, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 3, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 3, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 2: [({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 6, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 6, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 6, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 6, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 6, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 6, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': [], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 6, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 6, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 3: [({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 9, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 9, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 9, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 9, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 4: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 12, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 12, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 12, 'default_prevented': False, 'default_run': True, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': False, 'siblings': 12, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 12, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})], 5: [({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': True, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': False, 'siblings': 15, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 15, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True}), ({'path': ['target'], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': False, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': True}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': False, 'cancelable': False, 'passive': True, 'prevent': False, 'prevented': False, 'siblings': 15, 'current': 'root'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 15, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': True, 'stopped': False, 'immediate': True, 'cancelable': True, 'passive': False, 'prevent': True, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': True, 'passive': False, 'prevent': False, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 15, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': False}), ({'path': ['target'], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': True, 'passive': True, 'prevent': False, 'prevented': True, 'siblings': 0, 'current': 'target'}, {'capture': [], 'bubble': [], 'target': 'target', 'next_node': True, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['target'], 'prevent_ignored': False}), ({'path': [], 'bubbles': False, 'stopped': False, 'immediate': False, 'cancelable': False, 'passive': False, 'prevent': False, 'prevented': False, 'siblings': 0, 'current': 'root'}, {'capture': [], 'bubble': [], 'target': None, 'next_node': True, 'siblings': 0, 'default_prevented': False, 'default_run': True, 'current_target': 'root', 'path_copy': [], 'prevent_ignored': False}), ({'path': ['root', 'middle', 'target'], 'bubbles': True, 'stopped': True, 'immediate': True, 'cancelable': True, 'passive': True, 'prevent': True, 'prevented': True, 'siblings': 15, 'current': 'target'}, {'capture': ['root', 'middle'], 'bubble': ['middle', 'root'], 'target': 'target', 'next_node': False, 'siblings': 0, 'default_prevented': True, 'default_run': False, 'current_target': 'target', 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True})]}
for i,(state,expected) in enumerate(fixtures[N]):
    check("transition "+str(i), solve(state), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
transition 0{'bubble': [], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 3, 'target': 'target'}{'bubble': [], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 3, 'target': 'target'}Passed
transition 1{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 2{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'root', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 3{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': False, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': False, 'siblings': 0, 'target': 'target'}Passed
transition 4{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': False, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 5{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': [], 'capture': [], 'current_target': 'target', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': ['target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed
transition 6{'bubble': [], 'capture': [], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': [], 'prevent_ignored': False, 'siblings': 0, 'target': None}{'bubble': [], 'capture': [], 'current_target': 'root', 'default_prevented': False, 'default_run': True, 'next_node': True, 'path_copy': [], 'prevent_ignored': False, 'siblings': 0, 'target': None}Passed
transition 7{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}{'bubble': ['middle', 'root'], 'capture': ['root', 'middle'], 'current_target': 'target', 'default_prevented': True, 'default_run': False, 'next_node': False, 'path_copy': ['root', 'middle', 'target'], 'prevent_ignored': True, 'siblings': 0, 'target': 'target'}Passed

SHA-256 / 32e66e0ca367468432b4cf23079173657e9405bb0e59fc43fd67ce6705b3a3a8

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

Case digest / 6f7af5c283dc37cf3ca6a4f2cc5480673627ddef9a7bc73e3686526c4a340141