- Ya
- 9 Juni 2026, 23:52 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 2d209dd
EntitlementService now resolves each member's entitlement root via EntitlementRootResolver (nearest market-owning ancestor-or-self) instead of walking to the top-level org. The Free-tier floor and the product-access flag derive from that root, and isKamoCrmSubscription becomes subscriptionGrantsRootAccess (plan-org vs root, never the billing account). MemberEntitlements gains productRootOrgId so consumers gate access against the right product. BillingSetupService sources the market + Free plan from the new org's product root while keeping the billing Account on the top-level KamoCRM org — i.e. the parent owns billing, the child can own the product/market. Behaviour is unchanged until an org actually owns its own market (KamoCRM is the only market owner today, so every member still resolves to it).