FAILURE MAP
← Case archive

FA-12961 / Numerical aggregation / Open access

Merge central moment 2: The displacement formula uses the post-merge total as the prior count. · case 01

The reduction disagrees with its explicit aggregation oracle.

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

ROOT CAUSE

The displacement formula uses the post-merge total as the prior count.

VERIFIED REPAIR

Preserve the merge central moment 2 contract at the identified reduction decision.

Unsuccessful approach: Changing the denominator instead also double-counts incoming population size.

Case contract

Merge disjoint integer observation blocks into [count, exact mean, unnormalised central moments through order 2]. Empty blocks are identities; moments are Fraction strings, empty summary is zero.

Why this case matters

Exact bounded examples isolate a reduction defect without floating-point or external-service effects.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
from collections import Counter, defaultdict
import math
import itertools
N = 1
observations = []
def solve(blocks):
    n=0
    mean=Fraction(0)
    m2=Fraction(0)
    m3=Fraction(0)
    m4=Fraction(0)
    for xs in blocks:
        if not xs: continue
        b=len(xs)
        u=Fraction(sum(xs),b)
        q2=sum((Fraction(x)-u)**2 for x in xs)
        q3=sum((Fraction(x)-u)**3 for x in xs)
        q4=sum((Fraction(x)-u)**4 for x in xs)
        t=n+b
        d=u-mean
        r4=m4+q4+d**4*n*b*(n*n-n*b+b*b)/t**3+6*d*d*(n*n*q2+b*b*m2)/t**2+4*d*(n*q3-b*m3)/t
        r3=m3+q3+d**3*n*b*(n-b)/t**2+3*d*(n*q2-b*m2)/t
        r2=m2+q2+d*d*t*b/t
        mean=mean+d*b/t
        n=t
        m2,m3,m4=r2,r3,r4
    return [n,str(mean),str(m2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('regression 1', solve(*([[8], [1, 3]],)), [3, '4', '26'])
check('regression 2', solve(*([[1, 3], [8]],)), [3, '4', '26'])
check('regression 3', solve(*([[0, 0], [0]],)), [3, '0', '0'])
check('regression 4', solve(*([],)), [0, '0', '0'])
check('regression 5', solve(*([[2, 2, 2], [], [-1, 5]],)), [5, '2', '18'])
check('regression 6', solve(*([[-4], [1, 3], [7, 9]],)), [5, '16/5', '524/5'])
check("variable repeated symmetric blocks",solve([[0,2]]*N),[2*N,"1",str(2*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
regression 1[3, '4', '138'][3, '4', '26']Failed
regression 2[3, '4', '46'][3, '4', '26']Failed
regression 3[3, '0', '0'][3, '0', '0']Passed
regression 4[0, '0', '0'][0, '0', '0']Passed
regression 5[5, '2', '30'][5, '2', '18']Failed
regression 6[5, '16/5', '220'][5, '16/5', '524/5']Failed
variable repeated symmetric blocks[2, '1', '4'][2, '1', '2']Failed

SHA-256 / a4c076bd271cd8e9322ba9f9ee3f849721d5d28ed99d4de759268882c3f4f5b8

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
from collections import Counter, defaultdict
import math
import itertools
N = 1
observations = []
def solve(blocks):
    n=0
    mean=Fraction(0)
    m2=Fraction(0)
    m3=Fraction(0)
    m4=Fraction(0)
    for xs in blocks:
        if not xs: continue
        b=len(xs)
        u=Fraction(sum(xs),b)
        q2=sum((Fraction(x)-u)**2 for x in xs)
        q3=sum((Fraction(x)-u)**3 for x in xs)
        q4=sum((Fraction(x)-u)**4 for x in xs)
        t=n+b
        d=u-mean
        r4=m4+q4+d**4*n*b*(n*n-n*b+b*b)/t**3+6*d*d*(n*n*q2+b*b*m2)/t**2+4*d*(n*q3-b*m3)/t
        r3=m3+q3+d**3*n*b*(n-b)/t**2+3*d*(n*q2-b*m2)/t
        r2=m2+q2+d*d*n*b/(t+b)
        mean=mean+d*b/t
        n=t
        m2,m3,m4=r2,r3,r4
    return [n,str(mean),str(m2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('regression 1', solve(*([[8], [1, 3]],)), [3, '4', '26'])
check('regression 2', solve(*([[1, 3], [8]],)), [3, '4', '26'])
check('regression 3', solve(*([[0, 0], [0]],)), [3, '0', '0'])
check('regression 4', solve(*([],)), [0, '0', '0'])
check('regression 5', solve(*([[2, 2, 2], [], [-1, 5]],)), [5, '2', '18'])
check('regression 6', solve(*([[-4], [1, 3], [7, 9]],)), [5, '16/5', '524/5'])
check("variable repeated symmetric blocks",solve([[0,2]]*N),[2*N,"1",str(2*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
regression 1[3, '4', '82/5'][3, '4', '26']Failed
regression 2[3, '4', '20'][3, '4', '26']Failed
regression 3[3, '0', '0'][3, '0', '0']Passed
regression 4[0, '0', '0'][0, '0', '0']Passed
regression 5[5, '2', '18'][5, '2', '18']Passed
regression 6[5, '16/5', '2564/35'][5, '16/5', '524/5']Failed
variable repeated symmetric blocks[2, '1', '2'][2, '1', '2']Passed

SHA-256 / b846d92557c54136a8238a8479dd8ea5b1455263fdbaa57e19ed3807defee2c4

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
from collections import Counter, defaultdict
import math
import itertools
N = 1
observations = []
def solve(blocks):
    n=0
    mean=Fraction(0)
    m2=Fraction(0)
    m3=Fraction(0)
    m4=Fraction(0)
    for xs in blocks:
        if not xs: continue
        b=len(xs)
        u=Fraction(sum(xs),b)
        q2=sum((Fraction(x)-u)**2 for x in xs)
        q3=sum((Fraction(x)-u)**3 for x in xs)
        q4=sum((Fraction(x)-u)**4 for x in xs)
        t=n+b
        d=u-mean
        r4=m4+q4+d**4*n*b*(n*n-n*b+b*b)/t**3+6*d*d*(n*n*q2+b*b*m2)/t**2+4*d*(n*q3-b*m3)/t
        r3=m3+q3+d**3*n*b*(n-b)/t**2+3*d*(n*q2-b*m2)/t
        r2=m2+q2+d*d*n*b/t
        mean=mean+d*b/t
        n=t
        m2,m3,m4=r2,r3,r4
    return [n,str(mean),str(m2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('regression 1', solve(*([[8], [1, 3]],)), [3, '4', '26'])
check('regression 2', solve(*([[1, 3], [8]],)), [3, '4', '26'])
check('regression 3', solve(*([[0, 0], [0]],)), [3, '0', '0'])
check('regression 4', solve(*([],)), [0, '0', '0'])
check('regression 5', solve(*([[2, 2, 2], [], [-1, 5]],)), [5, '2', '18'])
check('regression 6', solve(*([[-4], [1, 3], [7, 9]],)), [5, '16/5', '524/5'])
check("variable repeated symmetric blocks",solve([[0,2]]*N),[2*N,"1",str(2*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
regression 1[3, '4', '26'][3, '4', '26']Passed
regression 2[3, '4', '26'][3, '4', '26']Passed
regression 3[3, '0', '0'][3, '0', '0']Passed
regression 4[0, '0', '0'][0, '0', '0']Passed
regression 5[5, '2', '18'][5, '2', '18']Passed
regression 6[5, '16/5', '524/5'][5, '16/5', '524/5']Passed
variable repeated symmetric blocks[2, '1', '2'][2, '1', '2']Passed

SHA-256 / ec78441a300a19ff3c751bed1f657e7c09330fb9d6274d83c1d6550f195582b7

Verification & scope

Small offline integer/rational inputs only; no performance, statistical inference, or production-library conformance claim. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:39:02.070936+00:00.

Case digest / b28dadf37bb86a0d59809b9c8a4541770eb10bec6d4b08923a133be0c761b65c