So, Mark Rosenfelder's SCA² basically provides a nice interface for bulk application of string rewriting operations written in a DSL. There are options for how to display the output, an interface for saving the rewrite rules, and concepts of predefined and nonce categories.
I'm interested in getting the core functionality into a form that can be somehow pipelined or otherwise automated. This means not trying to port all of the functionality one-to-one. Rather than applying a sequence of rules to an ordered lexicon, I'd like to port the logic for "applying a single rule to a single entry". The rest of the functionality can be built up naturally.
My plan, then, is to first port the existing DSL-based implementation, and then work on taking it in a direction that makes sense to me. For example, the IPA divides phonemes up according to features. Perhaps phonemes could be specified like that, and allophonic variation specified as well, since I assume allophones exert influence on sound change, especially when they're in complementary distribution. I am not a linguist, however. Anyway, that's for later.
My task for tomorrow is to write up the core logic of SCA², so I can port it soon.
My task for now is to sleep.