Did you gifted him a bit more riffle and some GP/turn?
Ok, I will explain Nappy stack behavior.
When AI create Sod, it get assigned behavior AI.
Only 2 assignments are related to as.
Assigment one: take city.
Assigmen 2 : Pillage stack.
Pillage stack will not attack city. My guess this 4 rifle stack is assigned as pillaging. As zara has nothing to pillage, thsi stack just sit in place and wandering aimlessly.
So, in order For Nappy to send out attack stack we need to gift him units in position when he collecting attack stack. It is usually one of border cities, look which one has max units.
But again, AI probably will not take city if it is in financial problem. Nappy took bunch of cities, so he might be.
So, gift him additional 10 gp/turn, gift him 5-6 riffles and ask him to attack . (or may be ask to attack before and after gifting units).
Idea of variant is to investigate what makes Vassals tick and how to make them to do our biddings.
So, gift him units and ask him to attack city.