{"abstract":"Backfill ranges include the first message that was already received.","category":"Chat ordering and read receipts","checks":7,"contract":"have lists received seqs (unsorted, duplicates possible); horizon is the oldest seq the server still retains; head is the newest known seq. Every seq in [horizon, head] not received is missing; missing seqs are merged into inclusive [start, end] ranges, returned newest first and limited to max_ranges. complete is true only when nothing is missing.","evaluation_group":"w2-chat_ordering_and_read_receipts-gap-backfill","failed_approach":"Special-casing longer gaps still overfetches single missing messages. The attempted `ranges.append([start, s - 1 if s > start + 1 else s])` still disagrees with a fixture.","family":"w2-chat_ordering_and_read_receipts-gap-backfill-range-close","id":"FA-76041","implementations":{"attempt":{"sha256":"6eaeb75e465615799ceb7d9a71d2c765e14da04f0dbd9493f90b346b729db45b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(have, horizon, head, max_ranges):\n    got = set(have)\n    lo = horizon\n    hi = head\n    ranges = []\n    start = None\n    for s in range(lo, hi + 1):\n        if s not in got:\n            if start is None:\n                start = s\n        elif start is not None:\n            ranges.append([start, s - 1 if s > start + 1 else s])\n            start = None\n    if start is not None:\n        ranges.append([start, hi])\n    ranges.reverse()\n    return {'fetch': ranges[:max_ranges], 'complete': not ranges}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('gap before first received', ([6, 7, 10], 3, 10, 5), {'complete': False, 'fetch': [[8, 9], [3, 5]]}), ('head not yet received', ([1, 2, 3], 1, 5, 3), {'complete': False, 'fetch': [[4, 5]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 11], 1, 11, 2), {'complete': False, 'fetch': [[8, 10], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 4, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 9, 5), {'complete': False, 'fetch': [[9, 9], [3, 7]]})], 2: [('gap before first received', ([7, 8, 11], 4, 11, 5), {'complete': False, 'fetch': [[9, 10], [4, 6]]}), ('head not yet received', ([1, 2, 3], 1, 6, 3), {'complete': False, 'fetch': [[4, 6]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 12], 1, 12, 2), {'complete': False, 'fetch': [[8, 11], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 5, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 10, 5), {'complete': False, 'fetch': [[9, 10], [3, 7]]})], 3: [('gap before first received', ([8, 9, 12], 5, 12, 5), {'complete': False, 'fetch': [[10, 11], [5, 7]]}), ('head not yet received', ([1, 2, 3], 1, 7, 3), {'complete': False, 'fetch': [[4, 7]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 13], 1, 13, 2), {'complete': False, 'fetch': [[8, 12], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 6, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 11, 5), {'complete': False, 'fetch': [[9, 11], [3, 7]]})], 4: [('gap before first received', ([9, 10, 13], 6, 13, 5), {'complete': False, 'fetch': [[11, 12], [6, 8]]}), ('head not yet received', ([1, 2, 3], 1, 8, 3), {'complete': False, 'fetch': [[4, 8]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 14], 1, 14, 2), {'complete': False, 'fetch': [[8, 13], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 7, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 12, 5), {'complete': False, 'fetch': [[9, 12], [3, 7]]})], 5: [('gap before first received', ([10, 11, 14], 7, 14, 5), {'complete': False, 'fetch': [[12, 13], [7, 9]]}), ('head not yet received', ([1, 2, 3], 1, 9, 3), {'complete': False, 'fetch': [[4, 9]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 15], 1, 15, 2), {'complete': False, 'fetch': [[8, 14], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 8, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 13, 5), {'complete': False, 'fetch': [[9, 13], [3, 7]]})]}\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":"9e67f72441a2b5d255f6af53030cf89dbf619608d967ac5a57f6e224094eca3a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(have, horizon, head, max_ranges):\n    got = set(have)\n    lo = horizon\n    hi = head\n    ranges = []\n    start = None\n    for s in range(lo, hi + 1):\n        if s not in got:\n            if start is None:\n                start = s\n        elif start is not None:\n            ranges.append([start, s])\n            start = None\n    if start is not None:\n        ranges.append([start, hi])\n    ranges.reverse()\n    return {'fetch': ranges[:max_ranges], 'complete': not ranges}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('gap before first received', ([6, 7, 10], 3, 10, 5), {'complete': False, 'fetch': [[8, 9], [3, 5]]}), ('head not yet received', ([1, 2, 3], 1, 5, 3), {'complete': False, 'fetch': [[4, 5]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 11], 1, 11, 2), {'complete': False, 'fetch': [[8, 10], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 4, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 9, 5), {'complete': False, 'fetch': [[9, 9], [3, 7]]})], 2: [('gap before first received', ([7, 8, 11], 4, 11, 5), {'complete': False, 'fetch': [[9, 10], [4, 6]]}), ('head not yet received', ([1, 2, 3], 1, 6, 3), {'complete': False, 'fetch': [[4, 6]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 12], 1, 12, 2), {'complete': False, 'fetch': [[8, 11], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 5, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 10, 5), {'complete': False, 'fetch': [[9, 10], [3, 7]]})], 3: [('gap before first received', ([8, 9, 12], 5, 12, 5), {'complete': False, 'fetch': [[10, 11], [5, 7]]}), ('head not yet received', ([1, 2, 3], 1, 7, 3), {'complete': False, 'fetch': [[4, 7]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 13], 1, 13, 2), {'complete': False, 'fetch': [[8, 12], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 6, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 11, 5), {'complete': False, 'fetch': [[9, 11], [3, 7]]})], 4: [('gap before first received', ([9, 10, 13], 6, 13, 5), {'complete': False, 'fetch': [[11, 12], [6, 8]]}), ('head not yet received', ([1, 2, 3], 1, 8, 3), {'complete': False, 'fetch': [[4, 8]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 14], 1, 14, 2), {'complete': False, 'fetch': [[8, 13], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 7, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 12, 5), {'complete': False, 'fetch': [[9, 12], [3, 7]]})], 5: [('gap before first received', ([10, 11, 14], 7, 14, 5), {'complete': False, 'fetch': [[12, 13], [7, 9]]}), ('head not yet received', ([1, 2, 3], 1, 9, 3), {'complete': False, 'fetch': [[4, 9]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 15], 1, 15, 2), {'complete': False, 'fetch': [[8, 14], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 8, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 13, 5), {'complete': False, 'fetch': [[9, 13], [3, 7]]})]}\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":"a624374b2c66ba3fc7efc0b86c51a62e48841f499ba502b93d7b0fd06f55a8dd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(have, horizon, head, max_ranges):\n    got = set(have)\n    lo = horizon\n    hi = head\n    ranges = []\n    start = None\n    for s in range(lo, hi + 1):\n        if s not in got:\n            if start is None:\n                start = s\n        elif start is not None:\n            ranges.append([start, s - 1])\n            start = None\n    if start is not None:\n        ranges.append([start, hi])\n    ranges.reverse()\n    return {'fetch': ranges[:max_ranges], 'complete': not ranges}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('gap before first received', ([6, 7, 10], 3, 10, 5), {'complete': False, 'fetch': [[8, 9], [3, 5]]}), ('head not yet received', ([1, 2, 3], 1, 5, 3), {'complete': False, 'fetch': [[4, 5]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 11], 1, 11, 2), {'complete': False, 'fetch': [[8, 10], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 4, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 9, 5), {'complete': False, 'fetch': [[9, 9], [3, 7]]})], 2: [('gap before first received', ([7, 8, 11], 4, 11, 5), {'complete': False, 'fetch': [[9, 10], [4, 6]]}), ('head not yet received', ([1, 2, 3], 1, 6, 3), {'complete': False, 'fetch': [[4, 6]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 12], 1, 12, 2), {'complete': False, 'fetch': [[8, 11], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 5, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 10, 5), {'complete': False, 'fetch': [[9, 10], [3, 7]]})], 3: [('gap before first received', ([8, 9, 12], 5, 12, 5), {'complete': False, 'fetch': [[10, 11], [5, 7]]}), ('head not yet received', ([1, 2, 3], 1, 7, 3), {'complete': False, 'fetch': [[4, 7]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 13], 1, 13, 2), {'complete': False, 'fetch': [[8, 12], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 6, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 11, 5), {'complete': False, 'fetch': [[9, 11], [3, 7]]})], 4: [('gap before first received', ([9, 10, 13], 6, 13, 5), {'complete': False, 'fetch': [[11, 12], [6, 8]]}), ('head not yet received', ([1, 2, 3], 1, 8, 3), {'complete': False, 'fetch': [[4, 8]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 14], 1, 14, 2), {'complete': False, 'fetch': [[8, 13], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 7, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 12, 5), {'complete': False, 'fetch': [[9, 12], [3, 7]]})], 5: [('gap before first received', ([10, 11, 14], 7, 14, 5), {'complete': False, 'fetch': [[12, 13], [7, 9]]}), ('head not yet received', ([1, 2, 3], 1, 9, 3), {'complete': False, 'fetch': [[4, 9]]}), ('single missing seqs', ([1, 3, 5, 7], 1, 7, 10), {'complete': False, 'fetch': [[6, 6], [4, 4], [2, 2]]}), ('several gaps limited', ([1, 4, 7, 15], 1, 15, 2), {'complete': False, 'fetch': [[8, 14], [5, 6]]}), ('nothing missing', ([3, 4, 5, 5], 3, 5, 0), {'complete': True, 'fetch': []}), ('limit zero with gaps', ([1, 3], 1, 8, 0), {'complete': False, 'fetch': []}), ('uneven gaps newest first', ([1, 2, 8], 1, 13, 5), {'complete': False, 'fetch': [[9, 13], [3, 7]]})]}\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-gap-backfill-range-close","generated_at":"2026-09-29T14:49:12.643703+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Chat clients repair gaps after reconnecting; wrong ranges refetch too much or leave holes in the timeline.","repair":"Use `ranges.append([start, s - 1])` for the range close decision and keep every other rule of the model unchanged.","root_cause":"The range close decision evaluates `ranges.append([start, s])` where the contract requires `ranges.append([start, s - 1])`.","sha256":"7983e0e46cba1d5c5a6f2b98a90e85689218d0f7c29beaecbed9618b80d5ad68","title":"Plan history backfill requests for missing sequences: range close · 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":42.928,"exit_code":1,"observations":[{"actual":{"complete":false,"fetch":[[8,9],[3,5]]},"check":"gap before first received","expected":{"complete":false,"fetch":[[8,9],[3,5]]},"passed":true},{"actual":{"complete":false,"fetch":[[4,5]]},"check":"head not yet received","expected":{"complete":false,"fetch":[[4,5]]},"passed":true},{"actual":{"complete":false,"fetch":[[6,7],[4,5],[2,3]]},"check":"single missing seqs","expected":{"complete":false,"fetch":[[6,6],[4,4],[2,2]]},"passed":false},{"actual":{"complete":false,"fetch":[[8,10],[5,6]]},"check":"several gaps limited","expected":{"complete":false,"fetch":[[8,10],[5,6]]},"passed":true},{"actual":{"complete":true,"fetch":[]},"check":"nothing missing","expected":{"complete":true,"fetch":[]},"passed":true},{"actual":{"complete":false,"fetch":[]},"check":"limit zero with gaps","expected":{"complete":false,"fetch":[]},"passed":true},{"actual":{"complete":false,"fetch":[[9,9],[3,7]]},"check":"uneven gaps newest first","expected":{"complete":false,"fetch":[[9,9],[3,7]]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"gap before first received\", \"actual\": {\"fetch\": [[8, 9], [3, 5]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[8, 9], [3, 5]]}, \"passed\": true}, {\"check\": \"head not yet received\", \"actual\": {\"fetch\": [[4, 5]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[4, 5]]}, \"passed\": true}, {\"check\": \"single missing seqs\", \"actual\": {\"fetch\": [[6, 7], [4, 5], [2, 3]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[6, 6], [4, 4], [2, 2]]}, \"passed\": false}, {\"check\": \"several gaps limited\", \"actual\": {\"fetch\": [[8, 10], [5, 6]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[8, 10], [5, 6]]}, \"passed\": true}, {\"check\": \"nothing missing\", \"actual\": {\"fetch\": [], \"complete\": true}, \"expected\": {\"complete\": true, \"fetch\": []}, \"passed\": true}, {\"check\": \"limit zero with gaps\", \"actual\": {\"fetch\": [], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": []}, \"passed\": true}, {\"check\": \"uneven gaps newest first\", \"actual\": {\"fetch\": [[9, 9], [3, 7]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[9, 9], [3, 7]]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.708,"exit_code":1,"observations":[{"actual":{"complete":false,"fetch":[[8,10],[3,6]]},"check":"gap before first received","expected":{"complete":false,"fetch":[[8,9],[3,5]]},"passed":false},{"actual":{"complete":false,"fetch":[[4,5]]},"check":"head not yet received","expected":{"complete":false,"fetch":[[4,5]]},"passed":true},{"actual":{"complete":false,"fetch":[[6,7],[4,5],[2,3]]},"check":"single missing seqs","expected":{"complete":false,"fetch":[[6,6],[4,4],[2,2]]},"passed":false},{"actual":{"complete":false,"fetch":[[8,11],[5,7]]},"check":"several gaps limited","expected":{"complete":false,"fetch":[[8,10],[5,6]]},"passed":false},{"actual":{"complete":true,"fetch":[]},"check":"nothing missing","expected":{"complete":true,"fetch":[]},"passed":true},{"actual":{"complete":false,"fetch":[]},"check":"limit zero with gaps","expected":{"complete":false,"fetch":[]},"passed":true},{"actual":{"complete":false,"fetch":[[9,9],[3,8]]},"check":"uneven gaps newest first","expected":{"complete":false,"fetch":[[9,9],[3,7]]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"gap before first received\", \"actual\": {\"fetch\": [[8, 10], [3, 6]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[8, 9], [3, 5]]}, \"passed\": false}, {\"check\": \"head not yet received\", \"actual\": {\"fetch\": [[4, 5]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[4, 5]]}, \"passed\": true}, {\"check\": \"single missing seqs\", \"actual\": {\"fetch\": [[6, 7], [4, 5], [2, 3]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[6, 6], [4, 4], [2, 2]]}, \"passed\": false}, {\"check\": \"several gaps limited\", \"actual\": {\"fetch\": [[8, 11], [5, 7]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[8, 10], [5, 6]]}, \"passed\": false}, {\"check\": \"nothing missing\", \"actual\": {\"fetch\": [], \"complete\": true}, \"expected\": {\"complete\": true, \"fetch\": []}, \"passed\": true}, {\"check\": \"limit zero with gaps\", \"actual\": {\"fetch\": [], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": []}, \"passed\": true}, {\"check\": \"uneven gaps newest first\", \"actual\": {\"fetch\": [[9, 9], [3, 8]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[9, 9], [3, 7]]}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.69,"exit_code":0,"observations":[{"actual":{"complete":false,"fetch":[[8,9],[3,5]]},"check":"gap before first received","expected":{"complete":false,"fetch":[[8,9],[3,5]]},"passed":true},{"actual":{"complete":false,"fetch":[[4,5]]},"check":"head not yet received","expected":{"complete":false,"fetch":[[4,5]]},"passed":true},{"actual":{"complete":false,"fetch":[[6,6],[4,4],[2,2]]},"check":"single missing seqs","expected":{"complete":false,"fetch":[[6,6],[4,4],[2,2]]},"passed":true},{"actual":{"complete":false,"fetch":[[8,10],[5,6]]},"check":"several gaps limited","expected":{"complete":false,"fetch":[[8,10],[5,6]]},"passed":true},{"actual":{"complete":true,"fetch":[]},"check":"nothing missing","expected":{"complete":true,"fetch":[]},"passed":true},{"actual":{"complete":false,"fetch":[]},"check":"limit zero with gaps","expected":{"complete":false,"fetch":[]},"passed":true},{"actual":{"complete":false,"fetch":[[9,9],[3,7]]},"check":"uneven gaps newest first","expected":{"complete":false,"fetch":[[9,9],[3,7]]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"gap before first received\", \"actual\": {\"fetch\": [[8, 9], [3, 5]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[8, 9], [3, 5]]}, \"passed\": true}, {\"check\": \"head not yet received\", \"actual\": {\"fetch\": [[4, 5]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[4, 5]]}, \"passed\": true}, {\"check\": \"single missing seqs\", \"actual\": {\"fetch\": [[6, 6], [4, 4], [2, 2]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[6, 6], [4, 4], [2, 2]]}, \"passed\": true}, {\"check\": \"several gaps limited\", \"actual\": {\"fetch\": [[8, 10], [5, 6]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[8, 10], [5, 6]]}, \"passed\": true}, {\"check\": \"nothing missing\", \"actual\": {\"fetch\": [], \"complete\": true}, \"expected\": {\"complete\": true, \"fetch\": []}, \"passed\": true}, {\"check\": \"limit zero with gaps\", \"actual\": {\"fetch\": [], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": []}, \"passed\": true}, {\"check\": \"uneven gaps newest first\", \"actual\": {\"fetch\": [[9, 9], [3, 7]], \"complete\": false}, \"expected\": {\"complete\": false, \"fetch\": [[9, 9], [3, 7]]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}