FAILURE MAP
← Case archive

FA-12246 / Power metering accounting / Open access

Per-phase direction registers are collapsed before settlement · case 01

Per-phase direction registers are collapsed before settlement.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Summing phases before direction classification cancels separately billable registers.

VERIFIED REPAIR

Classify each phase before summing its direction register.

Unsuccessful approach: Absolute energy fixes missing magnitude but relabels exports as imports.

Case 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.

Why this case matters

Meter settlement depends on explicit register and tariff policies; this controlled model makes that policy observable.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(phases):
    v=sum(phases)
    return [max(v,0),max(-v,0)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('simultaneous directions', solve([3*N,-2*N,0]), [3*N,2*N])
check('balanced phases', solve([N,-N]), [N,N])
check('all import', solve([N,2*N]), [3*N,0])
check('all export', solve([-N,-2*N]), [0,3*N])
check('idle', solve([0,0,0]), [0,0])
check('single export', solve([-N]), [0,N])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
simultaneous directions[1, 0][3, 2]Failed
balanced phases[0, 0][1, 1]Failed
all import[3, 0][3, 0]Passed
all export[0, 3][0, 3]Passed
idle[0, 0][0, 0]Passed
single export[0, 1][0, 1]Passed

SHA-256 / 2387a5efce57c1a8b188fca2336dcfa86cd3f197eb0a5d131cb99eb301d95353

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(phases):
    return [sum(abs(v) for v in phases),0]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('simultaneous directions', solve([3*N,-2*N,0]), [3*N,2*N])
check('balanced phases', solve([N,-N]), [N,N])
check('all import', solve([N,2*N]), [3*N,0])
check('all export', solve([-N,-2*N]), [0,3*N])
check('idle', solve([0,0,0]), [0,0])
check('single export', solve([-N]), [0,N])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
simultaneous directions[5, 0][3, 2]Failed
balanced phases[2, 0][1, 1]Failed
all import[3, 0][3, 0]Passed
all export[3, 0][0, 3]Failed
idle[0, 0][0, 0]Passed
single export[1, 0][0, 1]Failed

SHA-256 / 3cb346b9b6569047565c721eaf080d3352682c28c9824422c3fd4b86e132a5e7

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(phases):
    return [sum(max(v,0) for v in phases),sum(max(-v,0) for v in phases)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('simultaneous directions', solve([3*N,-2*N,0]), [3*N,2*N])
check('balanced phases', solve([N,-N]), [N,N])
check('all import', solve([N,2*N]), [3*N,0])
check('all export', solve([-N,-2*N]), [0,3*N])
check('idle', solve([0,0,0]), [0,0])
check('single export', solve([-N]), [0,N])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
simultaneous directions[3, 2][3, 2]Passed
balanced phases[1, 1][1, 1]Passed
all import[3, 0][3, 0]Passed
all export[0, 3][0, 3]Passed
idle[0, 0][0, 0]Passed
single export[0, 1][0, 1]Passed

SHA-256 / 02d6dcf7b035b7a2cab2e11a65c8ca9d7afb7b5e22ef36083158f25bfec95654

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:38:55.138535+00:00.

Case digest / 1b5eb54fb15f6a5bef73dbde54637d37b9f5c527d84eca01471f75e58e9468a0