With the initial implementation merged, there is still a lot of legacy code to be refactored (tracked as T196087). The purpose of this RFC is to ensure agreement on the architecture we should target with this refactoring. An analysis of the current situation, our needs, and an overview of the future architecture can be found here:
This architecture is fairly high level, it does not discuss concrete interfaces or implementations. The architecture has already been vetted within the MCR team. This RFC is intended to ensure broad agreement on the big picture.