The four notice modes
A change to a legal text is not one thing — the package models the four ways a change is communicated and enforced, so it gets exactly the notice the law requires and never more.
Worked example — an info-only change
A payment-contract change your users only need to be told about — announced, recorded, effective on its date, and blocking nobody.
Worked example — deemed consent
A minor contract change where silence may bind — the objection window, the statutory period measured to the deadline, and the sweep that records silence as acceptance.
Worked example — active re-consent
A material core change still requires active agreement, with the full grace period and a hard gate at the deadline.
The delivery proof
Every pushed change notice writes an append-only legal_notices row — who was informed, when, on which medium, the exact text sent and its hash.
Saying what changed
A per-version, per-locale description of the change — the headline, the impact, and a typed list — frozen onto the version at publish and carried into every notice.