Client authoritative flow for abilities in gameplay ability system (GAS)

I have a gameplay system that is designed to exist and run only on the owning client, and I want to author a gameplay ability to use that system in a way that correctly implements GAS features (cues, cooldown, tag blocking, cost etc), but allows the client to remain authoritative.

I have used the rough flow implemented in the lyra example for the weapon fire ability.

The flow is as follows:

  1. Client runs gameplay logic that relies on the local system to establish a target
  2. Client ability instance sends target data to the server
  3. Ability is committed on the server
  4. Ability completes gameplay logic on the server and client (cues/notifies etc.)
  5. Ability ends on the server

Please take a look at the attached minimal example and help me answer the following questions:

  1. Is the flow correct for a client authoritative system on owning pawn (does not exist on server) ?
  2. Is the commiting of the ability happening in the right place? Should I commit both on client & server?
  3. What is the hook/callback from the server if the ability was not committed successfully?
  4. Is the use of a local prediction window implemented correctly. I tried to use lyra as an example but it does not explicitly have a scenario where the server rejects the ability, and the client has to cleanup/react.
  5. Is the cue flow correct (e.g. it won’t double fire on the client)

FYI - The ability has a cost effect, that consumes an certain amount of a given attribute.

[Attachment Removed]

Steps to Reproduce
NA

[Attachment Removed]

Hello! We would need to know more about your setup and your requirements.

  • You mention the owning pawn doesn’t even exist on the server, is that right?
  • Should the ability be executable on the server, for pawns that do exist on both client and server?
  • Is there any expectation of validation for the client-only pawns?

I think it would help to know more context.

[Attachment Removed]