termaid Maintenance
termaid, my OCaml port of mermaid.rs, is available on opam! 🙌 With that release, the work shifts to maintenance.
Upstream Check
Given that this is a machine-driven port of an existing piece of code, I wanted to set up some infrastructure so that I'd catch any upstream bug fixes or feature enhancements. So I added an upstream-check.yml GitHub Actions workflow to execute check_upstream.sh and file an issue when it spots a change. The script uses the commit and blob references in oracle/UPSTREAM to determine changes against upstream. When the check fires, I'll ask an agent to update the oracle to the new upstream HEAD, use the oracle to generate test cases relevant to the changes, and adjust the OCaml code to make the tests pass.
Cheap Maintenance
At the heart of this is the realization that agents can not only hack up some code for a specific use but also automatically manage the process of synchronizing changes with upstream releases.
Crawshaw published this a couple of weeks after I'd wired up the upstream check. He proposes a nightly cron job running a rebase-and-integrate prompt. Mine runs weekly — I think nightly makes sense for personal software, but termaid's a library and should strive for stability. We converged on the same observation: upstream keeps moving, and we finally have a tool that can reconcile changes by meaning rather than just by line. He is also correct that open source is what enables this, though I'll admit my thinking hadn't really progressed beyond "now that I got the agent to port the code, let's watch the public git repo and see how well the agent will handle updates."