{"abstract":"Per-phase direction registers are collapsed before settlement.","category":"Power metering accounting","checks":6,"contract":"For signed simultaneous phase energies, positive means import. Return [sum of positive phases, absolute sum of negative phases]. The modeled meter records import and export separately without cross-phase netting.","evaluation_group":"model-08730a78ffdfb092","failed_approach":"Absolute energy fixes missing magnitude but relabels exports as imports.","family":"z-power_metering-phase-direction","id":"FA-12246","implementations":{"attempt":{"sha256":"3cb346b9b6569047565c721eaf080d3352682c28c9824422c3fd4b86e132a5e7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phases):\n    return [sum(abs(v) for v in phases),0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('simultaneous directions', solve([3*N,-2*N,0]), [3*N,2*N])\ncheck('balanced phases', solve([N,-N]), [N,N])\ncheck('all import', solve([N,2*N]), [3*N,0])\ncheck('all export', solve([-N,-2*N]), [0,3*N])\ncheck('idle', solve([0,0,0]), [0,0])\ncheck('single export', solve([-N]), [0,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":"2387a5efce57c1a8b188fca2336dcfa86cd3f197eb0a5d131cb99eb301d95353","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phases):\n    v=sum(phases)\n    return [max(v,0),max(-v,0)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('simultaneous directions', solve([3*N,-2*N,0]), [3*N,2*N])\ncheck('balanced phases', solve([N,-N]), [N,N])\ncheck('all import', solve([N,2*N]), [3*N,0])\ncheck('all export', solve([-N,-2*N]), [0,3*N])\ncheck('idle', solve([0,0,0]), [0,0])\ncheck('single export', solve([-N]), [0,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":"02d6dcf7b035b7a2cab2e11a65c8ca9d7afb7b5e22ef36083158f25bfec95654","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(phases):\n    return [sum(max(v,0) for v in phases),sum(max(-v,0) for v in phases)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('simultaneous directions', solve([3*N,-2*N,0]), [3*N,2*N])\ncheck('balanced phases', solve([N,-N]), [N,N])\ncheck('all import', solve([N,2*N]), [3*N,0])\ncheck('all export', solve([-N,-2*N]), [0,3*N])\ncheck('idle', solve([0,0,0]), [0,0])\ncheck('single export', solve([-N]), [0,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":"Simplified integer-energy accounting model; no hardware protocol, legal tariff, measurement uncertainty, or live grid behavior is represented. 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-power_metering-phase-direction","generated_at":"2026-09-29T14:38:55.138535+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Meter settlement depends on explicit register and tariff policies; this controlled model makes that policy observable.","repair":"Classify each phase before summing its direction register.","root_cause":"Summing phases before direction classification cancels separately billable registers.","sha256":"1b5eb54fb15f6a5bef73dbde54637d37b9f5c527d84eca01471f75e58e9468a0","title":"Per-phase direction registers are collapsed before settlement · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.729,"exit_code":1,"observations":[{"actual":[5,0],"check":"simultaneous directions","expected":[3,2],"passed":false},{"actual":[2,0],"check":"balanced phases","expected":[1,1],"passed":false},{"actual":[3,0],"check":"all import","expected":[3,0],"passed":true},{"actual":[3,0],"check":"all export","expected":[0,3],"passed":false},{"actual":[0,0],"check":"idle","expected":[0,0],"passed":true},{"actual":[1,0],"check":"single export","expected":[0,1],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"simultaneous directions\", \"actual\": [5, 0], \"expected\": [3, 2], \"passed\": false}, {\"check\": \"balanced phases\", \"actual\": [2, 0], \"expected\": [1, 1], \"passed\": false}, {\"check\": \"all import\", \"actual\": [3, 0], \"expected\": [3, 0], \"passed\": true}, {\"check\": \"all export\", \"actual\": [3, 0], \"expected\": [0, 3], \"passed\": false}, {\"check\": \"idle\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"single export\", \"actual\": [1, 0], \"expected\": [0, 1], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.472,"exit_code":1,"observations":[{"actual":[1,0],"check":"simultaneous directions","expected":[3,2],"passed":false},{"actual":[0,0],"check":"balanced phases","expected":[1,1],"passed":false},{"actual":[3,0],"check":"all import","expected":[3,0],"passed":true},{"actual":[0,3],"check":"all export","expected":[0,3],"passed":true},{"actual":[0,0],"check":"idle","expected":[0,0],"passed":true},{"actual":[0,1],"check":"single export","expected":[0,1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"simultaneous directions\", \"actual\": [1, 0], \"expected\": [3, 2], \"passed\": false}, {\"check\": \"balanced phases\", \"actual\": [0, 0], \"expected\": [1, 1], \"passed\": false}, {\"check\": \"all import\", \"actual\": [3, 0], \"expected\": [3, 0], \"passed\": true}, {\"check\": \"all export\", \"actual\": [0, 3], \"expected\": [0, 3], \"passed\": true}, {\"check\": \"idle\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"single export\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.808,"exit_code":0,"observations":[{"actual":[3,2],"check":"simultaneous directions","expected":[3,2],"passed":true},{"actual":[1,1],"check":"balanced phases","expected":[1,1],"passed":true},{"actual":[3,0],"check":"all import","expected":[3,0],"passed":true},{"actual":[0,3],"check":"all export","expected":[0,3],"passed":true},{"actual":[0,0],"check":"idle","expected":[0,0],"passed":true},{"actual":[0,1],"check":"single export","expected":[0,1],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"simultaneous directions\", \"actual\": [3, 2], \"expected\": [3, 2], \"passed\": true}, {\"check\": \"balanced phases\", \"actual\": [1, 1], \"expected\": [1, 1], \"passed\": true}, {\"check\": \"all import\", \"actual\": [3, 0], \"expected\": [3, 0], \"passed\": true}, {\"check\": \"all export\", \"actual\": [0, 3], \"expected\": [0, 3], \"passed\": true}, {\"check\": \"idle\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"single export\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}