Faction Permission
The individually grantable capabilities inside a faction, each with a default and a type.
A permission is one capability a faction can grant or withhold — claiming land, inviting members, editing Law, and so on. Permissions are the leaves of the governance model; Faction Role bundles them.
Parameterised by role
Some permissions are not a single capability but a family: the ability to modify a particular role. MfFactionPermissions.permissionsFor(factionId, roles) builds the permission set for a specific faction from its specific roles, which means the available permissions differ between factions.
This is why permissions are stored and resolved by name rather than by reference — the object graph is per-faction and rebuilt at load, so only the string is stable enough to persist.
Defaults are per-permission
Each permission declares its own default, consulted last in the three-level resolution described in Faction Role. A faction can shift the middle level by setting defaultPermissionsByName on the Faction record, and a role can shift the top level. The permission's own default is the backstop that guarantees every lookup terminates in a boolean.
Serialization
Dedicated serializers exist for a permission and for a map of permissions, keeping the encoding of permission state in one place rather than scattered through the repositories that persist roles.
Related
Permissions govern members. Non-members are governed by Faction Flag settings and by their Faction Relationship to the landowner — two separate systems that meet at the block-interaction check on a Claimed Chunk.