{"abstract":"A truncated file resolves without error and loses the text of the open conflict.","category":"Text diff and three-way merge","checks":10,"contract":"Scan lines for conflict blocks. A marker is exactly seven marker characters, alone or followed by a space and a label: \"<\" opens, \"|\" starts the optional base section, a line of exactly seven \"=\" separates, \">\" closes. Each closed block is replaced by ours, theirs, ours followed by theirs (union, no dedupe) or base. An unclosed block yields {\"error\": \"unterminated conflict\"}. Return the lines and the number of conflicts.","evaluation_group":"w2-text-diff-merge-conflict-marker-resolution","failed_approach":"Flushing ours at end of input hides the truncation instead of reporting it.","family":"w2-text-diff-merge-conflict-marker-resolution-unterminated-block","id":"FA-75486","implementations":{"attempt":{"sha256":"0f4b52930c8c7f9e1977f9bd0a912bf665a57518369ebaf4b3784b27f0bdd0d8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(lines, strategy):\n    out = []\n    state = None\n    o, b, t = [], [], []\n    count = 0\n    def marker(line, ch):\n        return line == ch * 7 or line.startswith(ch * 7 + ' ')\n    for line in lines:\n        if state is None:\n            if marker(line, '<'):\n                state = 'o'\n                o, b, t = [], [], []\n            else:\n                out.append(line)\n        elif state == 'o' and marker(line, '|'):\n            state = 'b'\n        elif state in ('o', 'b') and line == '=' * 7:\n            state = 't'\n        elif state == 't' and marker(line, '>'):\n            count += 1\n            out.extend({'ours': o, 'theirs': t, 'union': o + t, 'base': b}[strategy])\n            state = None\n        else:\n            {'o': o, 'b': b, 't': t}[state].append(line)\n    if state is not None:\n        out.extend(o)\n    return {'lines': out, 'conflicts': count}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z1', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z1'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b1', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b1'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4'], 'conflicts': 2})],\n    2: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z2', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z2'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b2', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b2'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4'], 'conflicts': 3})],\n    3: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z3', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z3'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b3', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b3'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4'], 'conflicts': 4})],\n    4: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z4', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z4'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b4', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b4'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4', '4'], 'conflicts': 5})],\n    5: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z5', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z5'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b5', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b5'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4', '4', '4'], 'conflicts': 6})],\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":"97a6c2b15f3b732498b9e54898ede5a01f91a857995b05b5117f90a1773db681","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(lines, strategy):\n    out = []\n    state = None\n    o, b, t = [], [], []\n    count = 0\n    def marker(line, ch):\n        return line == ch * 7 or line.startswith(ch * 7 + ' ')\n    for line in lines:\n        if state is None:\n            if marker(line, '<'):\n                state = 'o'\n                o, b, t = [], [], []\n            else:\n                out.append(line)\n        elif state == 'o' and marker(line, '|'):\n            state = 'b'\n        elif state in ('o', 'b') and line == '=' * 7:\n            state = 't'\n        elif state == 't' and marker(line, '>'):\n            count += 1\n            out.extend({'ours': o, 'theirs': t, 'union': o + t, 'base': b}[strategy])\n            state = None\n        else:\n            {'o': o, 'b': b, 't': t}[state].append(line)\n    if False:\n        return {'error': 'unterminated conflict', 'conflicts': count}\n    return {'lines': out, 'conflicts': count}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z1', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z1'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b1', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b1'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4'], 'conflicts': 2})],\n    2: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z2', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z2'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b2', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b2'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4'], 'conflicts': 3})],\n    3: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z3', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z3'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b3', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b3'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4'], 'conflicts': 4})],\n    4: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z4', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z4'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b4', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b4'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4', '4'], 'conflicts': 5})],\n    5: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z5', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z5'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b5', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b5'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4', '4', '4'], 'conflicts': 6})],\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":"272d15778f4f1be1a425432da1c61043bb5fa4b9e954f6cb50c73a7260c1648a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(lines, strategy):\n    out = []\n    state = None\n    o, b, t = [], [], []\n    count = 0\n    def marker(line, ch):\n        return line == ch * 7 or line.startswith(ch * 7 + ' ')\n    for line in lines:\n        if state is None:\n            if marker(line, '<'):\n                state = 'o'\n                o, b, t = [], [], []\n            else:\n                out.append(line)\n        elif state == 'o' and marker(line, '|'):\n            state = 'b'\n        elif state in ('o', 'b') and line == '=' * 7:\n            state = 't'\n        elif state == 't' and marker(line, '>'):\n            count += 1\n            out.extend({'ours': o, 'theirs': t, 'union': o + t, 'base': b}[strategy])\n            state = None\n        else:\n            {'o': o, 'b': b, 't': t}[state].append(line)\n    if state is not None:\n        return {'error': 'unterminated conflict', 'conflicts': count}\n    return {'lines': out, 'conflicts': count}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z1', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z1'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b1', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b1'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4'], 'conflicts': 2})],\n    2: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z2', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z2'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b2', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b2'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4'], 'conflicts': 3})],\n    3: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z3', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z3'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b3', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b3'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4'], 'conflicts': 4})],\n    4: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z4', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z4'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b4', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b4'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4', '4'], 'conflicts': 5})],\n    5: [('take ours', [['h', '<<<<<<< ours', 'o1', '=======', 't1', '>>>>>>> theirs', 'z'], 'ours'], {'lines': ['h', 'o1', 'z'], 'conflicts': 1}), ('take theirs with base section', [['h', '<<<<<<< ours', 'o1', '||||||| base', 'b1', '=======', 't1', 't2', '>>>>>>> theirs'], 'theirs'], {'lines': ['h', 't1', 't2'], 'conflicts': 1}), ('union keeps both in order', [['<<<<<<< ours', 'x', 'y', '=======', 'y', 'z5', '>>>>>>> theirs'], 'union'], {'lines': ['x', 'y', 'y', 'z5'], 'conflicts': 1}), ('base strategy', [['<<<<<<<', 'o', '|||||||', 'b5', '=======', 't', '>>>>>>>'], 'base'], {'lines': ['b5'], 'conflicts': 1}), ('long marker-like content lines', [['<<<<<<<<<< banner', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs', '>>>>>>>>'], 'ours'], {'lines': ['<<<<<<<<<< banner', 'a', '>>>>>>>>'], 'conflicts': 1}), ('marker prefix glued to text', [['<<<<<<<x', '<<<<<<< ours', 'a', '=======', 'b', '>>>>>>> theirs'], 'theirs'], {'lines': ['<<<<<<<x', 'b'], 'conflicts': 1}), ('setext underline inside ours', [['<<<<<<< ours', 'Title', '========', '=======', 'T', '>>>>>>> theirs'], 'ours'], {'lines': ['Title', '========'], 'conflicts': 1}), ('indented separator-like line', [['<<<<<<< ours', '  =======', 'k', '=======', 't', '>>>>>>> theirs'], 'union'], {'lines': ['  =======', 'k', 't'], 'conflicts': 1}), ('unterminated conflict is an error', [['a', '<<<<<<< ours', 'o', '=======', 't'], 'ours'], {'error': 'unterminated conflict', 'conflicts': 0}), ('two conflicts', [['<<<<<<< ours', '1', '=======', '2', '>>>>>>> theirs', 'mid', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs', '<<<<<<< ours', '3', '||||||| base', 'b', '=======', '4', '>>>>>>> theirs'], 'theirs'], {'lines': ['2', 'mid', '4', '4', '4', '4', '4'], 'conflicts': 6})],\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-conflict-marker-resolution-unterminated-block","generated_at":"2026-09-29T14:49:06.915523+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Merge drivers and editors resolve conflict blocks by parsing marker lines that must not be confused with file content.","repair":"Report an error when input ends inside a conflict block.","root_cause":"The end-of-input check for an open conflict block is missing.","sha256":"1530b52ff5814ddbc1146a1688fcf4d8bf3a3baf0531010c7e09c652d7b040c2","title":"Conflict marker resolution: an unclosed conflict silently drops its lines · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":52.237,"exit_code":1,"observations":[{"actual":{"conflicts":1,"lines":["h","o1","z"]},"check":"take ours","expected":{"conflicts":1,"lines":["h","o1","z"]},"passed":true},{"actual":{"conflicts":1,"lines":["h","t1","t2"]},"check":"take theirs with base section","expected":{"conflicts":1,"lines":["h","t1","t2"]},"passed":true},{"actual":{"conflicts":1,"lines":["x","y","y","z1"]},"check":"union keeps both in order","expected":{"conflicts":1,"lines":["x","y","y","z1"]},"passed":true},{"actual":{"conflicts":1,"lines":["b1"]},"check":"base strategy","expected":{"conflicts":1,"lines":["b1"]},"passed":true},{"actual":{"conflicts":1,"lines":["<<<<<<<<<< banner","a",">>>>>>>>"]},"check":"long marker-like content lines","expected":{"conflicts":1,"lines":["<<<<<<<<<< banner","a",">>>>>>>>"]},"passed":true},{"actual":{"conflicts":1,"lines":["<<<<<<<x","b"]},"check":"marker prefix glued to text","expected":{"conflicts":1,"lines":["<<<<<<<x","b"]},"passed":true},{"actual":{"conflicts":1,"lines":["Title","========"]},"check":"setext underline inside ours","expected":{"conflicts":1,"lines":["Title","========"]},"passed":true},{"actual":{"conflicts":1,"lines":["  =======","k","t"]},"check":"indented separator-like line","expected":{"conflicts":1,"lines":["  =======","k","t"]},"passed":true},{"actual":{"conflicts":0,"lines":["a","o"]},"check":"unterminated conflict is an error","expected":{"conflicts":0,"error":"unterminated conflict"},"passed":false},{"actual":{"conflicts":2,"lines":["2","mid","4"]},"check":"two conflicts","expected":{"conflicts":2,"lines":["2","mid","4"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"take ours\", \"actual\": {\"lines\": [\"h\", \"o1\", \"z\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"h\", \"o1\", \"z\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"take theirs with base section\", \"actual\": {\"lines\": [\"h\", \"t1\", \"t2\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"h\", \"t1\", \"t2\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"union keeps both in order\", \"actual\": {\"lines\": [\"x\", \"y\", \"y\", \"z1\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"x\", \"y\", \"y\", \"z1\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"base strategy\", \"actual\": {\"lines\": [\"b1\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"b1\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"long marker-like content lines\", \"actual\": {\"lines\": [\"<<<<<<<<<< banner\", \"a\", \">>>>>>>>\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"<<<<<<<<<< banner\", \"a\", \">>>>>>>>\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"marker prefix glued to text\", \"actual\": {\"lines\": [\"<<<<<<<x\", \"b\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"<<<<<<<x\", \"b\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"setext underline inside ours\", \"actual\": {\"lines\": [\"Title\", \"========\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"Title\", \"========\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"indented separator-like line\", \"actual\": {\"lines\": [\"  =======\", \"k\", \"t\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"  =======\", \"k\", \"t\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"unterminated conflict is an error\", \"actual\": {\"lines\": [\"a\", \"o\"], \"conflicts\": 0}, \"expected\": {\"error\": \"unterminated conflict\", \"conflicts\": 0}, \"passed\": false}, {\"check\": \"two conflicts\", \"actual\": {\"lines\": [\"2\", \"mid\", \"4\"], \"conflicts\": 2}, \"expected\": {\"lines\": [\"2\", \"mid\", \"4\"], \"conflicts\": 2}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.328,"exit_code":1,"observations":[{"actual":{"conflicts":1,"lines":["h","o1","z"]},"check":"take ours","expected":{"conflicts":1,"lines":["h","o1","z"]},"passed":true},{"actual":{"conflicts":1,"lines":["h","t1","t2"]},"check":"take theirs with base section","expected":{"conflicts":1,"lines":["h","t1","t2"]},"passed":true},{"actual":{"conflicts":1,"lines":["x","y","y","z1"]},"check":"union keeps both in order","expected":{"conflicts":1,"lines":["x","y","y","z1"]},"passed":true},{"actual":{"conflicts":1,"lines":["b1"]},"check":"base strategy","expected":{"conflicts":1,"lines":["b1"]},"passed":true},{"actual":{"conflicts":1,"lines":["<<<<<<<<<< banner","a",">>>>>>>>"]},"check":"long marker-like content lines","expected":{"conflicts":1,"lines":["<<<<<<<<<< banner","a",">>>>>>>>"]},"passed":true},{"actual":{"conflicts":1,"lines":["<<<<<<<x","b"]},"check":"marker prefix glued to text","expected":{"conflicts":1,"lines":["<<<<<<<x","b"]},"passed":true},{"actual":{"conflicts":1,"lines":["Title","========"]},"check":"setext underline inside ours","expected":{"conflicts":1,"lines":["Title","========"]},"passed":true},{"actual":{"conflicts":1,"lines":["  =======","k","t"]},"check":"indented separator-like line","expected":{"conflicts":1,"lines":["  =======","k","t"]},"passed":true},{"actual":{"conflicts":0,"lines":["a"]},"check":"unterminated conflict is an error","expected":{"conflicts":0,"error":"unterminated conflict"},"passed":false},{"actual":{"conflicts":2,"lines":["2","mid","4"]},"check":"two conflicts","expected":{"conflicts":2,"lines":["2","mid","4"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"take ours\", \"actual\": {\"lines\": [\"h\", \"o1\", \"z\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"h\", \"o1\", \"z\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"take theirs with base section\", \"actual\": {\"lines\": [\"h\", \"t1\", \"t2\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"h\", \"t1\", \"t2\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"union keeps both in order\", \"actual\": {\"lines\": [\"x\", \"y\", \"y\", \"z1\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"x\", \"y\", \"y\", \"z1\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"base strategy\", \"actual\": {\"lines\": [\"b1\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"b1\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"long marker-like content lines\", \"actual\": {\"lines\": [\"<<<<<<<<<< banner\", \"a\", \">>>>>>>>\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"<<<<<<<<<< banner\", \"a\", \">>>>>>>>\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"marker prefix glued to text\", \"actual\": {\"lines\": [\"<<<<<<<x\", \"b\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"<<<<<<<x\", \"b\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"setext underline inside ours\", \"actual\": {\"lines\": [\"Title\", \"========\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"Title\", \"========\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"indented separator-like line\", \"actual\": {\"lines\": [\"  =======\", \"k\", \"t\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"  =======\", \"k\", \"t\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"unterminated conflict is an error\", \"actual\": {\"lines\": [\"a\"], \"conflicts\": 0}, \"expected\": {\"error\": \"unterminated conflict\", \"conflicts\": 0}, \"passed\": false}, {\"check\": \"two conflicts\", \"actual\": {\"lines\": [\"2\", \"mid\", \"4\"], \"conflicts\": 2}, \"expected\": {\"lines\": [\"2\", \"mid\", \"4\"], \"conflicts\": 2}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.858,"exit_code":0,"observations":[{"actual":{"conflicts":1,"lines":["h","o1","z"]},"check":"take ours","expected":{"conflicts":1,"lines":["h","o1","z"]},"passed":true},{"actual":{"conflicts":1,"lines":["h","t1","t2"]},"check":"take theirs with base section","expected":{"conflicts":1,"lines":["h","t1","t2"]},"passed":true},{"actual":{"conflicts":1,"lines":["x","y","y","z1"]},"check":"union keeps both in order","expected":{"conflicts":1,"lines":["x","y","y","z1"]},"passed":true},{"actual":{"conflicts":1,"lines":["b1"]},"check":"base strategy","expected":{"conflicts":1,"lines":["b1"]},"passed":true},{"actual":{"conflicts":1,"lines":["<<<<<<<<<< banner","a",">>>>>>>>"]},"check":"long marker-like content lines","expected":{"conflicts":1,"lines":["<<<<<<<<<< banner","a",">>>>>>>>"]},"passed":true},{"actual":{"conflicts":1,"lines":["<<<<<<<x","b"]},"check":"marker prefix glued to text","expected":{"conflicts":1,"lines":["<<<<<<<x","b"]},"passed":true},{"actual":{"conflicts":1,"lines":["Title","========"]},"check":"setext underline inside ours","expected":{"conflicts":1,"lines":["Title","========"]},"passed":true},{"actual":{"conflicts":1,"lines":["  =======","k","t"]},"check":"indented separator-like line","expected":{"conflicts":1,"lines":["  =======","k","t"]},"passed":true},{"actual":{"conflicts":0,"error":"unterminated conflict"},"check":"unterminated conflict is an error","expected":{"conflicts":0,"error":"unterminated conflict"},"passed":true},{"actual":{"conflicts":2,"lines":["2","mid","4"]},"check":"two conflicts","expected":{"conflicts":2,"lines":["2","mid","4"]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"take ours\", \"actual\": {\"lines\": [\"h\", \"o1\", \"z\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"h\", \"o1\", \"z\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"take theirs with base section\", \"actual\": {\"lines\": [\"h\", \"t1\", \"t2\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"h\", \"t1\", \"t2\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"union keeps both in order\", \"actual\": {\"lines\": [\"x\", \"y\", \"y\", \"z1\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"x\", \"y\", \"y\", \"z1\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"base strategy\", \"actual\": {\"lines\": [\"b1\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"b1\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"long marker-like content lines\", \"actual\": {\"lines\": [\"<<<<<<<<<< banner\", \"a\", \">>>>>>>>\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"<<<<<<<<<< banner\", \"a\", \">>>>>>>>\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"marker prefix glued to text\", \"actual\": {\"lines\": [\"<<<<<<<x\", \"b\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"<<<<<<<x\", \"b\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"setext underline inside ours\", \"actual\": {\"lines\": [\"Title\", \"========\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"Title\", \"========\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"indented separator-like line\", \"actual\": {\"lines\": [\"  =======\", \"k\", \"t\"], \"conflicts\": 1}, \"expected\": {\"lines\": [\"  =======\", \"k\", \"t\"], \"conflicts\": 1}, \"passed\": true}, {\"check\": \"unterminated conflict is an error\", \"actual\": {\"error\": \"unterminated conflict\", \"conflicts\": 0}, \"expected\": {\"error\": \"unterminated conflict\", \"conflicts\": 0}, \"passed\": true}, {\"check\": \"two conflicts\", \"actual\": {\"lines\": [\"2\", \"mid\", \"4\"], \"conflicts\": 2}, \"expected\": {\"lines\": [\"2\", \"mid\", \"4\"], \"conflicts\": 2}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}