You see…there’s this thing called “scope” and it apparently only applies to the server you’re calling SCOPE_IDENTITY from. Which does make sense in a “I just spent 3 hours fixing my code” kinda way. Wrote a few new stored procedures on the linked server that returned the identity as an output parameter, easy. Pain in the ass to figure out what was wrong to begin with.
Only thing it really teaches me: make sure to test the app the same way it’s going to be setup in the production environment.