{"abstract":"Authors who reply repeatedly in alternation appear several times among the faces.","category":"Chat ordering and read receipts","checks":7,"contract":"messages {seq, root, author, deleted}; replies of a thread have root equal to the root seq (the root itself has root None). Deleted replies are ignored. Result {count, faces: first three distinct reply authors in order of their first reply, more: number of further distinct authors, last: seq of the newest reply or None}.","evaluation_group":"w2-chat_ordering_and_read_receipts-thread-summary","failed_approach":"Deduplicating only against the three most recent faces repeats authors once there are more than three. The attempted `if m['author'] not in seen[-3:]:` still disagrees with a fixture.","family":"w2-chat_ordering_and_read_receipts-thread-summary-distinct-authors","id":"FA-76256","implementations":{"attempt":{"sha256":"735ab934296c64e17e52da81357e24e800c197cf06e42403297e329b246a9fc6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(messages, root):\n    replies = sorted((m for m in messages if m['root'] == root and not m['deleted']), key=lambda m: m['seq'])\n    seen = []\n    for m in replies:\n        if m['author'] not in seen[-3:]:\n            seen.append(m['author'])\n    return {'count': len(replies), 'faces': seen[:3], 'more': max(0, len(seen) - 3),\n            'last': replies[-1]['seq'] if replies else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 10, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 10, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u4', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u0', 'u1'], 'last': 19, 'more': 2}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 2: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 11, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 11, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u1', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u0'], 'last': 19, 'more': 3}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 3: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 12, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 12, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 6, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u5', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 4}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 4: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 13, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 13, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 7, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u3', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 5}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 5: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 14, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 14, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 8, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u8', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u8', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u1', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 6}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})]}\nfor _label, _args, _expected in _CASES[N]:\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":"74534df3f1e66d13db04b590f9a0070b619d6148a6c1d29e31e75214ac295cba","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(messages, root):\n    replies = sorted((m for m in messages if m['root'] == root and not m['deleted']), key=lambda m: m['seq'])\n    seen = []\n    for m in replies:\n        if not seen or m['author'] != seen[-1]:\n            seen.append(m['author'])\n    return {'count': len(replies), 'faces': seen[:3], 'more': max(0, len(seen) - 3),\n            'last': replies[-1]['seq'] if replies else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 10, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 10, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u4', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u0', 'u1'], 'last': 19, 'more': 2}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 2: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 11, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 11, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u1', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u0'], 'last': 19, 'more': 3}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 3: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 12, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 12, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 6, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u5', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 4}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 4: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 13, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 13, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 7, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u3', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 5}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 5: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 14, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 14, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 8, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u8', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u8', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u1', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 6}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})]}\nfor _label, _args, _expected in _CASES[N]:\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":"b6437a033508c36e2997a362797317c08102c5731fbd93ec1f39ea907d1cbc44","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(messages, root):\n    replies = sorted((m for m in messages if m['root'] == root and not m['deleted']), key=lambda m: m['seq'])\n    seen = []\n    for m in replies:\n        if m['author'] not in seen:\n            seen.append(m['author'])\n    return {'count': len(replies), 'faces': seen[:3], 'more': max(0, len(seen) - 3),\n            'last': replies[-1]['seq'] if replies else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 10, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 10, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u4', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u0', 'u1'], 'last': 19, 'more': 2}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 2: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 11, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 11, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u1', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u0'], 'last': 19, 'more': 3}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 3: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 12, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 12, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 6, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u5', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 4}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 4: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 13, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 13, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 7, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u3', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 5}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})], 5: [('root is not a reply', ([{'seq': 5, 'root': None, 'author': 'al', 'deleted': False}, {'seq': 6, 'root': 5, 'author': 'bo', 'deleted': False}, {'seq': 7, 'root': None, 'author': 'cy', 'deleted': False}], 5), {'count': 1, 'faces': ['bo'], 'last': 6, 'more': 0}), ('reply order by seq', ([{'seq': 14, 'root': 1, 'author': 'zed', 'deleted': False}, {'seq': 3, 'root': 1, 'author': 'amy', 'deleted': False}, {'seq': 4, 'root': 1, 'author': 'kim', 'deleted': False}], 1), {'count': 3, 'faces': ['amy', 'kim', 'zed'], 'last': 14, 'more': 0}), ('few authors', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('newest reply deleted', ([{'seq': 2, 'root': 1, 'author': 'a', 'deleted': False}, {'seq': 8, 'root': 1, 'author': 'b', 'deleted': True}], 1), {'count': 1, 'faces': ['a'], 'last': 2, 'more': 0}), ('alternating authors', ([{'seq': 1, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 2, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 3, 'root': 0, 'author': 'b', 'deleted': False}, {'seq': 4, 'root': 0, 'author': 'a', 'deleted': False}, {'seq': 5, 'root': 0, 'author': 'b', 'deleted': False}], 0), {'count': 5, 'faces': ['b', 'a'], 'last': 5, 'more': 0}), ('many authors', ([{'seq': 4, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 5, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 6, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 7, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 8, 'root': 3, 'author': 'u8', 'deleted': False}, {'seq': 9, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 10, 'root': 3, 'author': 'u1', 'deleted': False}, {'seq': 11, 'root': 3, 'author': 'u2', 'deleted': False}, {'seq': 12, 'root': 3, 'author': 'u3', 'deleted': False}, {'seq': 13, 'root': 3, 'author': 'u4', 'deleted': False}, {'seq': 14, 'root': 3, 'author': 'u5', 'deleted': False}, {'seq': 15, 'root': 3, 'author': 'u6', 'deleted': False}, {'seq': 16, 'root': 3, 'author': 'u7', 'deleted': False}, {'seq': 17, 'root': 3, 'author': 'u8', 'deleted': False}, {'seq': 18, 'root': 3, 'author': 'u0', 'deleted': False}, {'seq': 19, 'root': 3, 'author': 'u1', 'deleted': False}], 3), {'count': 16, 'faces': ['u4', 'u5', 'u6'], 'last': 19, 'more': 6}), ('no replies', ([{'seq': 1, 'root': None, 'author': 'a', 'deleted': False}], 1), {'count': 0, 'faces': [], 'last': None, 'more': 0})]}\nfor _label, _args, _expected in _CASES[N]:\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":"Stipulated offline chat model; not a complete messaging protocol, client or server implementation. 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-chat_ordering_and_read_receipts-thread-summary-distinct-authors","generated_at":"2026-09-29T14:49:14.669873+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Thread summaries sit under the root message and drive navigation into the thread.","repair":"Use `if m['author'] not in seen:` for the distinct authors decision and keep every other rule of the model unchanged.","root_cause":"The distinct authors decision evaluates `if not seen or m['author'] != seen[-1]:` where the contract requires `if m['author'] not in seen:`.","sha256":"ac0e137384c3c681dc98da0837aa27473be1b857fd2e30426273fc1e0a007b04","title":"Summarize a thread root's replies: distinct authors · case 01","variant":1,"variant_policy":"N selects a different enumerated fixture set (shifted clocks, identifiers and sizes); boundary fixtures recur across variants.","verification":{"attempt":{"elapsed_ms":41.952,"exit_code":1,"observations":[{"actual":{"count":1,"faces":["bo"],"last":6,"more":0},"check":"root is not a reply","expected":{"count":1,"faces":["bo"],"last":6,"more":0},"passed":true},{"actual":{"count":3,"faces":["amy","kim","zed"],"last":10,"more":0},"check":"reply order by seq","expected":{"count":3,"faces":["amy","kim","zed"],"last":10,"more":0},"passed":true},{"actual":{"count":1,"faces":["a"],"last":2,"more":0},"check":"few authors","expected":{"count":1,"faces":["a"],"last":2,"more":0},"passed":true},{"actual":{"count":1,"faces":["a"],"last":2,"more":0},"check":"newest reply deleted","expected":{"count":1,"faces":["a"],"last":2,"more":0},"passed":true},{"actual":{"count":5,"faces":["b","a"],"last":5,"more":0},"check":"alternating authors","expected":{"count":5,"faces":["b","a"],"last":5,"more":0},"passed":true},{"actual":{"count":16,"faces":["u4","u0","u1"],"last":19,"more":13},"check":"many authors","expected":{"count":16,"faces":["u4","u0","u1"],"last":19,"more":2},"passed":false},{"actual":{"count":0,"faces":[],"last":null,"more":0},"check":"no replies","expected":{"count":0,"faces":[],"last":null,"more":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"root is not a reply\", \"actual\": {\"count\": 1, \"faces\": [\"bo\"], \"more\": 0, \"last\": 6}, \"expected\": {\"count\": 1, \"faces\": [\"bo\"], \"last\": 6, \"more\": 0}, \"passed\": true}, {\"check\": \"reply order by seq\", \"actual\": {\"count\": 3, \"faces\": [\"amy\", \"kim\", \"zed\"], \"more\": 0, \"last\": 10}, \"expected\": {\"count\": 3, \"faces\": [\"amy\", \"kim\", \"zed\"], \"last\": 10, \"more\": 0}, \"passed\": true}, {\"check\": \"few authors\", \"actual\": {\"count\": 1, \"faces\": [\"a\"], \"more\": 0, \"last\": 2}, \"expected\": {\"count\": 1, \"faces\": [\"a\"], \"last\": 2, \"more\": 0}, \"passed\": true}, {\"check\": \"newest reply deleted\", \"actual\": {\"count\": 1, \"faces\": [\"a\"], \"more\": 0, \"last\": 2}, \"expected\": {\"count\": 1, \"faces\": [\"a\"], \"last\": 2, \"more\": 0}, \"passed\": true}, {\"check\": \"alternating authors\", \"actual\": {\"count\": 5, \"faces\": [\"b\", \"a\"], \"more\": 0, \"last\": 5}, \"expected\": {\"count\": 5, \"faces\": [\"b\", \"a\"], \"last\": 5, \"more\": 0}, \"passed\": true}, {\"check\": \"many authors\", \"actual\": {\"count\": 16, \"faces\": [\"u4\", \"u0\", \"u1\"], \"more\": 13, \"last\": 19}, \"expected\": {\"count\": 16, \"faces\": [\"u4\", \"u0\", \"u1\"], \"last\": 19, \"more\": 2}, \"passed\": false}, {\"check\": \"no replies\", \"actual\": {\"count\": 0, \"faces\": [], \"more\": 0, \"last\": null}, \"expected\": {\"count\": 0, \"faces\": [], \"last\": null, \"more\": 0}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.791,"exit_code":1,"observations":[{"actual":{"count":1,"faces":["bo"],"last":6,"more":0},"check":"root is not a reply","expected":{"count":1,"faces":["bo"],"last":6,"more":0},"passed":true},{"actual":{"count":3,"faces":["amy","kim","zed"],"last":10,"more":0},"check":"reply order by seq","expected":{"count":3,"faces":["amy","kim","zed"],"last":10,"more":0},"passed":true},{"actual":{"count":1,"faces":["a"],"last":2,"more":0},"check":"few authors","expected":{"count":1,"faces":["a"],"last":2,"more":0},"passed":true},{"actual":{"count":1,"faces":["a"],"last":2,"more":0},"check":"newest reply deleted","expected":{"count":1,"faces":["a"],"last":2,"more":0},"passed":true},{"actual":{"count":5,"faces":["b","a","b"],"last":5,"more":2},"check":"alternating authors","expected":{"count":5,"faces":["b","a"],"last":5,"more":0},"passed":false},{"actual":{"count":16,"faces":["u4","u0","u1"],"last":19,"more":13},"check":"many authors","expected":{"count":16,"faces":["u4","u0","u1"],"last":19,"more":2},"passed":false},{"actual":{"count":0,"faces":[],"last":null,"more":0},"check":"no replies","expected":{"count":0,"faces":[],"last":null,"more":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"root is not a reply\", \"actual\": {\"count\": 1, \"faces\": [\"bo\"], \"more\": 0, \"last\": 6}, \"expected\": {\"count\": 1, \"faces\": [\"bo\"], \"last\": 6, \"more\": 0}, \"passed\": true}, {\"check\": \"reply order by seq\", \"actual\": {\"count\": 3, \"faces\": [\"amy\", \"kim\", \"zed\"], \"more\": 0, \"last\": 10}, \"expected\": {\"count\": 3, \"faces\": [\"amy\", \"kim\", \"zed\"], \"last\": 10, \"more\": 0}, \"passed\": true}, {\"check\": \"few authors\", \"actual\": {\"count\": 1, \"faces\": [\"a\"], \"more\": 0, \"last\": 2}, \"expected\": {\"count\": 1, \"faces\": [\"a\"], \"last\": 2, \"more\": 0}, \"passed\": true}, {\"check\": \"newest reply deleted\", \"actual\": {\"count\": 1, \"faces\": [\"a\"], \"more\": 0, \"last\": 2}, \"expected\": {\"count\": 1, \"faces\": [\"a\"], \"last\": 2, \"more\": 0}, \"passed\": true}, {\"check\": \"alternating authors\", \"actual\": {\"count\": 5, \"faces\": [\"b\", \"a\", \"b\"], \"more\": 2, \"last\": 5}, \"expected\": {\"count\": 5, \"faces\": [\"b\", \"a\"], \"last\": 5, \"more\": 0}, \"passed\": false}, {\"check\": \"many authors\", \"actual\": {\"count\": 16, \"faces\": [\"u4\", \"u0\", \"u1\"], \"more\": 13, \"last\": 19}, \"expected\": {\"count\": 16, \"faces\": [\"u4\", \"u0\", \"u1\"], \"last\": 19, \"more\": 2}, \"passed\": false}, {\"check\": \"no replies\", \"actual\": {\"count\": 0, \"faces\": [], \"more\": 0, \"last\": null}, \"expected\": {\"count\": 0, \"faces\": [], \"last\": null, \"more\": 0}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.88,"exit_code":0,"observations":[{"actual":{"count":1,"faces":["bo"],"last":6,"more":0},"check":"root is not a reply","expected":{"count":1,"faces":["bo"],"last":6,"more":0},"passed":true},{"actual":{"count":3,"faces":["amy","kim","zed"],"last":10,"more":0},"check":"reply order by seq","expected":{"count":3,"faces":["amy","kim","zed"],"last":10,"more":0},"passed":true},{"actual":{"count":1,"faces":["a"],"last":2,"more":0},"check":"few authors","expected":{"count":1,"faces":["a"],"last":2,"more":0},"passed":true},{"actual":{"count":1,"faces":["a"],"last":2,"more":0},"check":"newest reply deleted","expected":{"count":1,"faces":["a"],"last":2,"more":0},"passed":true},{"actual":{"count":5,"faces":["b","a"],"last":5,"more":0},"check":"alternating authors","expected":{"count":5,"faces":["b","a"],"last":5,"more":0},"passed":true},{"actual":{"count":16,"faces":["u4","u0","u1"],"last":19,"more":2},"check":"many authors","expected":{"count":16,"faces":["u4","u0","u1"],"last":19,"more":2},"passed":true},{"actual":{"count":0,"faces":[],"last":null,"more":0},"check":"no replies","expected":{"count":0,"faces":[],"last":null,"more":0},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"root is not a reply\", \"actual\": {\"count\": 1, \"faces\": [\"bo\"], \"more\": 0, \"last\": 6}, \"expected\": {\"count\": 1, \"faces\": [\"bo\"], \"last\": 6, \"more\": 0}, \"passed\": true}, {\"check\": \"reply order by seq\", \"actual\": {\"count\": 3, \"faces\": [\"amy\", \"kim\", \"zed\"], \"more\": 0, \"last\": 10}, \"expected\": {\"count\": 3, \"faces\": [\"amy\", \"kim\", \"zed\"], \"last\": 10, \"more\": 0}, \"passed\": true}, {\"check\": \"few authors\", \"actual\": {\"count\": 1, \"faces\": [\"a\"], \"more\": 0, \"last\": 2}, \"expected\": {\"count\": 1, \"faces\": [\"a\"], \"last\": 2, \"more\": 0}, \"passed\": true}, {\"check\": \"newest reply deleted\", \"actual\": {\"count\": 1, \"faces\": [\"a\"], \"more\": 0, \"last\": 2}, \"expected\": {\"count\": 1, \"faces\": [\"a\"], \"last\": 2, \"more\": 0}, \"passed\": true}, {\"check\": \"alternating authors\", \"actual\": {\"count\": 5, \"faces\": [\"b\", \"a\"], \"more\": 0, \"last\": 5}, \"expected\": {\"count\": 5, \"faces\": [\"b\", \"a\"], \"last\": 5, \"more\": 0}, \"passed\": true}, {\"check\": \"many authors\", \"actual\": {\"count\": 16, \"faces\": [\"u4\", \"u0\", \"u1\"], \"more\": 2, \"last\": 19}, \"expected\": {\"count\": 16, \"faces\": [\"u4\", \"u0\", \"u1\"], \"last\": 19, \"more\": 2}, \"passed\": true}, {\"check\": \"no replies\", \"actual\": {\"count\": 0, \"faces\": [], \"more\": 0, \"last\": null}, \"expected\": {\"count\": 0, \"faces\": [], \"last\": null, \"more\": 0}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}