The data dictionary describes the properties, aspects and relationships that nodes may have. How the system checks changes against the dictionary and handles violations is configured on the integrityChecker bean, which can be found in the Spring configuration file node-services-context.
Integrity checks are performed at system flush points. The most common flush point is during transaction commit, but long-running processes can ensure that system cache memory doesn't become an issue by flushing at points in the process.
It is possible to switch integrity checking off completely by setting the enabled property, but should only be done if the various repository clients have been tested completely. While this will result in a performance improvement, it is so insignificant at present that there isn't much point, and isn't recommended.
If a model change has occured or a new client application starts causing integrity violations, the integrityChecker can be made to issue warnings and allow the transactions to complete using the failOnViolation property. If fail is on, any violation within a transaction will cause the transaction to roll back. This should only be disabled during development.
Another option that is useful during development but can be used to diagnose violations on a live system is the traceOn option. This records stack traces of all integrity events and will cause significant performance problems. Since integrity checks are only performed at flush points, it is sometimes necessary to turn this on in order to find out which code potentially caused the violations.