I did not get tests done today. Instead, I iterated on the interface some more. The way things are going is making me question whether I want to use more specialized data structures for some of this, but the interface to what I have is fine, so this is pretty much a "performance" question, so I'm not currently equipped to answer it.
I think the interface I'm going with currently is solid. Again, have to try it out, which means I need to get it ready to be tried out. I'll try to get the tests done tomorrow.
One unfortunate thing I found is that Mypy apparently doesn't really even see class decorators, so I'm possibly going to have to reconsider all of the class decorators I used. Or maybe just say "You know what, this isn't ready for release, but it's good enough for me right now."
I also tried out some of the problem solving stuff today, first with some of the example problems. (I had to skip to the end, becase my mental monologue reading the early ones went something like "'A bear walks one mile south'—the north pole! no, white!") Anyway, that seemed to work out, so I tried applying the principles to something outside the area of math/lateral thinking. I didn't get as far, because the problem was much more open-ended, but I'm happy with my progress so far.