FA-12986 / Numerical aggregation / Open access
Merge central moment 3: The cubic term tests total population rather than the difference of block counts. · case 01
The reduction disagrees with its explicit aggregation oracle.
ROOT CAUSE
The cubic term tests total population rather than the difference of block counts.
VERIFIED REPAIR
Preserve the merge central moment 3 contract at the identified reduction decision.
Unsuccessful approach: Absolute imbalance loses which block is larger.
Case contract
Merge disjoint integer observation blocks into [count, exact mean, unnormalised central moments through order 3]. 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*n*b/t
mean=mean+d*b/t
n=t
m2,m3,m4=r2,r3,r4
return [n,str(mean),str(m2),str(m3)]
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', '36'])
check('regression 2', solve(*([[1, 3], [8]],)), [3, '4', '26', '36'])
check('regression 3', solve(*([[0, 0], [0]],)), [3, '0', '0', '0'])
check('regression 4', solve(*([],)), [0, '0', '0', '0'])
check('regression 5', solve(*([[2, 2, 2], [], [-1, 5]],)), [5, '2', '18', '0'])
check('regression 6', solve(*([[-4], [1, 3], [7, 9]],)), [5, '16/5', '524/5', '-3348/25'])
check("variable repeated symmetric blocks",solve([[0,2]]*N),[2*N,"1",str(2*N),"0"])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression 1 | [3, '4', '26', '-156'] | [3, '4', '26', '36'] | Failed |
| regression 2 | [3, '4', '26', '132'] | [3, '4', '26', '36'] | Failed |
| regression 3 | [3, '0', '0', '0'] | [3, '0', '0', '0'] | Passed |
| regression 4 | [0, '0', '0', '0'] | [0, '0', '0', '0'] | Passed |
| regression 5 | [5, '2', '18', '0'] | [5, '2', '18', '0'] | Passed |
| regression 6 | [5, '16/5', '524/5', '2748/5'] | [5, '16/5', '524/5', '-3348/25'] | Failed |
| variable repeated symmetric blocks | [2, '1', '2', '0'] | [2, '1', '2', '0'] | Passed |
SHA-256 / c2bc28799ed513629e662a2cd4871a1f20f45f940d956b2f1b7784d448fea0f8
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*abs(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),str(m3)]
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', '36'])
check('regression 2', solve(*([[1, 3], [8]],)), [3, '4', '26', '36'])
check('regression 3', solve(*([[0, 0], [0]],)), [3, '0', '0', '0'])
check('regression 4', solve(*([],)), [0, '0', '0', '0'])
check('regression 5', solve(*([[2, 2, 2], [], [-1, 5]],)), [5, '2', '18', '0'])
check('regression 6', solve(*([[-4], [1, 3], [7, 9]],)), [5, '16/5', '524/5', '-3348/25'])
check("variable repeated symmetric blocks",solve([[0,2]]*N),[2*N,"1",str(2*N),"0"])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression 1 | [3, '4', '26', '-60'] | [3, '4', '26', '36'] | Failed |
| regression 2 | [3, '4', '26', '36'] | [3, '4', '26', '36'] | Passed |
| regression 3 | [3, '0', '0', '0'] | [3, '0', '0', '0'] | Passed |
| regression 4 | [0, '0', '0', '0'] | [0, '0', '0', '0'] | Passed |
| regression 5 | [5, '2', '18', '0'] | [5, '2', '18', '0'] | Passed |
| regression 6 | [5, '16/5', '524/5', '-948/25'] | [5, '16/5', '524/5', '-3348/25'] | Failed |
| variable repeated symmetric blocks | [2, '1', '2', '0'] | [2, '1', '2', '0'] | Passed |
SHA-256 / f17a309714040748c4f464f43359bb24373f73ced8e87a8a5fe007e50b01bcfa
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),str(m3)]
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', '36'])
check('regression 2', solve(*([[1, 3], [8]],)), [3, '4', '26', '36'])
check('regression 3', solve(*([[0, 0], [0]],)), [3, '0', '0', '0'])
check('regression 4', solve(*([],)), [0, '0', '0', '0'])
check('regression 5', solve(*([[2, 2, 2], [], [-1, 5]],)), [5, '2', '18', '0'])
check('regression 6', solve(*([[-4], [1, 3], [7, 9]],)), [5, '16/5', '524/5', '-3348/25'])
check("variable repeated symmetric blocks",solve([[0,2]]*N),[2*N,"1",str(2*N),"0"])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression 1 | [3, '4', '26', '36'] | [3, '4', '26', '36'] | Passed |
| regression 2 | [3, '4', '26', '36'] | [3, '4', '26', '36'] | Passed |
| regression 3 | [3, '0', '0', '0'] | [3, '0', '0', '0'] | Passed |
| regression 4 | [0, '0', '0', '0'] | [0, '0', '0', '0'] | Passed |
| regression 5 | [5, '2', '18', '0'] | [5, '2', '18', '0'] | Passed |
| regression 6 | [5, '16/5', '524/5', '-3348/25'] | [5, '16/5', '524/5', '-3348/25'] | Passed |
| variable repeated symmetric blocks | [2, '1', '2', '0'] | [2, '1', '2', '0'] | Passed |
SHA-256 / 4a503c043968b32e5d8f5a7ce52bebf9b15d7a92e45df5102f45fa888eda5b3f
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.380590+00:00.
Case digest / da9db97de494c94fe36f4aaf59c7ccafe737e5480a7a2b8a61a780fe6d9a3f2f