Backend, for messages.
Its catalog, or undefined; without one only the default can be chosen.
The model the backend runs when none is named, if known.
The limit and the call's effort.
The price list the limit is checked against; undefined when none could be read.
The user's governance.models.deny list.
The CLI replaces a model's effort suffix with the call's effort (EffortRun).
Chooses the model of a turn under a price limit: the default when its verified price is below the limit, else the highest-priced catalog model below it, catalog order breaking ties. Approval is not considered here: the controller asks for it as for any model. A model the user denies, the default included, is never chosen.