The constraint expressions are evaluated from the variables but are not themselves actually variables for the underlying minimizer. The constraints cannot be violated -- they are defined.
Basically, we give the minimization routine a set of unconstrained, unbounded variables and our own internally defined objective function. That allows any solver to be used - they think they are doing unconstrained optimization. The internal objective function does the work of recasting those unconstrained variables from the minimizer to the user's Parameters, including transforming bounded (min/max) values, setting values for 'fixed' variables (which is no work at all), and evaluating the constraint expressions in terms of the other Parameter values. Those newly updated Parameters are then passed to the user's objective function. The result of the users' objective function are lightly checked and then passed back to the minimizer.
The Jacobian is needed for the actual variables.