The Fix That Can't Ship: Making r_norm Causal for Real-Time BCI
My drift fix works beautifully in a notebook — and would fail on a real implant. It quietly looks into the future. This post makes it causal, and measures the honest cost of that.

My drift fix works beautifully in a notebook — and would fail on a real implant. It quietly looks into the future. This post makes it causal, and measures the honest cost of that.

Part 1 showed that a static decoder trained on Day 0 raw SBP actively misleads by year three. Here's the preprocessing step that fixes it — no cross-day alignment, no labels, no retraining.

I loaded 30 sessions of chronic Utah-array data spanning three years and watched a trained decoder go from useful to actively harmful. Here's what the data showed me — and why I think it's a problem worth solving.
