I did some digging and sort of understand the cause.
Moshine mod added new module category "ai-speed" for its own labs. However to disable it for every other building, it does a loop on every entity in the game creating the optional "allowed_module_categories" array whitelisting the existing module categories (which is unset by default, accepting all new modded module categories, which is undesirable here), while not setting their own "ai-speed" category where it doesn't belong.
The important detail here is that this adjustment is done at the end of the mod load lifecycle, in data-final-fixes.lua.
Now, K2SpacedOut have added moshine.lua script loaded only when Moshine mod is present. And it introduced its own new super modules designed to be used by labs only, under the new category "kr-ai-core". And to make sure to limit these modules to labs only, it copied the big loop of entities from Moshine, similarly creating "allowed_module_categories" array and whitelisting what needs to be.
The important difference is that it does this in a script loaded by data-updates.lua, at the different place in the lifecycle. And the single action of setting "allowed_module_categories" for the Condenser at data.lua or data-updates.lua moment (because it does it for every single entity), even initialized to empty, removes the base quality from the Condenser entity (I've made a test mod with only this change - init allowed_module_categories to empty array on the Condenser entity - to unit test this, and indeed this is the cause).
Now, there are 2 possible solutions here :
- On K2SpacedOut side, move the module category logic to data-final-fixes.lua (I've added a comment on a Moshine bug discussion there)
- On Quality Condenser side, make it that base building quality is not affected by "allowed_module_categories". I haven't checked why exacty this setting affects base quality (seemingly should be unrelated), but I feel like a fix should be possible on Quality Condenser side.