Maybe I could summarize my previous post by the following rules:
* everywhere except in the list of equations of a model, evaluation should always be triggered, except otherwise specified (with a sym()-like operator)
* in the list of equations of a model, evaluation should never be triggered, except otherwise specified (with an eval()-like operator)
And I would add a 3rd rule:
* when trying to evaluate a symbol, if it is not assigned, then trigger an error. This means that it is ok to use an unassigned symbol in the equations list of a model, but not outside (unless the sym() operator is used)