I think the next step will be to run things in parallel, handle duplicated build requests, and figure out a way to channel progress back to the main process.
And once that's working... do some Fennel stuff, to figure out how that'll work.
And if nothing else falls out: throw out the code, and reimplement a similar architecture, but do it well, with error handling and everything.
Works fine on NetBSD too!