Worked late tonight (abstract for SNUG this year) and I am too tired to spend any time working for fun.
I received the book I mentioned last week and learned quite a bit about how constraint programming works in the real world (not these clumsy for-fun hacks that I have been playing with). The next logical step would be to find a way to represent a constraint as a BDD. There appears to be a way forward with pyeda.
I don't think I will spend much more time on constraint programming, but I remain committed to bring this side project to some logical conclusion.