Only valid combinations reach the basket.
Every option knows what it can and can't sit next to. Invalid choices grey out with a reason instead of failing at checkout, and the basket button only wakes up when the build is sound.