{"abstract":"Series discharge is allowed to draw the sum of individual cell inventories.","category":"Battery state accounting","checks":6,"contract":"For a nonempty list of nonnegative cell charge inventories and nonnegative request, return delivered charge and remaining cells; series cells each supply the delivered amount.","contract_signature":"cells, request","evaluation_group":"model-9a05f8cb77718f5b","failed_approach":"Using the average still overdraws the smallest cell.","family":"z-battery_models-series-bottleneck","id":"FA-12301","implementations":{"attempt":{"sha256":"908e1a07649466efe7e32b179694b08d31b27a279243adf28249ffe6bdee245c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cells, request):\n    d = min(request, sum(cells)//len(cells))\n    return [d, [c-d for c in cells]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('unequal', solve([2*N,8*N], 5*N), [2*N,[0,6*N]])\ncheck('empty cell', solve([0,8*N], N), [0,[0,8*N]])\ncheck('equal', solve([4*N,4*N], 3*N), [3*N,[N,N]])\ncheck('single', solve([4*N], 8*N), [4*N,[0]])\ncheck('no request', solve([2*N,8*N], 0), [0,[2*N,8*N]])\ncheck('three cells', solve([9*N,3*N,7*N], 8*N), [3*N,[6*N,0,4*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":"d9fe7dd5baff55b5c0cd725af0c05a5951b625ab7f1ce89d9958dda60289f106","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cells, request):\n    d = min(request, sum(cells))\n    return [d, [c-d for c in cells]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('unequal', solve([2*N,8*N], 5*N), [2*N,[0,6*N]])\ncheck('empty cell', solve([0,8*N], N), [0,[0,8*N]])\ncheck('equal', solve([4*N,4*N], 3*N), [3*N,[N,N]])\ncheck('single', solve([4*N], 8*N), [4*N,[0]])\ncheck('no request', solve([2*N,8*N], 0), [0,[2*N,8*N]])\ncheck('three cells', solve([9*N,3*N,7*N], 8*N), [3*N,[6*N,0,4*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":"Integer toy accounting with declared loss rules; no electrochemistry, hardware behavior, or safety claims. 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":"z-battery_models-series-bottleneck","generated_at":"2026-09-29T14:38:55.595315+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An explicit synthetic battery bookkeeping model isolates this state-accounting error; it is not an engineering prediction or safety procedure.","root_cause":"Series discharge is allowed to draw the sum of individual cell inventories.","sha256":"341036a84dc2a091b49a5600c9159a9f86e04c8dcb68628c93167c85243efd6a","title":"Series availability sums incompatible cell inventories · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.166,"exit_code":1,"observations":[{"actual":[5,[-3,3]],"check":"unequal","expected":[2,[0,6]],"passed":false},{"actual":[1,[-1,7]],"check":"empty cell","expected":[0,[0,8]],"passed":false},{"actual":[3,[1,1]],"check":"equal","expected":[3,[1,1]],"passed":true},{"actual":[4,[0]],"check":"single","expected":[4,[0]],"passed":true},{"actual":[0,[2,8]],"check":"no request","expected":[0,[2,8]],"passed":true},{"actual":[6,[3,-3,1]],"check":"three cells","expected":[3,[6,0,4]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unequal\", \"actual\": [5, [-3, 3]], \"expected\": [2, [0, 6]], \"passed\": false}, {\"check\": \"empty cell\", \"actual\": [1, [-1, 7]], \"expected\": [0, [0, 8]], \"passed\": false}, {\"check\": \"equal\", \"actual\": [3, [1, 1]], \"expected\": [3, [1, 1]], \"passed\": true}, {\"check\": \"single\", \"actual\": [4, [0]], \"expected\": [4, [0]], \"passed\": true}, {\"check\": \"no request\", \"actual\": [0, [2, 8]], \"expected\": [0, [2, 8]], \"passed\": true}, {\"check\": \"three cells\", \"actual\": [6, [3, -3, 1]], \"expected\": [3, [6, 0, 4]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.557,"exit_code":1,"observations":[{"actual":[5,[-3,3]],"check":"unequal","expected":[2,[0,6]],"passed":false},{"actual":[1,[-1,7]],"check":"empty cell","expected":[0,[0,8]],"passed":false},{"actual":[3,[1,1]],"check":"equal","expected":[3,[1,1]],"passed":true},{"actual":[4,[0]],"check":"single","expected":[4,[0]],"passed":true},{"actual":[0,[2,8]],"check":"no request","expected":[0,[2,8]],"passed":true},{"actual":[8,[1,-5,-1]],"check":"three cells","expected":[3,[6,0,4]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unequal\", \"actual\": [5, [-3, 3]], \"expected\": [2, [0, 6]], \"passed\": false}, {\"check\": \"empty cell\", \"actual\": [1, [-1, 7]], \"expected\": [0, [0, 8]], \"passed\": false}, {\"check\": \"equal\", \"actual\": [3, [1, 1]], \"expected\": [3, [1, 1]], \"passed\": true}, {\"check\": \"single\", \"actual\": [4, [0]], \"expected\": [4, [0]], \"passed\": true}, {\"check\": \"no request\", \"actual\": [0, [2, 8]], \"expected\": [0, [2, 8]], \"passed\": true}, {\"check\": \"three cells\", \"actual\": [8, [1, -5, -1]], \"expected\": [3, [6, 0, 4]], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}