{"abstract":"The table nonpositive body result violates the stipulated printed table page partition contract.","category":"Table interactions","checks":9,"contract":"Print pages reserve header/footer height, pack whole row/detail blocks in order, allow exact fits, place oversized rows alone with an overflow marker, never generate empty pages, number from one, and repeat headers only when requested.","evaluation_group":"s3-table-interactions-print-pages","failed_approach":"The attempted repair 'if capacity==0:' still loses a required part of the table contract.","family":"s3-table-interactions-print-pages-nonpositive-body","id":"FA-37746","implementations":{"attempt":{"sha256":"ed8b860b68efda076d40bec0a5f0dc14188fd3733d463703c3a9455b0bb03c96","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rows, header, footer, page_height, repeat, keep_detail):\n    capacity=page_height-header-footer\n    if capacity==0: return {'error':'no-body-space','pages':[]}\n    pages=[]; page=[]; used=0\n    for row in rows:\n        h=row['height']+(row.get('detail_height',0) if keep_detail else 0)\n        if page and used+h>capacity:\n            pages.append(page); page=[]; used=0\n        page.append({'id':row['id'],'height':h,'overflow':h>capacity})\n        used+=h\n    if page: pages.append(page)\n    return {'error':None,'pages':[{'number':i+1,'header':repeat or i==0,'footer':True,'rows':p,'used':sum(r['height'] for r in p),'body_limit':capacity} for i,p in enumerate(pages)]}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':1+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 2, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 4, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 2:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':2+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 3, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 5, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 3:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':3+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 4, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 4:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':4+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 5, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 5:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':5+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 6, 'overflow': False}], 'used': 6, 'body_limit': 7}, {'number': 3, 'header': False, 'footer': True, 'rows': [{'id': 'd', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\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":"337562129a03a07db238004f7e8316aa2a385ed0f393ad9afeb64a87a767623d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rows, header, footer, page_height, repeat, keep_detail):\n    capacity=page_height-header-footer\n    if capacity<0: return {'error':'no-body-space','pages':[]}\n    pages=[]; page=[]; used=0\n    for row in rows:\n        h=row['height']+(row.get('detail_height',0) if keep_detail else 0)\n        if page and used+h>capacity:\n            pages.append(page); page=[]; used=0\n        page.append({'id':row['id'],'height':h,'overflow':h>capacity})\n        used+=h\n    if page: pages.append(page)\n    return {'error':None,'pages':[{'number':i+1,'header':repeat or i==0,'footer':True,'rows':p,'used':sum(r['height'] for r in p),'body_limit':capacity} for i,p in enumerate(pages)]}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':1+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 2, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 4, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 2:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':2+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 3, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 5, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 3:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':3+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 4, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 4:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':4+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 5, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 5:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':5+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 6, 'overflow': False}], 'used': 6, 'body_limit': 7}, {'number': 3, 'header': False, 'footer': True, 'rows': [{'id': 'd', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\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":"ca703d66fc1a115725eb026e4211d98d776e806d5b96fd1eda3dc8f378f645dd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rows, header, footer, page_height, repeat, keep_detail):\n    capacity=page_height-header-footer\n    if capacity<=0: return {'error':'no-body-space','pages':[]}\n    pages=[]; page=[]; used=0\n    for row in rows:\n        h=row['height']+(row.get('detail_height',0) if keep_detail else 0)\n        if page and used+h>capacity:\n            pages.append(page); page=[]; used=0\n        page.append({'id':row['id'],'height':h,'overflow':h>capacity})\n        used+=h\n    if page: pages.append(page)\n    return {'error':None,'pages':[{'number':i+1,'header':repeat or i==0,'footer':True,'rows':p,'used':sum(r['height'] for r in p),'body_limit':capacity} for i,p in enumerate(pages)]}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':1+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 2, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 4, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 2:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':2+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 3, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 5, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 3:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':3+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 4, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 4:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':4+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 5, 'overflow': False}, {'id': 'd', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\nif N == 5:\n    check('exactly filled body', solve([{'id':'a','height':3},{'id':'b','height':4},{'id':'c','height':5+1},{'id':'d','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 4, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'c', 'height': 6, 'overflow': False}], 'used': 6, 'body_limit': 7}, {'number': 3, 'header': False, 'footer': True, 'rows': [{'id': 'd', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('oversized row', solve([{'id':'a','height':11},{'id':'b','height':2}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 11, 'overflow': True}], 'used': 11, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 2, 'overflow': False}], 'used': 2, 'body_limit': 7}]})\n    check('detail blocks', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, True), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}, {'number': 2, 'header': True, 'footer': True, 'rows': [{'id': 'b', 'height': 7, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('detail excluded', solve([{'id':'a','height':3,'detail_height':4},{'id':'b','height':3,'detail_height':4}], 2, 1, 10, True, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}, {'id': 'b', 'height': 3, 'overflow': False}], 'used': 6, 'body_limit': 7}]})\n    check('zero body', solve([{'id':'a','height':1}], 2, 1, 3, True, False), {'error': 'no-body-space', 'pages': []})\n    check('negative body', solve([], 2, 2, 3, False, False), {'error': 'no-body-space', 'pages': []})\n    check('nonexact overflow', solve([{'id':'a','height':4},{'id':'b','height':4},{'id':'c','height':3}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 4, 'overflow': False}], 'used': 4, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 4, 'overflow': False}, {'id': 'c', 'height': 3, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('reset capacity', solve([{'id':'a','height':3},{'id':'b','height':5},{'id':'c','height':2}], 2, 1, 10, False, False), {'error': None, 'pages': [{'number': 1, 'header': True, 'footer': True, 'rows': [{'id': 'a', 'height': 3, 'overflow': False}], 'used': 3, 'body_limit': 7}, {'number': 2, 'header': False, 'footer': True, 'rows': [{'id': 'b', 'height': 5, 'overflow': False}, {'id': 'c', 'height': 2, 'overflow': False}], 'used': 7, 'body_limit': 7}]})\n    check('empty print', solve([], 2, 1, 10, False, False), {'error': None, 'pages': []})\n\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":"Row blocks have positive finite heights and header/footer heights are nonnegative; actual print layout is outside scope. Deterministic offline table UI model; no browser, DOM, framework, or standards conformance is claimed. 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-table-interactions-print-pages-nonpositive-body","generated_at":"2026-09-29T14:43:04.282850+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline table UI model isolates printed table page partition, including adversarial row/column relationships.","repair":"Apply the complete nonpositive body rule: if capacity<=0:.","root_cause":"The nonpositive body decision uses 'if capacity<0:' instead of 'if capacity<=0:'.","sha256":"7a377af098a778a9b06cc763a77ab450e79fff2d8f718245035f4cd4c1740e03","title":"Printed table page partition: nonpositive body · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":47.345,"exit_code":1,"observations":[{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":4,"id":"b","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":2,"id":"c","overflow":false},{"height":2,"id":"d","overflow":false}],"used":4}]},"check":"exactly filled body","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":4,"id":"b","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":2,"id":"c","overflow":false},{"height":2,"id":"d","overflow":false}],"used":4}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":11,"id":"a","overflow":true}],"used":11},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":2,"id":"b","overflow":false}],"used":2}]},"check":"oversized row","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":11,"id":"a","overflow":true}],"used":11},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":2,"id":"b","overflow":false}],"used":2}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":7,"id":"a","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":7,"id":"b","overflow":false}],"used":7}]},"check":"detail blocks","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":7,"id":"a","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":7,"id":"b","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":3,"id":"b","overflow":false}],"used":6}]},"check":"detail excluded","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":3,"id":"b","overflow":false}],"used":6}]},"passed":true},{"actual":{"error":"no-body-space","pages":[]},"check":"zero body","expected":{"error":"no-body-space","pages":[]},"passed":true},{"actual":{"error":null,"pages":[]},"check":"negative body","expected":{"error":"no-body-space","pages":[]},"passed":false},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":4,"id":"a","overflow":false}],"used":4},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":4,"id":"b","overflow":false},{"height":3,"id":"c","overflow":false}],"used":7}]},"check":"nonexact overflow","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":4,"id":"a","overflow":false}],"used":4},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":4,"id":"b","overflow":false},{"height":3,"id":"c","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false}],"used":3},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":5,"id":"b","overflow":false},{"height":2,"id":"c","overflow":false}],"used":7}]},"check":"reset capacity","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false}],"used":3},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":5,"id":"b","overflow":false},{"height":2,"id":"c","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[]},"check":"empty print","expected":{"error":null,"pages":[]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exactly filled body\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 4, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"c\", \"height\": 2, \"overflow\": false}, {\"id\": \"d\", \"height\": 2, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 4, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"c\", \"height\": 2, \"overflow\": false}, {\"id\": \"d\", \"height\": 2, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"oversized row\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 11, \"overflow\": true}], \"used\": 11, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 2, \"overflow\": false}], \"used\": 2, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 11, \"overflow\": true}], \"used\": 11, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 2, \"overflow\": false}], \"used\": 2, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"detail blocks\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"detail excluded\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 3, \"overflow\": false}], \"used\": 6, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 3, \"overflow\": false}], \"used\": 6, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"zero body\", \"actual\": {\"error\": \"no-body-space\", \"pages\": []}, \"expected\": {\"error\": \"no-body-space\", \"pages\": []}, \"passed\": true}, {\"check\": \"negative body\", \"actual\": {\"error\": null, \"pages\": []}, \"expected\": {\"error\": \"no-body-space\", \"pages\": []}, \"passed\": false}, {\"check\": \"nonexact overflow\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 4, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 4, \"overflow\": false}, {\"id\": \"c\", \"height\": 3, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 4, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 4, \"overflow\": false}, {\"id\": \"c\", \"height\": 3, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"reset capacity\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}], \"used\": 3, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 5, \"overflow\": false}, {\"id\": \"c\", \"height\": 2, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}], \"used\": 3, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 5, \"overflow\": false}, {\"id\": \"c\", \"height\": 2, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"empty print\", \"actual\": {\"error\": null, \"pages\": []}, \"expected\": {\"error\": null, \"pages\": []}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":47.75,"exit_code":1,"observations":[{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":4,"id":"b","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":2,"id":"c","overflow":false},{"height":2,"id":"d","overflow":false}],"used":4}]},"check":"exactly filled body","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":4,"id":"b","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":2,"id":"c","overflow":false},{"height":2,"id":"d","overflow":false}],"used":4}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":11,"id":"a","overflow":true}],"used":11},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":2,"id":"b","overflow":false}],"used":2}]},"check":"oversized row","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":11,"id":"a","overflow":true}],"used":11},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":2,"id":"b","overflow":false}],"used":2}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":7,"id":"a","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":7,"id":"b","overflow":false}],"used":7}]},"check":"detail blocks","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":7,"id":"a","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":7,"id":"b","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":3,"id":"b","overflow":false}],"used":6}]},"check":"detail excluded","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":3,"id":"b","overflow":false}],"used":6}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":0,"footer":true,"header":true,"number":1,"rows":[{"height":1,"id":"a","overflow":true}],"used":1}]},"check":"zero body","expected":{"error":"no-body-space","pages":[]},"passed":false},{"actual":{"error":"no-body-space","pages":[]},"check":"negative body","expected":{"error":"no-body-space","pages":[]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":4,"id":"a","overflow":false}],"used":4},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":4,"id":"b","overflow":false},{"height":3,"id":"c","overflow":false}],"used":7}]},"check":"nonexact overflow","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":4,"id":"a","overflow":false}],"used":4},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":4,"id":"b","overflow":false},{"height":3,"id":"c","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false}],"used":3},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":5,"id":"b","overflow":false},{"height":2,"id":"c","overflow":false}],"used":7}]},"check":"reset capacity","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false}],"used":3},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":5,"id":"b","overflow":false},{"height":2,"id":"c","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[]},"check":"empty print","expected":{"error":null,"pages":[]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exactly filled body\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 4, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"c\", \"height\": 2, \"overflow\": false}, {\"id\": \"d\", \"height\": 2, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 4, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"c\", \"height\": 2, \"overflow\": false}, {\"id\": \"d\", \"height\": 2, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"oversized row\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 11, \"overflow\": true}], \"used\": 11, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 2, \"overflow\": false}], \"used\": 2, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 11, \"overflow\": true}], \"used\": 11, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 2, \"overflow\": false}], \"used\": 2, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"detail blocks\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"detail excluded\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 3, \"overflow\": false}], \"used\": 6, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 3, \"overflow\": false}], \"used\": 6, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"zero body\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 1, \"overflow\": true}], \"used\": 1, \"body_limit\": 0}]}, \"expected\": {\"error\": \"no-body-space\", \"pages\": []}, \"passed\": false}, {\"check\": \"negative body\", \"actual\": {\"error\": \"no-body-space\", \"pages\": []}, \"expected\": {\"error\": \"no-body-space\", \"pages\": []}, \"passed\": true}, {\"check\": \"nonexact overflow\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 4, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 4, \"overflow\": false}, {\"id\": \"c\", \"height\": 3, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 4, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 4, \"overflow\": false}, {\"id\": \"c\", \"height\": 3, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"reset capacity\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}], \"used\": 3, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 5, \"overflow\": false}, {\"id\": \"c\", \"height\": 2, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}], \"used\": 3, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 5, \"overflow\": false}, {\"id\": \"c\", \"height\": 2, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"empty print\", \"actual\": {\"error\": null, \"pages\": []}, \"expected\": {\"error\": null, \"pages\": []}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.738,"exit_code":0,"observations":[{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":4,"id":"b","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":2,"id":"c","overflow":false},{"height":2,"id":"d","overflow":false}],"used":4}]},"check":"exactly filled body","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":4,"id":"b","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":2,"id":"c","overflow":false},{"height":2,"id":"d","overflow":false}],"used":4}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":11,"id":"a","overflow":true}],"used":11},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":2,"id":"b","overflow":false}],"used":2}]},"check":"oversized row","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":11,"id":"a","overflow":true}],"used":11},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":2,"id":"b","overflow":false}],"used":2}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":7,"id":"a","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":7,"id":"b","overflow":false}],"used":7}]},"check":"detail blocks","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":7,"id":"a","overflow":false}],"used":7},{"body_limit":7,"footer":true,"header":true,"number":2,"rows":[{"height":7,"id":"b","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":3,"id":"b","overflow":false}],"used":6}]},"check":"detail excluded","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false},{"height":3,"id":"b","overflow":false}],"used":6}]},"passed":true},{"actual":{"error":"no-body-space","pages":[]},"check":"zero body","expected":{"error":"no-body-space","pages":[]},"passed":true},{"actual":{"error":"no-body-space","pages":[]},"check":"negative body","expected":{"error":"no-body-space","pages":[]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":4,"id":"a","overflow":false}],"used":4},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":4,"id":"b","overflow":false},{"height":3,"id":"c","overflow":false}],"used":7}]},"check":"nonexact overflow","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":4,"id":"a","overflow":false}],"used":4},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":4,"id":"b","overflow":false},{"height":3,"id":"c","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false}],"used":3},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":5,"id":"b","overflow":false},{"height":2,"id":"c","overflow":false}],"used":7}]},"check":"reset capacity","expected":{"error":null,"pages":[{"body_limit":7,"footer":true,"header":true,"number":1,"rows":[{"height":3,"id":"a","overflow":false}],"used":3},{"body_limit":7,"footer":true,"header":false,"number":2,"rows":[{"height":5,"id":"b","overflow":false},{"height":2,"id":"c","overflow":false}],"used":7}]},"passed":true},{"actual":{"error":null,"pages":[]},"check":"empty print","expected":{"error":null,"pages":[]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"exactly filled body\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 4, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"c\", \"height\": 2, \"overflow\": false}, {\"id\": \"d\", \"height\": 2, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 4, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"c\", \"height\": 2, \"overflow\": false}, {\"id\": \"d\", \"height\": 2, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"oversized row\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 11, \"overflow\": true}], \"used\": 11, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 2, \"overflow\": false}], \"used\": 2, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 11, \"overflow\": true}], \"used\": 11, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 2, \"overflow\": false}], \"used\": 2, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"detail blocks\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}, {\"number\": 2, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 7, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"detail excluded\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 3, \"overflow\": false}], \"used\": 6, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}, {\"id\": \"b\", \"height\": 3, \"overflow\": false}], \"used\": 6, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"zero body\", \"actual\": {\"error\": \"no-body-space\", \"pages\": []}, \"expected\": {\"error\": \"no-body-space\", \"pages\": []}, \"passed\": true}, {\"check\": \"negative body\", \"actual\": {\"error\": \"no-body-space\", \"pages\": []}, \"expected\": {\"error\": \"no-body-space\", \"pages\": []}, \"passed\": true}, {\"check\": \"nonexact overflow\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 4, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 4, \"overflow\": false}, {\"id\": \"c\", \"height\": 3, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 4, \"overflow\": false}], \"used\": 4, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 4, \"overflow\": false}, {\"id\": \"c\", \"height\": 3, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"reset capacity\", \"actual\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}], \"used\": 3, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 5, \"overflow\": false}, {\"id\": \"c\", \"height\": 2, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"expected\": {\"error\": null, \"pages\": [{\"number\": 1, \"header\": true, \"footer\": true, \"rows\": [{\"id\": \"a\", \"height\": 3, \"overflow\": false}], \"used\": 3, \"body_limit\": 7}, {\"number\": 2, \"header\": false, \"footer\": true, \"rows\": [{\"id\": \"b\", \"height\": 5, \"overflow\": false}, {\"id\": \"c\", \"height\": 2, \"overflow\": false}], \"used\": 7, \"body_limit\": 7}]}, \"passed\": true}, {\"check\": \"empty print\", \"actual\": {\"error\": null, \"pages\": []}, \"expected\": {\"error\": null, \"pages\": []}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}