The perpetuance issue happens if you use "buffactive['perpetuance']" as a condition in your lua.
To avoid that you can use a custom variable that you create and activate (could be a boolean you set to "true") each time you perform "Perpetuance" JA and spell.action is not interrupted.
Do this in your aftercast.
Then in your midcast check for your custom variable instead of checking for buffactive['perpetuance'].
Alternatively you need to change your habits and use Perpetuance as your first Stratagem.
I had the habit of using stratagems in this order: Penury > Celerity > Accession > Perpetuance. From left to right in my macro book.
Just change it the other way around and make so Perpetuance is always the first strat you use, and that usually fixes the mentioned midcast issue with Perpetuance even if you use the standard buffactive check method
Explanation on what is happening if you're curious:
Arbatel hands do not get equipped midcast because Gearswap doesn't "see" Perpetuance buff as being active.
This happens because the client takes 1-2 seconds to see a buff you put up, and in return this means that if you're too fast casting a spell or performing an action after using a JA, Gearswap might be unable to see that that specific buff is already up.
This happens with everything, not just perpetuance.
If you want to make sure something gets 100% equipped you need to either be slower after JA use or to use one of the many alternate methods to address your condition check (like custom variables I suggested above, but there are other ways as well)