External Variables only appearing in disabled constraints are updated in the course of ConstrainedVariable#suggestValue and ConstrainedVariable#updateDownstreamVariables which causes some solver implementations to solve the problem again (even though the source constraint is disabled).
If such solving operations fail for whatever reasons an exception might be thrown due to a currently disabled constraint.
If this updating of external variables is prevented for ConstrainedVariables without enabled constraints, the external variables currently get out of sync with the stored values. When the respective constraints are enabled later, the apparent value of the ConstrainedVariable will suddenly become that of the external variable which is out of date.
One possible solution for the de-sync might be to update (re-sync) external variables before a constraint is enabled (or rather in Constraint#enable before the solver solves). But we would have to implement this for each solver implementation and we have not determined yet, and we are not sure if it is even possible to update the external variable's value without triggering a solve (which ClVariable#suggestValue does, for example).
External Variables only appearing in disabled constraints are updated in the course of ConstrainedVariable#suggestValue and ConstrainedVariable#updateDownstreamVariables which causes some solver implementations to solve the problem again (even though the source constraint is disabled).
If such solving operations fail for whatever reasons an exception might be thrown due to a currently disabled constraint.
If this updating of external variables is prevented for ConstrainedVariables without enabled constraints, the external variables currently get out of sync with the stored values. When the respective constraints are enabled later, the apparent value of the ConstrainedVariable will suddenly become that of the external variable which is out of date.
One possible solution for the de-sync might be to update (re-sync) external variables before a constraint is enabled (or rather in Constraint#enable before the solver solves). But we would have to implement this for each solver implementation and we have not determined yet, and we are not sure if it is even possible to update the external variable's value without triggering a solve (which ClVariable#suggestValue does, for example).