Skip to content

TASK-144646: Documentation for new curfew module (SparkPost/Momentum#…#845

Open
dkoerichbird wants to merge 2 commits into
mainfrom
Momentum#1228_curfew_module_documentation
Open

TASK-144646: Documentation for new curfew module (SparkPost/Momentum#…#845
dkoerichbird wants to merge 2 commits into
mainfrom
Momentum#1228_curfew_module_documentation

Conversation

@dkoerichbird
Copy link
Copy Markdown
Contributor

@dkoerichbird dkoerichbird commented May 21, 2026

…1228)


Note

Low Risk
Documentation-only change that adds a new module page and cross-references it from command/config/module indexes; no runtime behavior or configuration parsing code is modified.

Overview
Adds documentation for the new curfew module, including configuration (Schedule_File, Timezone, Fuzz_Seconds), schedule file format, precedence with other suspension mechanisms, logging behavior, and provided console commands.

Updates the console-commands summary, config-options summary, modules index/summary tables, and the 5.3.0 changelog to reference curfew and its new console commands/options.

Reviewed by Cursor Bugbot for commit 68a41cf. Bugbot is set up for automated code reviews on this repo. Configure here.

…1228)

Signed-off-by: Doug Koerich <douglas.koerich@bird.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented May 21, 2026

Deploy Preview for support-docs ready!

Name Link
🔨 Latest commit 68a41cf
🔍 Latest deploy log https://app.netlify.com/projects/support-docs/deploys/6a0f45bacf8069000731b308
😎 Deploy Preview https://deploy-preview-845--support-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Signed-off-by: Doug Koerich <douglas.koerich@bird.com>

<dd>

The timezone in which the cron fields of every rule are interpreted. Accepted values are `local` and `UTC` (case-insensitive). Default value is `local`, which matches standard crontab semantics. Any unrecognized value is treated as `local`, with a warning written to the paniclog.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we clarify the expected timezone format with a few examples (e.g., are these abbreviations such as CDT, or timezone offsets, etc.)


The `curfew` module schedules *quiet hours* (blackout windows) during which Momentum will not attempt deliveries for selected bindings, binding groups, or domains. The schedule is expressed in crontab-style syntax and is read from a plain-text file.

Curfew replaces *ad-hoc* operator workflows that toggle [`suspend_delivery`](/momentum/4/config/ref-suspend-delivery), e.g., from external cron jobs. Driving suspension state from outside the MTA is fragile: a missed cron firing can leave messages stuck on the spool, and a race between the cron job and a configuration commit can leave the binding suspended forever. Curfew evaluates its rules from inside the suspension decision path on every delivery attempt, so quiet hours engage and lift on schedule without operator intervention and without persistent state changes to the binding/domain scope.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we clarify the semantics w.r.t. message expiration when the curfew is lifted? i.e., if a message has expired by the time curfew is lifted, would it be attempted once for delivery or would it be expired immediately?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants