Thanks @LeiWang1999 , I think the main goal here would be to ensure that the IR remain as a common shared parts.
Different projects can have their own defined transformations and leverages the main code-base. That would enable us to reuse different tuner and transformations of the IR out of tree. We have been using such patterns relax passes in LLM compilations, likely we can also use it for TIR compilation in some extent. This is also the main benefit of the modular flow in the new approach
The way it works is to define customized TIR lowering pass
IRModule => My-TIR-Lowering(can be in 3rdparty) => Common TIR lowering pipeline
And ensure that the build process can leverage the common representation. Changes to common IR and unified runtime themselves still needs to happen in upstream, but that is usually less frequent than transformation