Skip to main content

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 — NoticeMode — so a change gets exactly the notice the law requires and never more:

Notice modeWhen to use itThe subject must…On silenceGates access?
SilentEditorial (--editorial)a typo, a clarification, a purely favorable changenothingboundno
InfoPush (--info)a material change that is information only — a payment-contract change under § 675g, a material privacy-notice update, a reference-rate changenothing (may object or terminate)takes effect regardlessno
DeemedConsent (--deemed)a minor/peripheral contract change where silence may bind (Zustimmungsfiktion)object before the deadline, else nothingsilence binds (§ 308 Nr. 5 BGB)no
ActiveReconsent (--active, or the legacy --material)a material/core contract change, or a new/expanded real consentactively accept before it appliesnot bound; the old terms continueyes

How a mode reaches the subject

legal-consent:dispatch-notices routes each mode to the matching notification — LegalChangeInformational ("no action required"), DeemedConsentNotice (carrying the § 308 Nr. 5 lit. b "silence counts as consent" warning), or ReconsentRequired — and, with durable_medium.proof on, writes an append-only row to legal_notices proving the notice was delivered. Only ActiveReconsent ever blocks access on a change — a mode says how a version change is communicated, and it has no say over a subject who never accepted the document in the first place. That second question belongs to gate.first_use.

Who a version is sent to

The audience depends on the mode, because "must re-consent" and "must be told" are two different populations:

ModeAudience
ActiveReconsentsubjects the gate will actually stop — those holding only an older major
InfoPush, DeemedConsentevery current party to that document, in that locale and tenant

A notice duty under § 327r Abs. 2 BGB, § 675g Abs. 1 BGB, P2B Art. 3(2) or DSA Art. 14(2) attaches to being a party, not to holding an outdated version — so a non-gating change goes to everyone, while a gating one is addressed to exactly the people its middleware will block.

Two document classes are never swept, and both exclusions are deliberate. An informational page (Impressum, cookie policy) is never accepted by anyone, so there is no ledger to draw an audience from. A real consent (consent) is never nagged about a change: Art. 7(4) DSGVO. If a voluntary consent's scope changes materially it needs a fresh, active opt-in — collected in your own UI, not pushed as a notice.

The sweep runs hourly and is idempotent; it is auto-scheduled unless you turn schedule.dispatch_notices off. See the delivery proof for what it records.

The invariants (never violated)

  • A privacy notice is acknowledged, never consented, and a change to one never gates — a material privacy update is InfoPush, announced but non-blocking (WP260 rev.01). A first acknowledgement is a different matter and can be collected at a first-use gate: nothing was announced there because nothing moved, so no mode applies and no consent is manufactured.
  • A real consent is never refreshed by silence or deemed consent; a material scope change needs a fresh, active opt-in (EDPB 05/2020).
  • Deemed consent lives only in the contract type, and only for minor changes (BGH XI ZR 26/20, EuGH C-287/19).
  • Advance-notice periods are per regime, never one global value (see notice_periods in the configuration reference).

Which mode a document type admits

The table is the whole rule, and it is worth reading before you pick a mode rather than after the publisher refuses one. Every cell is enforced at publish time.

Document type--editorial--info--deemed--active
contract_termsminor onlyminor onlyminor onlymajor only — and required on one
privacy_noticeminor onlyyes — required on a major bumpnevernever
consent_optinminor onlyminor onlynevermajor only — and required on one
informationalthe only onenevernevernever

Three of those cells are refusals with a reason, and the reasons are not interchangeable:

  • --active on a privacy notice is never lawful. A privacy notice is information: it is acknowledged, never gated. Blocking access to force acknowledgment is unlawful pressure (WP260 rev.01 Rz. 30-31). This is the one that surprises people, because every other material change gets stricter as it gets more serious and this one does not.
  • --deemed outside a contract is never lawful. Zustimmungsfiktion — silence as consent — rests on § 308 Nr. 5 BGB and BGH XI ZR 26/20, both of which are about contracts. A real consent can never be deemed at all (EDPB 05/2020 Rz. 79).
  • An informational page takes only --editorial. It binds nobody, so there is no acceptance to deem or re-request and no recipient to notify: the notice sweeps resolve recipients from ledger rows, and this type never writes one.

If the mode you need is refused, the bump is the thing to change, not the mode. A change that has to go out as --info or --deemed is a minor or patch bump of the source version, and one that has to go out as --active is a major bump; the major bump is what declares it material, and material is what forces the gate.

A major version bump forces its mode

The publisher refuses --info and --deemed on a major bump of a contract — a material core change cannot ride on silence or mere information (BGH XI ZR 26/20) — and refuses anything but --info on a major privacy bump, because a privacy notice is acknowledged, never gated. Publish a change that needs --info or --deemed as a minor or patch bump of the source version.

And the converse: a mode that gates has to raise the major. The gate compares major versions, so --active on a minor or patch bump of a contract or a real consent would reach nobody who accepted the current major: the version would say a re-consent was requested, and no earlier acceptor would ever be asked. The publisher refuses it and names the version to publish instead. A document's first publication is not a bump and is unaffected: --active there is how the first acceptance is collected.

Saying what changed

A notice that only names the document tells a reader nothing they can act on. Describe the change per locale and every notice carries it — see Saying what changed.

Worked examples