Packaging

One core contract, eight optional modules.

Optional modules are assigned through billing plans and frozen into a tenant's entitlement snapshot. Editing a plan does not silently change a live partner — it is re-applied deliberately.

How entitlements behave

Assigned by plan

A billing plan carries the module set. Assigning the plan to a tenant freezes that set into the tenant's assignment snapshot.

Changed deliberately

Editing a plan does not mutate live tenants. A plan is re-applied deliberately — to one tenant, or in bulk to every active tenant bound to it.

Enforced twice

A disabled module is removed from panel navigation and closed at the API route level, so it is genuinely off rather than merely hidden.