Pure value struct for a resolved entitlement plan.
This is not an Ecto schema and touches no database — it is the in-memory shape a resolver folds active subscription state into. The optional Stripe-native entitlement cache schema is a later-phase concern and is intentionally not modeled here.
Fields
:plan_id— the logical plan name (atom) this entry represents, ornilfor an empty/unresolved result.:features— aMapSetof feature atoms granted by the plan.:quantities— a map ofquota_key => non_neg_integerseat/quota caps (already reduced tomin(cap, quantity)by the resolver where a cap exists).