Duplicate Ability Instances with InstancedPerActor Policy in GAS: Bug or Intended Behavior?

In UE’s GAS, even with the GameplayAbilityInstancingPolicy set to InstancedPerActor, it seems possible for abilities of the same class to be instanced multiple times in a actor. Is this a bug, or is it intended behavior?

My initial understanding was that, with this policy, duplicate GA instances would not be created on a single actor; instead, if a second GiveAbility request occurred, it would reuse the first GA instance. However, in reality, duplicate instances are indeed being created.

This example comes from Lyra, where GA_Interact is defined in both LAS_InventoryTest and AbilitySet_InventoryCore DAs, leading to two GA_Interact instances on a single actor. This results in an undesirable situation.

I’m considering creating a function in the custom Ability System Component to prevent granting duplicate abilities of the same class (something like GiveAbility_CheckDuplicated). However, I’m debating whether to handle this scenario by branching based on GameplayAbilityInstancingPolicy::InstancedPerActor or by creating a custom policy to manage it separately.