ModuleManager Errors - KSP-ModularManagement/ModuleManager GitHub Wiki
This document uses the following conventions:
<...> = information that varies from error to error
<:CONDITION> = HAS/NEEDS
<:SPECIFIER> = FIRST/BEFORE/FOR/AFTER/FINAL
value = any modName
WIP
WIP
WIP
WIP
WIP
WIP
WIP
WIP
WIP
This error tells you the patch in question is attempting to use a :SPECIFIER where it does not belong. A :SPECIFIER can only be used on the rootNODE (think PART, CONTRACT_TYPE, etc.) not inside. Look for a node inside the patch like this:
@PART
{
MODULE[goodNode] {}
MODULE[badNode]:SPECIFIER <--- not allowed
}
This error tells you the patch in question has not provided a modName for the patchpass. It's telling ModuleManager when do to the pass, just not which mod to do it against. Basically, the when without the where. These will be BEFORE/FOR/AFTER passes with empty or missing square-brackets ([]).
Look for instances like this:
@PART:FOR
@PART:AFTER[]
This error tells you the patch in question is attempting to specify a modName inappropriately.
Look for :FIRST & :FINAL patching that has :FIRST[modName] or :FINAL[modA]:
This error tells you the patch in question is attempting to use more than one pass specifier. Since that's a no-no, only the first pass in the series will be executed; all others will be ignored.
Look for multiple instances of a :SPECIFIER following one another:
@PART:FOR[modNameA]:FINAL
@CONTRACT_TYPE:BEFORE[modA]:AFTER[modB]
This error tells you the patch in question has a random ASCII character set at the end of the config line which is mucking up the works. Not all text editors are created (or configured) alike; as such, they may not reveal the presence of said invisible interlopers when viewed.
When revealed, look for characters like this:

You have two options to deal with this:
- download a text editor that will reveal these invisible interlopers (example: VIM), or
- delete the entire offending line and manually duplicate it yourself.
Edit. Save. Profit.