Problem/Motivation

Suppression is derived entirely from the event log. Default 90-day cron retention deletes hard-bounce and permanent-complaint evidence, allowing sends again. A configured temporary window longer than retention is also shortened.

Evidence and scope

Reviewed 1.0.0-alpha1, source commit 02fd9d36af5237e712cecb7155d79725f7824880. Location: postmark_webhooks.module:48.

Kernel reproduction: a 91-day-old hard bounce suppresses before cron and no longer suppresses after cron. The settings form calls this permanent, while README acknowledges the limitation.

Proposed resolution

Keep minimal durable suppression state separately from expiring event history. Migrate existing evidence, preserve reason and expiry, and specify explicit release semantics. Logging retention must not silently change delivery policy.

Acceptance criteria

Prove permanent suppression survives purge, temporary expiry remains correct, shorter retention does not shorten windows, and migrations preserve decisions. Update form and docs together; retaining all event history forever is not the final solution.

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

jmcerda created an issue. See original summary.

jmcerda’s picture

Assigned: Unassigned » jmcerda
Status: Active » Needs review

Implementation is under review with the related occurrence-time and shared-policy changes (#3621124 and #3621126). Minimal durable evidence survives event purge; event and state writes commit together. PostgreSQL tests on Drupal 10.3/PHP 8.3 and Drupal 11/PHP 8.4 cover permanent/temporary retention, retained alpha upgrades, concurrent distinct events, and rollback on state failure. Review findings around frozen upgrade definitions, receipt-time consistency and migration progress have been fixed and regression-tested. Public 1.x will be updated after integration review.

  • jmcerda committed 72909b69 on 1.x
    Issue #3621121: Correct time diagnostics and migration progress
    

  • jmcerda committed f278c6a8 on 1.x
    Issue #3621121: Include deep metadata compatibility regression
    

  • jmcerda committed b8547761 on 1.x
    Issue #3621121: Freeze the durable-state upgrade definition
    

  • jmcerda committed 9b9bdc26 on 1.x
    Issue #3621121: Incorporate reviewed identity and validation fixes
    
    #...

  • jmcerda committed c5b13102 on 1.x
    Issue #3621121: Keep durable suppression with provider-time policy (#...
jmcerda’s picture

Status: Needs review » Fixed

Durable suppression is now integrated into 1.x at d3c5d94, together with validation (#3621122), provider occurrence time (#3621124), and the shared decision policy (#3621126). PostgreSQL CI passes on Drupal 10.3/PHP 8.3 and Drupal 11/PHP 8.4: 39 tests, 226 assertions each, including retained alpha migration, suppression surviving event purge, concurrent receiver processes and rollback on persistence failure.

Fixed on the development branch; not yet tagged or deployed. Run database updates when upgrading an existing alpha installation. Previously discarded history remains unrecoverable.

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.