The program may "see" the adjacent army differently than the player?

It could be the way city defenders are coded: if it's adjacent then it is part of city defence. That way it is not a reinforcement, but part of what you are attacking.

Exception to the rule? or just variable as you said.

Worthy of some research methinks :)