{"abstract":"Fetch decrements quota per batch rather than per emitted row.","category":"Data systems","checks":8,"contract":"Fetch at most quota rows from a sequence of batches starting at [batch-index,row-offset]. Skip exhausted and empty batches, return the emitted rows and a canonical next cursor, and mark exhaustion as [number-of-batches,0]. Quota zero preserves a normalized cursor.","evaluation_group":"s3-data-systems-batch-resume-cursor","failed_approach":"Counting only first rows of batches still exceeds row quota within a batch.","family":"s3-data-systems-batch-resume-cursor-quota-row","id":"FA-45041","implementations":{"attempt":{"sha256":"d09848668027ce1395b8b96cfc5120d7b33c91d23b136a3da5ce1a7fd0d2fbdf","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        batches,batch,offset,quota=d\n        out=[]\n        while batch<len(batches) and offset>=len(batches[batch]):\n            batch+=1; offset=0\n        while quota>0 and batch<len(batches):\n            out.append(batches[batch][offset])\n            offset+=1; quota-=int(offset==1)\n            while batch<len(batches) and offset>=len(batches[batch]):\n                batch+=1; offset=0\n        return [out,[batch,offset]]\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('partial current batch', solve([[[1, 2, 3]], 0, 1, 1]), [[2], [0, 2]])\n    check('cross empty batches', solve([[[1], [], [], [2, 3]], 0, 0, 2]), [[1, 2], [3, 1]])\n    check('initial exhausted', solve([[[], [], [1, 2]], 0, 0, 1]), [[1], [2, 1]])\n    check('resume past long batch', solve([[[1, 2], [3, 4]], 0, 0, 3]), [[1, 2, 3], [1, 1]])\n    check('all exhausted', solve([[[1]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[1, 2]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[1, 2, 3, 4]], 0, 0, 2]), [[1, 2], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 2:\n    check('partial current batch', solve([[[2, 3, 4]], 0, 1, 1]), [[3], [0, 2]])\n    check('cross empty batches', solve([[[2], [], [], [3, 4]], 0, 0, 2]), [[2, 3], [3, 1]])\n    check('initial exhausted', solve([[[], [], [2, 3]], 0, 0, 1]), [[2], [2, 1]])\n    check('resume past long batch', solve([[[2, 3], [4, 5]], 0, 0, 3]), [[2, 3, 4], [1, 1]])\n    check('all exhausted', solve([[[2]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[2, 3]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[2, 3, 4, 5]], 0, 0, 2]), [[2, 3], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 3:\n    check('partial current batch', solve([[[3, 4, 5]], 0, 1, 1]), [[4], [0, 2]])\n    check('cross empty batches', solve([[[3], [], [], [4, 5]], 0, 0, 2]), [[3, 4], [3, 1]])\n    check('initial exhausted', solve([[[], [], [3, 4]], 0, 0, 1]), [[3], [2, 1]])\n    check('resume past long batch', solve([[[3, 4], [5, 6]], 0, 0, 3]), [[3, 4, 5], [1, 1]])\n    check('all exhausted', solve([[[3]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[3, 4]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[3, 4, 5, 6]], 0, 0, 2]), [[3, 4], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 4:\n    check('partial current batch', solve([[[4, 5, 6]], 0, 1, 1]), [[5], [0, 2]])\n    check('cross empty batches', solve([[[4], [], [], [5, 6]], 0, 0, 2]), [[4, 5], [3, 1]])\n    check('initial exhausted', solve([[[], [], [4, 5]], 0, 0, 1]), [[4], [2, 1]])\n    check('resume past long batch', solve([[[4, 5], [6, 7]], 0, 0, 3]), [[4, 5, 6], [1, 1]])\n    check('all exhausted', solve([[[4]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[4, 5]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[4, 5, 6, 7]], 0, 0, 2]), [[4, 5], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 5:\n    check('partial current batch', solve([[[5, 6, 7]], 0, 1, 1]), [[6], [0, 2]])\n    check('cross empty batches', solve([[[5], [], [], [6, 7]], 0, 0, 2]), [[5, 6], [3, 1]])\n    check('initial exhausted', solve([[[], [], [5, 6]], 0, 0, 1]), [[5], [2, 1]])\n    check('resume past long batch', solve([[[5, 6], [7, 8]], 0, 0, 3]), [[5, 6, 7], [1, 1]])\n    check('all exhausted', solve([[[5]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[5, 6]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[5, 6, 7, 8]], 0, 0, 2]), [[5, 6], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\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":"6b64c20d0a78b093ae3c08b232e4ac94d21c54fb97e33fdd1f03627cc83ae072","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        batches,batch,offset,quota=d\n        out=[]\n        while batch<len(batches) and offset>=len(batches[batch]):\n            batch+=1; offset=0\n        while quota>0 and batch<len(batches):\n            out.append(batches[batch][offset])\n            offset+=1; quota-=int(offset==len(batches[batch]))\n            while batch<len(batches) and offset>=len(batches[batch]):\n                batch+=1; offset=0\n        return [out,[batch,offset]]\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('partial current batch', solve([[[1, 2, 3]], 0, 1, 1]), [[2], [0, 2]])\n    check('cross empty batches', solve([[[1], [], [], [2, 3]], 0, 0, 2]), [[1, 2], [3, 1]])\n    check('initial exhausted', solve([[[], [], [1, 2]], 0, 0, 1]), [[1], [2, 1]])\n    check('resume past long batch', solve([[[1, 2], [3, 4]], 0, 0, 3]), [[1, 2, 3], [1, 1]])\n    check('all exhausted', solve([[[1]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[1, 2]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[1, 2, 3, 4]], 0, 0, 2]), [[1, 2], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 2:\n    check('partial current batch', solve([[[2, 3, 4]], 0, 1, 1]), [[3], [0, 2]])\n    check('cross empty batches', solve([[[2], [], [], [3, 4]], 0, 0, 2]), [[2, 3], [3, 1]])\n    check('initial exhausted', solve([[[], [], [2, 3]], 0, 0, 1]), [[2], [2, 1]])\n    check('resume past long batch', solve([[[2, 3], [4, 5]], 0, 0, 3]), [[2, 3, 4], [1, 1]])\n    check('all exhausted', solve([[[2]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[2, 3]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[2, 3, 4, 5]], 0, 0, 2]), [[2, 3], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 3:\n    check('partial current batch', solve([[[3, 4, 5]], 0, 1, 1]), [[4], [0, 2]])\n    check('cross empty batches', solve([[[3], [], [], [4, 5]], 0, 0, 2]), [[3, 4], [3, 1]])\n    check('initial exhausted', solve([[[], [], [3, 4]], 0, 0, 1]), [[3], [2, 1]])\n    check('resume past long batch', solve([[[3, 4], [5, 6]], 0, 0, 3]), [[3, 4, 5], [1, 1]])\n    check('all exhausted', solve([[[3]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[3, 4]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[3, 4, 5, 6]], 0, 0, 2]), [[3, 4], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 4:\n    check('partial current batch', solve([[[4, 5, 6]], 0, 1, 1]), [[5], [0, 2]])\n    check('cross empty batches', solve([[[4], [], [], [5, 6]], 0, 0, 2]), [[4, 5], [3, 1]])\n    check('initial exhausted', solve([[[], [], [4, 5]], 0, 0, 1]), [[4], [2, 1]])\n    check('resume past long batch', solve([[[4, 5], [6, 7]], 0, 0, 3]), [[4, 5, 6], [1, 1]])\n    check('all exhausted', solve([[[4]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[4, 5]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[4, 5, 6, 7]], 0, 0, 2]), [[4, 5], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 5:\n    check('partial current batch', solve([[[5, 6, 7]], 0, 1, 1]), [[6], [0, 2]])\n    check('cross empty batches', solve([[[5], [], [], [6, 7]], 0, 0, 2]), [[5, 6], [3, 1]])\n    check('initial exhausted', solve([[[], [], [5, 6]], 0, 0, 1]), [[5], [2, 1]])\n    check('resume past long batch', solve([[[5, 6], [7, 8]], 0, 0, 3]), [[5, 6, 7], [1, 1]])\n    check('all exhausted', solve([[[5]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[5, 6]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[5, 6, 7, 8]], 0, 0, 2]), [[5, 6], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\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":"34cfb8de043f357459ed127f3f4dc3f1e677c7651a54044fb299fa4adf6b3c23","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        batches,batch,offset,quota=d\n        out=[]\n        while batch<len(batches) and offset>=len(batches[batch]):\n            batch+=1; offset=0\n        while quota>0 and batch<len(batches):\n            out.append(batches[batch][offset])\n            offset+=1; quota-=1\n            while batch<len(batches) and offset>=len(batches[batch]):\n                batch+=1; offset=0\n        return [out,[batch,offset]]\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('partial current batch', solve([[[1, 2, 3]], 0, 1, 1]), [[2], [0, 2]])\n    check('cross empty batches', solve([[[1], [], [], [2, 3]], 0, 0, 2]), [[1, 2], [3, 1]])\n    check('initial exhausted', solve([[[], [], [1, 2]], 0, 0, 1]), [[1], [2, 1]])\n    check('resume past long batch', solve([[[1, 2], [3, 4]], 0, 0, 3]), [[1, 2, 3], [1, 1]])\n    check('all exhausted', solve([[[1]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[1, 2]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[1, 2, 3, 4]], 0, 0, 2]), [[1, 2], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 2:\n    check('partial current batch', solve([[[2, 3, 4]], 0, 1, 1]), [[3], [0, 2]])\n    check('cross empty batches', solve([[[2], [], [], [3, 4]], 0, 0, 2]), [[2, 3], [3, 1]])\n    check('initial exhausted', solve([[[], [], [2, 3]], 0, 0, 1]), [[2], [2, 1]])\n    check('resume past long batch', solve([[[2, 3], [4, 5]], 0, 0, 3]), [[2, 3, 4], [1, 1]])\n    check('all exhausted', solve([[[2]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[2, 3]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[2, 3, 4, 5]], 0, 0, 2]), [[2, 3], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 3:\n    check('partial current batch', solve([[[3, 4, 5]], 0, 1, 1]), [[4], [0, 2]])\n    check('cross empty batches', solve([[[3], [], [], [4, 5]], 0, 0, 2]), [[3, 4], [3, 1]])\n    check('initial exhausted', solve([[[], [], [3, 4]], 0, 0, 1]), [[3], [2, 1]])\n    check('resume past long batch', solve([[[3, 4], [5, 6]], 0, 0, 3]), [[3, 4, 5], [1, 1]])\n    check('all exhausted', solve([[[3]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[3, 4]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[3, 4, 5, 6]], 0, 0, 2]), [[3, 4], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 4:\n    check('partial current batch', solve([[[4, 5, 6]], 0, 1, 1]), [[5], [0, 2]])\n    check('cross empty batches', solve([[[4], [], [], [5, 6]], 0, 0, 2]), [[4, 5], [3, 1]])\n    check('initial exhausted', solve([[[], [], [4, 5]], 0, 0, 1]), [[4], [2, 1]])\n    check('resume past long batch', solve([[[4, 5], [6, 7]], 0, 0, 3]), [[4, 5, 6], [1, 1]])\n    check('all exhausted', solve([[[4]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[4, 5]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[4, 5, 6, 7]], 0, 0, 2]), [[4, 5], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\nelif N == 5:\n    check('partial current batch', solve([[[5, 6, 7]], 0, 1, 1]), [[6], [0, 2]])\n    check('cross empty batches', solve([[[5], [], [], [6, 7]], 0, 0, 2]), [[5, 6], [3, 1]])\n    check('initial exhausted', solve([[[], [], [5, 6]], 0, 0, 1]), [[5], [2, 1]])\n    check('resume past long batch', solve([[[5, 6], [7, 8]], 0, 0, 3]), [[5, 6, 7], [1, 1]])\n    check('all exhausted', solve([[[5]], 0, 1, 3]), [[], [1, 0]])\n    check('zero quota', solve([[[5, 6]], 0, 1, 0]), [[], [0, 1]])\n    check('within long batch', solve([[[5, 6, 7, 8]], 0, 0, 2]), [[5, 6], [0, 2]])\n    check('empty stream', solve([[], 0, 0, 2]), [[], [0, 0]])\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":"Offline stipulated semantics over valid small inputs; no performance, concurrency, or production-engine conformance claim. 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":"s3-data-systems-batch-resume-cursor-quota-row","generated_at":"2026-09-29T14:44:18.162583+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A bounded deterministic data engine model makes representation and changelog faults reproducible.","repair":"Preserve the stated physical representation and operation order: Fetch at most quota rows from a sequence of batches starting at [batch-index,row-offset]. Skip exhausted and empty batches, return the emitted rows and a canonical next cursor, and mark exhaustion as [number-of-batches,0]. Quota zero preserves a normalized cursor.","root_cause":"batch-resume-cursor: Fetch decrements quota per batch rather than per emitted row.","sha256":"3a91f1b3fe0550a83346e79e7e159a74a4f1f26724120a345da84a53fab54d22","title":"Fetch decrements quota per batch rather than per emitted row · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":49.855,"exit_code":1,"observations":[{"actual":[[2,3],[1,0]],"check":"partial current batch","expected":[[2],[0,2]],"passed":false},{"actual":[[1,2],[3,1]],"check":"cross empty batches","expected":[[1,2],[3,1]],"passed":true},{"actual":[[1],[2,1]],"check":"initial exhausted","expected":[[1],[2,1]],"passed":true},{"actual":[[1,2,3,4],[2,0]],"check":"resume past long batch","expected":[[1,2,3],[1,1]],"passed":false},{"actual":[[],[1,0]],"check":"all exhausted","expected":[[],[1,0]],"passed":true},{"actual":[[],[0,1]],"check":"zero quota","expected":[[],[0,1]],"passed":true},{"actual":[[1,2,3,4],[1,0]],"check":"within long batch","expected":[[1,2],[0,2]],"passed":false},{"actual":[[],[0,0]],"check":"empty stream","expected":[[],[0,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"partial current batch\", \"actual\": [[2, 3], [1, 0]], \"expected\": [[2], [0, 2]], \"passed\": false}, {\"check\": \"cross empty batches\", \"actual\": [[1, 2], [3, 1]], \"expected\": [[1, 2], [3, 1]], \"passed\": true}, {\"check\": \"initial exhausted\", \"actual\": [[1], [2, 1]], \"expected\": [[1], [2, 1]], \"passed\": true}, {\"check\": \"resume past long batch\", \"actual\": [[1, 2, 3, 4], [2, 0]], \"expected\": [[1, 2, 3], [1, 1]], \"passed\": false}, {\"check\": \"all exhausted\", \"actual\": [[], [1, 0]], \"expected\": [[], [1, 0]], \"passed\": true}, {\"check\": \"zero quota\", \"actual\": [[], [0, 1]], \"expected\": [[], [0, 1]], \"passed\": true}, {\"check\": \"within long batch\", \"actual\": [[1, 2, 3, 4], [1, 0]], \"expected\": [[1, 2], [0, 2]], \"passed\": false}, {\"check\": \"empty stream\", \"actual\": [[], [0, 0]], \"expected\": [[], [0, 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.0,"exit_code":1,"observations":[{"actual":[[2,3],[1,0]],"check":"partial current batch","expected":[[2],[0,2]],"passed":false},{"actual":[[1,2,3],[4,0]],"check":"cross empty batches","expected":[[1,2],[3,1]],"passed":false},{"actual":[[1,2],[3,0]],"check":"initial exhausted","expected":[[1],[2,1]],"passed":false},{"actual":[[1,2,3,4],[2,0]],"check":"resume past long batch","expected":[[1,2,3],[1,1]],"passed":false},{"actual":[[],[1,0]],"check":"all exhausted","expected":[[],[1,0]],"passed":true},{"actual":[[],[0,1]],"check":"zero quota","expected":[[],[0,1]],"passed":true},{"actual":[[1,2,3,4],[1,0]],"check":"within long batch","expected":[[1,2],[0,2]],"passed":false},{"actual":[[],[0,0]],"check":"empty stream","expected":[[],[0,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"partial current batch\", \"actual\": [[2, 3], [1, 0]], \"expected\": [[2], [0, 2]], \"passed\": false}, {\"check\": \"cross empty batches\", \"actual\": [[1, 2, 3], [4, 0]], \"expected\": [[1, 2], [3, 1]], \"passed\": false}, {\"check\": \"initial exhausted\", \"actual\": [[1, 2], [3, 0]], \"expected\": [[1], [2, 1]], \"passed\": false}, {\"check\": \"resume past long batch\", \"actual\": [[1, 2, 3, 4], [2, 0]], \"expected\": [[1, 2, 3], [1, 1]], \"passed\": false}, {\"check\": \"all exhausted\", \"actual\": [[], [1, 0]], \"expected\": [[], [1, 0]], \"passed\": true}, {\"check\": \"zero quota\", \"actual\": [[], [0, 1]], \"expected\": [[], [0, 1]], \"passed\": true}, {\"check\": \"within long batch\", \"actual\": [[1, 2, 3, 4], [1, 0]], \"expected\": [[1, 2], [0, 2]], \"passed\": false}, {\"check\": \"empty stream\", \"actual\": [[], [0, 0]], \"expected\": [[], [0, 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.098,"exit_code":0,"observations":[{"actual":[[2],[0,2]],"check":"partial current batch","expected":[[2],[0,2]],"passed":true},{"actual":[[1,2],[3,1]],"check":"cross empty batches","expected":[[1,2],[3,1]],"passed":true},{"actual":[[1],[2,1]],"check":"initial exhausted","expected":[[1],[2,1]],"passed":true},{"actual":[[1,2,3],[1,1]],"check":"resume past long batch","expected":[[1,2,3],[1,1]],"passed":true},{"actual":[[],[1,0]],"check":"all exhausted","expected":[[],[1,0]],"passed":true},{"actual":[[],[0,1]],"check":"zero quota","expected":[[],[0,1]],"passed":true},{"actual":[[1,2],[0,2]],"check":"within long batch","expected":[[1,2],[0,2]],"passed":true},{"actual":[[],[0,0]],"check":"empty stream","expected":[[],[0,0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"partial current batch\", \"actual\": [[2], [0, 2]], \"expected\": [[2], [0, 2]], \"passed\": true}, {\"check\": \"cross empty batches\", \"actual\": [[1, 2], [3, 1]], \"expected\": [[1, 2], [3, 1]], \"passed\": true}, {\"check\": \"initial exhausted\", \"actual\": [[1], [2, 1]], \"expected\": [[1], [2, 1]], \"passed\": true}, {\"check\": \"resume past long batch\", \"actual\": [[1, 2, 3], [1, 1]], \"expected\": [[1, 2, 3], [1, 1]], \"passed\": true}, {\"check\": \"all exhausted\", \"actual\": [[], [1, 0]], \"expected\": [[], [1, 0]], \"passed\": true}, {\"check\": \"zero quota\", \"actual\": [[], [0, 1]], \"expected\": [[], [0, 1]], \"passed\": true}, {\"check\": \"within long batch\", \"actual\": [[1, 2], [0, 2]], \"expected\": [[1, 2], [0, 2]], \"passed\": true}, {\"check\": \"empty stream\", \"actual\": [[], [0, 0]], \"expected\": [[], [0, 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}