FA-12061 / Sensor fusion consistency / Open access
Missing measurement axis resets a tracked component · case 01
A sensor observing only one axis overwrites the other estimate.
ROOT CAUSE
Missing values are filled with a zero pseudo-measurement.
VERIFIED REPAIR
Update only explicitly observed axes, including valid zero measurements.
Unsuccessful approach: Truthiness treats zero-valued observations as missing.
Case contract
Two-axis scalar-gain model: return each prior component averaged with the corresponding observation if it is not None; otherwise retain prior. Return fraction strings.
Why this case matters
Deterministic sensor-fusion model isolating one consistency contract; no hardware or production estimator is simulated.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(prior, observed):
return [str(Fraction(p+(z or 0),2)) for p,z in zip(prior,observed)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('missing y', solve([N,2*N],[3*N,None]), [str(2*N),str(2*N)])
check('observed zero', solve([2*N,4*N],[0,0]), [str(N),str(2*N)])
check('missing x', solve([N,2*N],[None,0]), [str(N),str(N)])
check('both missing', solve([N,-N],[None,None]), [str(N),str(-N)])
check('both observed', solve([N,N],[3*N,5*N]), [str(2*N),str(3*N)])
check('negative observation', solve([N,N],[-3*N,None]), [str(-N),str(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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| missing y | ['2', '1'] | ['2', '2'] | Failed |
| observed zero | ['1', '2'] | ['1', '2'] | Passed |
| missing x | ['1/2', '1'] | ['1', '1'] | Failed |
| both missing | ['1/2', '-1/2'] | ['1', '-1'] | Failed |
| both observed | ['2', '3'] | ['2', '3'] | Passed |
| negative observation | ['-1', '1/2'] | ['-1', '1'] | Failed |
SHA-256 / dd661242f610754dd617709a1a746f13d833af1092baaa318788669068890327
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(prior, observed):
return [str(Fraction(p+z,2)) if z else str(p) for p,z in zip(prior,observed)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('missing y', solve([N,2*N],[3*N,None]), [str(2*N),str(2*N)])
check('observed zero', solve([2*N,4*N],[0,0]), [str(N),str(2*N)])
check('missing x', solve([N,2*N],[None,0]), [str(N),str(N)])
check('both missing', solve([N,-N],[None,None]), [str(N),str(-N)])
check('both observed', solve([N,N],[3*N,5*N]), [str(2*N),str(3*N)])
check('negative observation', solve([N,N],[-3*N,None]), [str(-N),str(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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| missing y | ['2', '2'] | ['2', '2'] | Passed |
| observed zero | ['2', '4'] | ['1', '2'] | Failed |
| missing x | ['1', '2'] | ['1', '1'] | Failed |
| both missing | ['1', '-1'] | ['1', '-1'] | Passed |
| both observed | ['2', '3'] | ['2', '3'] | Passed |
| negative observation | ['-1', '1'] | ['-1', '1'] | Passed |
SHA-256 / 767c70bd0eaa9c222946971f3a90973ed42bc8416e9fa4ff7f44bf17b6435774
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(prior, observed):
return [str(Fraction(p+z,2)) if z is not None else str(p) for p,z in zip(prior,observed)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('missing y', solve([N,2*N],[3*N,None]), [str(2*N),str(2*N)])
check('observed zero', solve([2*N,4*N],[0,0]), [str(N),str(2*N)])
check('missing x', solve([N,2*N],[None,0]), [str(N),str(N)])
check('both missing', solve([N,-N],[None,None]), [str(N),str(-N)])
check('both observed', solve([N,N],[3*N,5*N]), [str(2*N),str(3*N)])
check('negative observation', solve([N,N],[-3*N,None]), [str(-N),str(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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| missing y | ['2', '2'] | ['2', '2'] | Passed |
| observed zero | ['1', '2'] | ['1', '2'] | Passed |
| missing x | ['1', '1'] | ['1', '1'] | Passed |
| both missing | ['1', '-1'] | ['1', '-1'] | Passed |
| both observed | ['2', '3'] | ['2', '3'] | Passed |
| negative observation | ['-1', '1'] | ['-1', '1'] | Passed |
SHA-256 / 09b381b9b97f7170f6077055fdbdd1a06afc6b74b413b0b8359b2e2aec1bcdfe
Verification & scope
Exact small scalar or two-axis models; no nonlinear dynamics, numerical conditioning, or real sensor noise simulation. 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:53.503345+00:00.
Case digest / 109a649b93e6fc3e0de81fcb372f2a1e0af9bef7490818052d6004d865d4ddc3