If you are retrieving post(s) by ID, then why do you need terms in query? Post IDs are unique. You likely need post type (because it’s not default), but taxonomy terms only add confusion to the mix.
Update
Noticed after you added second code sample – post__in
has two underscores in it, your examples lack one more.