builder.rs has ballooned to nearly 4k LoC, which makes it pretty unwieldy for humans and AI agents alike.
For example, github copilot only works with files up to 1k LoC.
We should consider splitting it into several smaller files, similar to how variant.rs and its sub-modules are organized.