There is a config object with random variables that are constrained by soft and hard constraints. Two instances of this config object are created. Variables in one instance take soft constraint value but variables in the second instance do not. These values are not constrained anywhere else other than this config object.
In reply to Sharandiva:
This is much more complicated than your original post. How about providing a complete self-contained run-able testcase so there are no other misunderstandings.
Just to add, nothing in your second example can result in ignoring the soft constraints. Since test_config.var1 and test_config.var2 depend on cfg[0/1].var1 and cfg[0/1].var2, if you have additional constraints on test_config.var1/var2 that would contradict with the soft constraints, this could result in the behavior you are seeing. For example:
ard constraints are those which we definitely want to be true. These might relate to the sucessful assembly of a mechanim. Soft constraint are those we would like to be true - but not at the expense of the others. These might say that a mechanism must follow a given path. There is not point in trying to match every point exactly if this can only be done by breaking the assembly of the links.