{"abstract":"Lines ending in two carriage returns compare equal to lines with one.","category":"Text diff and three-way merge","checks":10,"contract":"Normalize each line: with strip_cr remove one trailing \"\\r\"; mode \"w\" deletes all whitespace (str.split semantics); mode \"b\" collapses runs of spaces and tabs to one space and strips trailing spaces and tabs; mode \"none\" leaves the line. With ignore_blank, drop lines whose normalized key is empty. Return both key lists and whether they are equal.","evaluation_group":"w2-text-diff-merge-whitespace-comparison-modes","failed_approach":"Removing every carriage return also deletes ones inside the line.","family":"w2-text-diff-merge-whitespace-comparison-modes-carriage-return-strip","id":"FA-75551","implementations":{"attempt":{"sha256":"3040ca1f3751dd16c6aef0077021eabf14a1812b1774061130c15db8172ec094","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(a, b, mode, strip_cr, ignore_blank):\n    def norm(line):\n        if strip_cr:\n            line = line.replace('\\r', '')\n        if mode == 'w':\n            return ''.join(line.split())\n        if mode == 'b':\n            return re.sub(r'[ \\t]+', ' ', line).rstrip(' \\t')\n        return line\n    ka = [norm(x) for x in a]\n    kb = [norm(x) for x in b]\n    if ignore_blank:\n        ka = [x for x in ka if x != '']\n        kb = [x for x in kb if x != '']\n    return {'a': ka, 'b': kb, 'equal': ka == kb}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    2: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    3: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    4: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    5: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n}[N]\nfor label, args, expected in cases:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"360a4e62c157292847ab62849e588cdad2c4e35e120fb477a99864fd727fcb4f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(a, b, mode, strip_cr, ignore_blank):\n    def norm(line):\n        if strip_cr:\n            line = line.rstrip('\\r')\n        if mode == 'w':\n            return ''.join(line.split())\n        if mode == 'b':\n            return re.sub(r'[ \\t]+', ' ', line).rstrip(' \\t')\n        return line\n    ka = [norm(x) for x in a]\n    kb = [norm(x) for x in b]\n    if ignore_blank:\n        ka = [x for x in ka if x != '']\n        kb = [x for x in kb if x != '']\n    return {'a': ka, 'b': kb, 'equal': ka == kb}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    2: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    3: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    4: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    5: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n}[N]\nfor label, args, expected in cases:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"c004dde0f25b1133d2a36dd64148fa02d548feb4cbb32e1f557ed155676cebf5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(a, b, mode, strip_cr, ignore_blank):\n    def norm(line):\n        if strip_cr and line.endswith('\\r'):\n            line = line[:-1]\n        if mode == 'w':\n            return ''.join(line.split())\n        if mode == 'b':\n            return re.sub(r'[ \\t]+', ' ', line).rstrip(' \\t')\n        return line\n    ka = [norm(x) for x in a]\n    kb = [norm(x) for x in b]\n    if ignore_blank:\n        ka = [x for x in ka if x != '']\n        kb = [x for x in kb if x != '']\n    return {'a': ka, 'b': kb, 'equal': ka == kb}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    2: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    3: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    4: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n    5: [('amount of whitespace ignored', [['a  b', 'c\\t\\td  '], ['a b', 'c d'], 'b', False, False], {'a': ['a b', 'c d'], 'b': ['a b', 'c d'], 'equal': True}), ('leading whitespace presence matters under -b', [['  x'], ['x'], 'b', False, False], {'a': [' x'], 'b': ['x'], 'equal': False}), ('all whitespace ignored', [['a b c', ' \\t'], ['abc', ''], 'w', False, False], {'a': ['abc', ''], 'b': ['abc', ''], 'equal': True}), ('carriage return stripped once', [['line\\r', 'two\\r\\r'], ['line', 'two\\r'], 'none', True, False], {'a': ['line', 'two\\r'], 'b': ['line', 'two'], 'equal': False}), ('carriage return kept without the flag', [['cr\\r'], ['cr'], 'b', False, False], {'a': ['cr\\r'], 'b': ['cr'], 'equal': False}), ('interior carriage return is content', [['a\\rb'], ['ab'], 'none', True, False], {'a': ['a\\rb'], 'b': ['ab'], 'equal': False}), ('whitespace-only line is blank only when normalized empty', [['x', '   ', 'y'], ['x', 'y'], 'none', False, True], {'a': ['x', '   ', 'y'], 'b': ['x', 'y'], 'equal': False}), ('blank lines ignored under -w', [['x', ' \\t ', 'y', '', '', '', '', ''], ['x', 'y'], 'w', False, True], {'a': ['x', 'y'], 'b': ['x', 'y'], 'equal': True}), ('tabs under -w', [['k\\tv', 'q'], ['kv', 'q'], 'w', False, False], {'a': ['kv', 'q'], 'b': ['kv', 'q'], 'equal': True}), ('vertical tab under -w', [['m\\x0bn'], ['mn'], 'w', False, False], {'a': ['mn'], 'b': ['mn'], 'equal': True})],\n}[N]\nfor label, args, expected in cases:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic, bounded teaching model of one diff, patch or merge rule with stipulated conventions; it is not a production diff or version-control implementation and makes no claim of conformance to any specific tool. 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-text-diff-merge-whitespace-comparison-modes-carriage-return-strip","generated_at":"2026-09-29T14:49:07.529143+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Diff options like -w, -b, --strip-trailing-cr and --ignore-blank-lines decide which changes are shown at all.","repair":"Remove exactly one trailing carriage return.","root_cause":"The CR stripping removes all trailing carriage returns instead of one.","sha256":"293e313c94ba3f29b62e541bb5537ae80eccdaba84c89a94067e6e5bbda9319c","title":"Whitespace comparison modes: every trailing carriage return is stripped · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.76,"exit_code":1,"observations":[{"actual":{"a":["a b","c d"],"b":["a b","c d"],"equal":true},"check":"amount of whitespace ignored","expected":{"a":["a b","c d"],"b":["a b","c d"],"equal":true},"passed":true},{"actual":{"a":[" x"],"b":["x"],"equal":false},"check":"leading whitespace presence matters under -b","expected":{"a":[" x"],"b":["x"],"equal":false},"passed":true},{"actual":{"a":["abc",""],"b":["abc",""],"equal":true},"check":"all whitespace ignored","expected":{"a":["abc",""],"b":["abc",""],"equal":true},"passed":true},{"actual":{"a":["line","two"],"b":["line","two"],"equal":true},"check":"carriage return stripped once","expected":{"a":["line","two\r"],"b":["line","two"],"equal":false},"passed":false},{"actual":{"a":["cr\r"],"b":["cr"],"equal":false},"check":"carriage return kept without the flag","expected":{"a":["cr\r"],"b":["cr"],"equal":false},"passed":true},{"actual":{"a":["ab"],"b":["ab"],"equal":true},"check":"interior carriage return is content","expected":{"a":["a\rb"],"b":["ab"],"equal":false},"passed":false},{"actual":{"a":["x","   ","y"],"b":["x","y"],"equal":false},"check":"whitespace-only line is blank only when normalized empty","expected":{"a":["x","   ","y"],"b":["x","y"],"equal":false},"passed":true},{"actual":{"a":["x","y"],"b":["x","y"],"equal":true},"check":"blank lines ignored under -w","expected":{"a":["x","y"],"b":["x","y"],"equal":true},"passed":true},{"actual":{"a":["kv","q"],"b":["kv","q"],"equal":true},"check":"tabs under -w","expected":{"a":["kv","q"],"b":["kv","q"],"equal":true},"passed":true},{"actual":{"a":["mn"],"b":["mn"],"equal":true},"check":"vertical tab under -w","expected":{"a":["mn"],"b":["mn"],"equal":true},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"amount of whitespace ignored\", \"actual\": {\"a\": [\"a b\", \"c d\"], \"b\": [\"a b\", \"c d\"], \"equal\": true}, \"expected\": {\"a\": [\"a b\", \"c d\"], \"b\": [\"a b\", \"c d\"], \"equal\": true}, \"passed\": true}, {\"check\": \"leading whitespace presence matters under -b\", \"actual\": {\"a\": [\" x\"], \"b\": [\"x\"], \"equal\": false}, \"expected\": {\"a\": [\" x\"], \"b\": [\"x\"], \"equal\": false}, \"passed\": true}, {\"check\": \"all whitespace ignored\", \"actual\": {\"a\": [\"abc\", \"\"], \"b\": [\"abc\", \"\"], \"equal\": true}, \"expected\": {\"a\": [\"abc\", \"\"], \"b\": [\"abc\", \"\"], \"equal\": true}, \"passed\": true}, {\"check\": \"carriage return stripped once\", \"actual\": {\"a\": [\"line\", \"two\"], \"b\": [\"line\", \"two\"], \"equal\": true}, \"expected\": {\"a\": [\"line\", \"two\\r\"], \"b\": [\"line\", \"two\"], \"equal\": false}, \"passed\": false}, {\"check\": \"carriage return kept without the flag\", \"actual\": {\"a\": [\"cr\\r\"], \"b\": [\"cr\"], \"equal\": false}, \"expected\": {\"a\": [\"cr\\r\"], \"b\": [\"cr\"], \"equal\": false}, \"passed\": true}, {\"check\": \"interior carriage return is content\", \"actual\": {\"a\": [\"ab\"], \"b\": [\"ab\"], \"equal\": true}, \"expected\": {\"a\": [\"a\\rb\"], \"b\": [\"ab\"], \"equal\": false}, \"passed\": false}, {\"check\": \"whitespace-only line is blank only when normalized empty\", \"actual\": {\"a\": [\"x\", \"   \", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": false}, \"expected\": {\"a\": [\"x\", \"   \", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": false}, \"passed\": true}, {\"check\": \"blank lines ignored under -w\", \"actual\": {\"a\": [\"x\", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": true}, \"expected\": {\"a\": [\"x\", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": true}, \"passed\": true}, {\"check\": \"tabs under -w\", \"actual\": {\"a\": [\"kv\", \"q\"], \"b\": [\"kv\", \"q\"], \"equal\": true}, \"expected\": {\"a\": [\"kv\", \"q\"], \"b\": [\"kv\", \"q\"], \"equal\": true}, \"passed\": true}, {\"check\": \"vertical tab under -w\", \"actual\": {\"a\": [\"mn\"], \"b\": [\"mn\"], \"equal\": true}, \"expected\": {\"a\": [\"mn\"], \"b\": [\"mn\"], \"equal\": true}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.446,"exit_code":1,"observations":[{"actual":{"a":["a b","c d"],"b":["a b","c d"],"equal":true},"check":"amount of whitespace ignored","expected":{"a":["a b","c d"],"b":["a b","c d"],"equal":true},"passed":true},{"actual":{"a":[" x"],"b":["x"],"equal":false},"check":"leading whitespace presence matters under -b","expected":{"a":[" x"],"b":["x"],"equal":false},"passed":true},{"actual":{"a":["abc",""],"b":["abc",""],"equal":true},"check":"all whitespace ignored","expected":{"a":["abc",""],"b":["abc",""],"equal":true},"passed":true},{"actual":{"a":["line","two"],"b":["line","two"],"equal":true},"check":"carriage return stripped once","expected":{"a":["line","two\r"],"b":["line","two"],"equal":false},"passed":false},{"actual":{"a":["cr\r"],"b":["cr"],"equal":false},"check":"carriage return kept without the flag","expected":{"a":["cr\r"],"b":["cr"],"equal":false},"passed":true},{"actual":{"a":["a\rb"],"b":["ab"],"equal":false},"check":"interior carriage return is content","expected":{"a":["a\rb"],"b":["ab"],"equal":false},"passed":true},{"actual":{"a":["x","   ","y"],"b":["x","y"],"equal":false},"check":"whitespace-only line is blank only when normalized empty","expected":{"a":["x","   ","y"],"b":["x","y"],"equal":false},"passed":true},{"actual":{"a":["x","y"],"b":["x","y"],"equal":true},"check":"blank lines ignored under -w","expected":{"a":["x","y"],"b":["x","y"],"equal":true},"passed":true},{"actual":{"a":["kv","q"],"b":["kv","q"],"equal":true},"check":"tabs under -w","expected":{"a":["kv","q"],"b":["kv","q"],"equal":true},"passed":true},{"actual":{"a":["mn"],"b":["mn"],"equal":true},"check":"vertical tab under -w","expected":{"a":["mn"],"b":["mn"],"equal":true},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"amount of whitespace ignored\", \"actual\": {\"a\": [\"a b\", \"c d\"], \"b\": [\"a b\", \"c d\"], \"equal\": true}, \"expected\": {\"a\": [\"a b\", \"c d\"], \"b\": [\"a b\", \"c d\"], \"equal\": true}, \"passed\": true}, {\"check\": \"leading whitespace presence matters under -b\", \"actual\": {\"a\": [\" x\"], \"b\": [\"x\"], \"equal\": false}, \"expected\": {\"a\": [\" x\"], \"b\": [\"x\"], \"equal\": false}, \"passed\": true}, {\"check\": \"all whitespace ignored\", \"actual\": {\"a\": [\"abc\", \"\"], \"b\": [\"abc\", \"\"], \"equal\": true}, \"expected\": {\"a\": [\"abc\", \"\"], \"b\": [\"abc\", \"\"], \"equal\": true}, \"passed\": true}, {\"check\": \"carriage return stripped once\", \"actual\": {\"a\": [\"line\", \"two\"], \"b\": [\"line\", \"two\"], \"equal\": true}, \"expected\": {\"a\": [\"line\", \"two\\r\"], \"b\": [\"line\", \"two\"], \"equal\": false}, \"passed\": false}, {\"check\": \"carriage return kept without the flag\", \"actual\": {\"a\": [\"cr\\r\"], \"b\": [\"cr\"], \"equal\": false}, \"expected\": {\"a\": [\"cr\\r\"], \"b\": [\"cr\"], \"equal\": false}, \"passed\": true}, {\"check\": \"interior carriage return is content\", \"actual\": {\"a\": [\"a\\rb\"], \"b\": [\"ab\"], \"equal\": false}, \"expected\": {\"a\": [\"a\\rb\"], \"b\": [\"ab\"], \"equal\": false}, \"passed\": true}, {\"check\": \"whitespace-only line is blank only when normalized empty\", \"actual\": {\"a\": [\"x\", \"   \", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": false}, \"expected\": {\"a\": [\"x\", \"   \", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": false}, \"passed\": true}, {\"check\": \"blank lines ignored under -w\", \"actual\": {\"a\": [\"x\", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": true}, \"expected\": {\"a\": [\"x\", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": true}, \"passed\": true}, {\"check\": \"tabs under -w\", \"actual\": {\"a\": [\"kv\", \"q\"], \"b\": [\"kv\", \"q\"], \"equal\": true}, \"expected\": {\"a\": [\"kv\", \"q\"], \"b\": [\"kv\", \"q\"], \"equal\": true}, \"passed\": true}, {\"check\": \"vertical tab under -w\", \"actual\": {\"a\": [\"mn\"], \"b\": [\"mn\"], \"equal\": true}, \"expected\": {\"a\": [\"mn\"], \"b\": [\"mn\"], \"equal\": true}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.208,"exit_code":0,"observations":[{"actual":{"a":["a b","c d"],"b":["a b","c d"],"equal":true},"check":"amount of whitespace ignored","expected":{"a":["a b","c d"],"b":["a b","c d"],"equal":true},"passed":true},{"actual":{"a":[" x"],"b":["x"],"equal":false},"check":"leading whitespace presence matters under -b","expected":{"a":[" x"],"b":["x"],"equal":false},"passed":true},{"actual":{"a":["abc",""],"b":["abc",""],"equal":true},"check":"all whitespace ignored","expected":{"a":["abc",""],"b":["abc",""],"equal":true},"passed":true},{"actual":{"a":["line","two\r"],"b":["line","two"],"equal":false},"check":"carriage return stripped once","expected":{"a":["line","two\r"],"b":["line","two"],"equal":false},"passed":true},{"actual":{"a":["cr\r"],"b":["cr"],"equal":false},"check":"carriage return kept without the flag","expected":{"a":["cr\r"],"b":["cr"],"equal":false},"passed":true},{"actual":{"a":["a\rb"],"b":["ab"],"equal":false},"check":"interior carriage return is content","expected":{"a":["a\rb"],"b":["ab"],"equal":false},"passed":true},{"actual":{"a":["x","   ","y"],"b":["x","y"],"equal":false},"check":"whitespace-only line is blank only when normalized empty","expected":{"a":["x","   ","y"],"b":["x","y"],"equal":false},"passed":true},{"actual":{"a":["x","y"],"b":["x","y"],"equal":true},"check":"blank lines ignored under -w","expected":{"a":["x","y"],"b":["x","y"],"equal":true},"passed":true},{"actual":{"a":["kv","q"],"b":["kv","q"],"equal":true},"check":"tabs under -w","expected":{"a":["kv","q"],"b":["kv","q"],"equal":true},"passed":true},{"actual":{"a":["mn"],"b":["mn"],"equal":true},"check":"vertical tab under -w","expected":{"a":["mn"],"b":["mn"],"equal":true},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"amount of whitespace ignored\", \"actual\": {\"a\": [\"a b\", \"c d\"], \"b\": [\"a b\", \"c d\"], \"equal\": true}, \"expected\": {\"a\": [\"a b\", \"c d\"], \"b\": [\"a b\", \"c d\"], \"equal\": true}, \"passed\": true}, {\"check\": \"leading whitespace presence matters under -b\", \"actual\": {\"a\": [\" x\"], \"b\": [\"x\"], \"equal\": false}, \"expected\": {\"a\": [\" x\"], \"b\": [\"x\"], \"equal\": false}, \"passed\": true}, {\"check\": \"all whitespace ignored\", \"actual\": {\"a\": [\"abc\", \"\"], \"b\": [\"abc\", \"\"], \"equal\": true}, \"expected\": {\"a\": [\"abc\", \"\"], \"b\": [\"abc\", \"\"], \"equal\": true}, \"passed\": true}, {\"check\": \"carriage return stripped once\", \"actual\": {\"a\": [\"line\", \"two\\r\"], \"b\": [\"line\", \"two\"], \"equal\": false}, \"expected\": {\"a\": [\"line\", \"two\\r\"], \"b\": [\"line\", \"two\"], \"equal\": false}, \"passed\": true}, {\"check\": \"carriage return kept without the flag\", \"actual\": {\"a\": [\"cr\\r\"], \"b\": [\"cr\"], \"equal\": false}, \"expected\": {\"a\": [\"cr\\r\"], \"b\": [\"cr\"], \"equal\": false}, \"passed\": true}, {\"check\": \"interior carriage return is content\", \"actual\": {\"a\": [\"a\\rb\"], \"b\": [\"ab\"], \"equal\": false}, \"expected\": {\"a\": [\"a\\rb\"], \"b\": [\"ab\"], \"equal\": false}, \"passed\": true}, {\"check\": \"whitespace-only line is blank only when normalized empty\", \"actual\": {\"a\": [\"x\", \"   \", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": false}, \"expected\": {\"a\": [\"x\", \"   \", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": false}, \"passed\": true}, {\"check\": \"blank lines ignored under -w\", \"actual\": {\"a\": [\"x\", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": true}, \"expected\": {\"a\": [\"x\", \"y\"], \"b\": [\"x\", \"y\"], \"equal\": true}, \"passed\": true}, {\"check\": \"tabs under -w\", \"actual\": {\"a\": [\"kv\", \"q\"], \"b\": [\"kv\", \"q\"], \"equal\": true}, \"expected\": {\"a\": [\"kv\", \"q\"], \"b\": [\"kv\", \"q\"], \"equal\": true}, \"passed\": true}, {\"check\": \"vertical tab under -w\", \"actual\": {\"a\": [\"mn\"], \"b\": [\"mn\"], \"equal\": true}, \"expected\": {\"a\": [\"mn\"], \"b\": [\"mn\"], \"equal\": true}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}