Some years ago I built a rules engine system for my employer. This is the theoretical underpinning.
There are various types of rules that a rule engine can have. The most basic is the default. This will apply a value to an initialised but not updated field.
The next is a calculation. This will set a value typically based upon data in one or more locations. This will recalculate whenever either value changes.
Another is the non-limiting constraint. This will warn that a value is somehow incorrect but will not change values.
This contrasts with the limiting constraint that will prevent a value from violating it’s rules, enforcing a limit should the constraint be broken.