There are three items model file: a.json, b.json, c.json
a.json:
{
"overrides": [
{"predicate":{"custom_model_data":1},"model":"item/b"}
]
}
b.json:
{
"overrides": [
{"predicate":{"custom_model_data":1},"model":"item/c"}
]
}
If tag CustomModelData of a item is 1, the display model is b.json, not c.json.
Overrides/predicates are only looked at in the initial model (e.g. minecraft:item/compass.json), has been this way since the overrides format was introduced in 1.9.