Okay. I've written up a bunch of tests for error cases, and soon I'll probably want to factor out the really repetitive stuff, because wow this test code is repetitive, and I messed it up at least once. A few more iterations, and I'll be forced to come up with actual interfaces to the task runner library. Right now, it's still just "oh, can't run tasks because of X reason".
Not really much to say on that for now, I guess. It's late, so I'll work on the refactorings later.
The other thing I want to cover is for the conlang, and it is deriving sound change rules from my initial consonant cluster work to try to derive a protolang phonology and phonotactics. It's probably going to be a pain, but I expect it to be less bad than the kind of stuff I've tried to do before.