FA-26046 / Filter interfaces / Open access
Endpoint validation matches both row identity and operand slot · case 01
Endpoint validation matches both row identity and operand slot is violated by the widget projection.
ROOT CAUSE
The slot-error decision uses `[e['message'] for e in d['errors'] if e['id']==d['id']]` instead of the stipulated validation-addresses projection.
VERIFIED REPAIR
Implement the declared slot-error projection: `[e['message'] for e in d['errors'] if e['id']==d['id'] and e['slot']==d['slot']]`.
Unsuccessful approach: The attempted correction `[e['message'] for e in d['errors'] if e['slot']==d['slot']]` still violates the explicit contract fixtures.
Case contract
Filter validation is attached to stable criterion IDs and operand slots. Server errors belong to the submitted revision and cannot move to neighboring rows after reordering. This example checks: Endpoint validation matches both row identity and operand slot.
Why this case matters
Filter-widget state and serialization must preserve user constraints while the view changes.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'row-error':([e['message'] for e in d['errors'] if e['id']==d['id']]), 'slot-error':([e['message'] for e in d['errors'] if e['id']==d['id']]), 'removed-row-errors':([e for e in d['errors'] if e['id'] in d['rows']]), 'server-error-revision':(d['errors'] if d['error_revision']==d['revision'] else []), 'first-invalid-row':(next((row for row in d['rows'] if any(e['id']==row for e in d['errors'])),None)), 'invalid-row-count':(len(set(e['id'] for e in d['errors'] if e['id'] in d['rows'])))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1})], 2: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1})], 3: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0})], 4: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': None, 'invalid-row-count': 0})], 5: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2})]}
for index, (data, expected) in enumerate(fixtures[N]):
check("contract fixture " + str(index), solve(data), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| contract fixture 0 | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [], 'slot-error': ['U']} | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [], 'slot-error': []} | Failed |
| contract fixture 1 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['U']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | Failed |
| contract fixture 2 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 3 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 4 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 5 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 6 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 7 | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['U']} | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | Failed |
| contract fixture 8 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [], 'slot-error': ['L', 'B']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [], 'slot-error': ['L']} | Failed |
| contract fixture 9 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L', 'B']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L']} | Failed |
SHA-256 / 47f23ee9a29eaae2eb87ab0d634f078be85cbcca568b7a00af9d1f56d0d7ca5a
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'row-error':([e['message'] for e in d['errors'] if e['id']==d['id']]), 'slot-error':([e['message'] for e in d['errors'] if e['slot']==d['slot']]), 'removed-row-errors':([e for e in d['errors'] if e['id'] in d['rows']]), 'server-error-revision':(d['errors'] if d['error_revision']==d['revision'] else []), 'first-invalid-row':(next((row for row in d['rows'] if any(e['id']==row for e in d['errors'])),None)), 'invalid-row-count':(len(set(e['id'] for e in d['errors'] if e['id'] in d['rows'])))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1})], 2: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1})], 3: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0})], 4: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': None, 'invalid-row-count': 0})], 5: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2})]}
for index, (data, expected) in enumerate(fixtures[N]):
check("contract fixture " + str(index), solve(data), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| contract fixture 0 | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [], 'slot-error': ['L']} | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [], 'slot-error': []} | Failed |
| contract fixture 1 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | Failed |
| contract fixture 2 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 3 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 4 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 5 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 6 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 7 | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L']} | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | Failed |
| contract fixture 8 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [], 'slot-error': ['L']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [], 'slot-error': ['L']} | Passed |
| contract fixture 9 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L']} | Passed |
SHA-256 / 965cbd41200cce012d639145e046079a6cf4d5dc628a2c4256c099b7fed04870
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'row-error':([e['message'] for e in d['errors'] if e['id']==d['id']]), 'slot-error':([e['message'] for e in d['errors'] if e['id']==d['id'] and e['slot']==d['slot']]), 'removed-row-errors':([e for e in d['errors'] if e['id'] in d['rows']]), 'server-error-revision':(d['errors'] if d['error_revision']==d['revision'] else []), 'first-invalid-row':(next((row for row in d['rows'] if any(e['id']==row for e in d['errors'])),None)), 'invalid-row-count':(len(set(e['id'] for e in d['errors'] if e['id'] in d['rows'])))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1})], 2: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1})], 3: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0})], 4: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'upper', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'upper', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': ['U'], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['B'], 'removed-row-errors': [], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': None, 'invalid-row-count': 0})], 5: [({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 1, 'slot': 'lower', 'rows': ['b'], 'error_revision': 2, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [], 'id': 'b', 'index': 0, 'slot': 'upper', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 0, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [], 'id': 'gone', 'index': 1, 'slot': 'lower', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'a', 'index': 0, 'slot': 'lower', 'rows': ['b'], 'error_revision': 1, 'revision': 2}, {'row-error': ['U'], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'b', 'invalid-row-count': 1}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 0, 'slot': 'lower', 'rows': [], 'error_revision': 1, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'b', 'index': 1, 'slot': 'lower', 'rows': [], 'error_revision': 2, 'revision': 2}, {'row-error': ['L', 'B'], 'slot-error': ['L'], 'removed-row-errors': [], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': None, 'invalid-row-count': 0}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'gone', 'index': 0, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 1, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [], 'first-invalid-row': 'a', 'invalid-row-count': 2}), ({'errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'id': 'gone', 'index': 1, 'slot': 'upper', 'rows': ['a', 'b'], 'error_revision': 2, 'revision': 2}, {'row-error': [], 'slot-error': [], 'removed-row-errors': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'server-error-revision': [{'id': 'b', 'slot': 'lower', 'message': 'L'}, {'id': 'a', 'slot': 'upper', 'message': 'U'}, {'id': 'b', 'slot': 'upper', 'message': 'B'}], 'first-invalid-row': 'a', 'invalid-row-count': 2})]}
for index, (data, expected) in enumerate(fixtures[N]):
check("contract fixture " + str(index), solve(data), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| contract fixture 0 | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 1 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | Passed |
| contract fixture 2 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 3 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 4 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 5 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 6 | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | {'first-invalid-row': None, 'invalid-row-count': 0, 'removed-row-errors': [], 'row-error': [], 'server-error-revision': [], 'slot-error': []} | Passed |
| contract fixture 7 | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | {'first-invalid-row': 'a', 'invalid-row-count': 2, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['U'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': []} | Passed |
| contract fixture 8 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [], 'slot-error': ['L']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [], 'slot-error': ['L']} | Passed |
| contract fixture 9 | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L']} | {'first-invalid-row': 'b', 'invalid-row-count': 1, 'removed-row-errors': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'row-error': ['L', 'B'], 'server-error-revision': [{'id': 'b', 'message': 'L', 'slot': 'lower'}, {'id': 'a', 'message': 'U', 'slot': 'upper'}, {'id': 'b', 'message': 'B', 'slot': 'upper'}], 'slot-error': ['L']} | Passed |
SHA-256 / 110faa21e597466ef473812346a1d1408b3ffd25d29164779a1a2b517f9ecf94
Verification & scope
Deterministic bounded UI-state model only; no browser, query engine, network, or production-standard conformance is claimed. 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:41:12.335063+00:00.
Case digest / 8487257234755ee5b21ca161c65173380758742c390dcc4fea8bf5052c74bdc0