Architecture question: How should I extend Game Animation Sample with C++/GAS without fighting the existing Blueprint systems?

Hi, im still pretty new to Unreal. I started learning UE around a year and half ago, but my actual hands on experience is less than a year because I couldnt work on it consistently. Most of my experience is with Blueprint, and my C++ experience is much newer.

Right now I have a separate test project where im learning C++ and GAS, mostly because I want to understand how C++, Blueprint, animation and movement systems are actually supposed to work together before I use more of it in a bigger project.

Something im struggling with is working with a complicated existing project like Epic’s Game Animation Sample.

For example I tried adding flying. The flying code itself wasnt really the hardest part. The hard part was that GASP already has alot of Blueprint, animation and movement logic controlling the character.

So even when my C++ logic says the character should be flying, another existing system might still be treating the character like its grounded, changing movement values, changing animation state, rotation, etc. Then you end up with multiple systems basically fighting over the same character.

I can imagine the same problem getting much worse with climbing, traversal, ragdoll, GAS abilities, custom movement states and more complicated animation systems.

So what im trying to understand is how experienced Unreal developers normally approach this.

When adding C++ gameplay systems into something complicated like Game Animation Sample, how do you first figure out which system actually owns movement, animation state, rotation, velocity, movement modes etc?

Should C++ normally be the authoritative gameplay/state layer, and then Blueprint + AnimBP just read/react to that state?

Or when working with something already built like GASP, is it better to connect your C++ systems into the existing Blueprint logic instead of trying to replace what Blueprint is already doing?

Also how do you normally investigate a project this complicated before changing it? Do you trace Blueprint references, movement modes, AnimBP variables, interfaces, gameplay tags, update order etc first?

Im not trying to replace Blueprint with C++. I actually like using Blueprint and I think using both makes more sense. Im mainly trying to understand where the ownership boundary should be so C++ and Blueprint cooperate instead of both trying to control the same thing.

Basically I want to learn the correct architecture for extending systems like GASP before I build myself into a mess lol.

Any advice from people who have worked with Game Animation Sample or similar complicated character systems would be appreciated.