Glyphs 3 does not seem to understand this line of feature code and gives “Expected adjustment for the second glyph” error:
pos [alef-ar.fina] <-193 0 -193 0> [hah-ar];
But it accepts the equivalent confusingly-swapped-for-AFM-familiarity syntax:
pos [alef-ar.fina] [hah-ar] <-193 0 -193 0>;
Glyphs 2 and feaLib accept both.
Adding <NULL> after the second glyph make Glyph 3 happy, but neither makeotf nor feaLib seem to require this (though the spec makes it look like it is required but it does not explicitly state so).
<NULL>
I’ve just added support for that first form of the rule. Should work in the next build. Thanks for the report!