Immutable models are all about constraints. An application must not modify data. It is disallowed from deleting or overwriting information. These constraints are the axioms upon which the mathematical structure of immutable architecture is built. Ensuring that these constraints are met is the responsibility of every layer of the application stack, right down to the data storage system.
A sure-fire way to enforce immutability constraints is to use an immutable runtime. If you choose to do so, your work is done! But ...