FAILURE MAP
← Case archive

FA-12076 / Sensor fusion consistency / Open access

Dropped samples do not accumulate process uncertainty · case 01

Prediction confidence remains too high after a long acquisition gap.

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

ROOT CAUSE

One process-noise increment is added per delivery instead of elapsed time.

VERIFIED REPAIR

Scale random-walk diffusion variance by the acquisition-time interval.

Unsuccessful approach: Squaring elapsed time applies a constant-velocity uncertainty law to random-walk diffusion.

Case contract

Scalar random walk with variance rate q: return p+q*dt as an integer; p,q,dt nonnegative. This is diffusion, not acceleration noise.

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(p, q, dt):
    return p+q
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('gap spans several ticks', solve(N,2,N+2), 3*N+4)
check('zero elapsed time', solve(N,2,0), N)
check('one tick', solve(N,2,1), N+2)
check('no diffusion', solve(N,0,N+2), N)
check('zero prior variance', solve(0,N,3), 3*N)
check('two ticks', solve(N,N,2), 3*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
gap spans several ticks37Failed
zero elapsed time31Failed
one tick33Passed
no diffusion11Passed
zero prior variance13Failed
two ticks23Failed

SHA-256 / 110688e2a534ef44a0a63637cc5338b7e4256069cdf243f2280b02206728907e

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(p, q, dt):
    return p+q*dt*dt
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('gap spans several ticks', solve(N,2,N+2), 3*N+4)
check('zero elapsed time', solve(N,2,0), N)
check('one tick', solve(N,2,1), N+2)
check('no diffusion', solve(N,0,N+2), N)
check('zero prior variance', solve(0,N,3), 3*N)
check('two ticks', solve(N,N,2), 3*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
gap spans several ticks197Failed
zero elapsed time11Passed
one tick33Passed
no diffusion11Passed
zero prior variance93Failed
two ticks53Failed

SHA-256 / 2577ace4cb505f6f718d570f76934338395d66aa44d88c8bc50e2b39a1174638

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(p, q, dt):
    return p+q*dt
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('gap spans several ticks', solve(N,2,N+2), 3*N+4)
check('zero elapsed time', solve(N,2,0), N)
check('one tick', solve(N,2,1), N+2)
check('no diffusion', solve(N,0,N+2), N)
check('zero prior variance', solve(0,N,3), 3*N)
check('two ticks', solve(N,N,2), 3*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
gap spans several ticks77Passed
zero elapsed time11Passed
one tick33Passed
no diffusion11Passed
zero prior variance33Passed
two ticks33Passed

SHA-256 / 1b825a327993f0e8075fb8da07ab68f2aa4d0b2cb8887f5fec4555ab30ef2178

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.619448+00:00.

Case digest / e05982e25155b9c7d7ab8f8e406c35a7199a722c6b3dd42fe426a20e9abb5226