The problem is that there isn’t any way for the player to distinguish the wolves–they’re both just “wolf”. When two things are indistinguishable like this, Inform won’t even try to distinguish or disambiguate them; it’ll just pick one.
One way to do this would be to give the wolves individual names in the source code:
The black wolf is a wolf, here. The gray wolf is a wolf, here.
Or you could give them a distinguishing mark by which they can be understood:
Understand "healthy" as a wolf when the hp of the item described is 10.
Understand "wounded" as a wolf when the hp of the item described is less than 10.
Before printing the name of a wolf: say "[if the hp of the item described is 10]healthy[otherwise]wounded[end if] ".
Or you could use understanding by properties. (The main complication that I know of is that understanding by relations won’t work–if the only way the player has of distinguishing two things involves a [something related by…] token then Inform will treat the items as indistinguishable, even though the player in fact can distinguish them.) But if you just have two anonymous instances of the wolf kind, Inform won’t let you choose which one to attack… because you have no way of expressing your choice.