Make synchronous campaign sending limit administrator-configurable with inherited ceilings #98

Closed
opened 2026-09-07 15:28:43 +02:00 by zemion · 2 comments
Owner

Live usability finding: the user's built campaign has 183 eligible messages, the implicit Send now limit is 25, and worker delivery is disabled. Large campaigns are supported through workers, but the implicit synchronous default was not adjustable in the UI.

Implementation in working tree, not yet published: Campaign-owned SYSTEM and TENANT Administration sections, audited numeric override (0–500), conservative default25, explicit deployment environment ceiling retained, tenant overrides may only narrow. Revision-bound writes protect against stale own/parent settings and preserve unrelated settings. Core safety-catalog entries, strict scopes, EN/DE guidance, tests and a direct link from Review and Send. This changes no live settings and does not send or queue a campaign.

Targeted policy/backend tests passed; Admin browser and final integration checks ongoing. Leave open until pushed and verified.

Live usability finding: the user's built campaign has 183 eligible messages, the implicit Send now limit is 25, and worker delivery is disabled. Large campaigns are supported through workers, but the implicit synchronous default was not adjustable in the UI. Implementation in working tree, not yet published: Campaign-owned SYSTEM and TENANT Administration sections, audited numeric override (0–500), conservative default25, explicit deployment environment ceiling retained, tenant overrides may only narrow. Revision-bound writes protect against stale own/parent settings and preserve unrelated settings. Core safety-catalog entries, strict scopes, EN/DE guidance, tests and a direct link from Review and Send. This changes no live settings and does not send or queue a campaign. Targeted policy/backend tests passed; Admin browser and final integration checks ongoing. Leave open until pushed and verified.
Author
Owner

Implemented local system/tenant synchronous-send policy controls (0–500, default 25, explicit deployment ceiling respected), scoped permissions, revision conflicts, configuration safety/audit and EN/DE documentation. Final production build and full 127-test browser conformance pass, including 7 admin policy scenarios; combined Campaign backend verification 191 tests + 23 subtests passes. Read-only live check saw effective limit 200 for 183 eligible messages; no live settings were changed by this verification. Important separate recovery debt discovered while answering the workerless-runtime question: Report retry queue controls do not execute without workers; inline Retry now uses single_resend and can leave a failed/uncertain action with its main job still queued, and misclassifies accepted action response strings. SMTP reconciliation UI omits the required evidence note. Do not equate raising the limit with reliable unattended timeout recovery. These recovery defects are diagnosed, not fixed by this policy slice. Local/unpublished; keep open.

Implemented local system/tenant synchronous-send policy controls (0–500, default 25, explicit deployment ceiling respected), scoped permissions, revision conflicts, configuration safety/audit and EN/DE documentation. Final production build and full 127-test browser conformance pass, including 7 admin policy scenarios; combined Campaign backend verification 191 tests + 23 subtests passes. Read-only live check saw effective limit 200 for 183 eligible messages; no live settings were changed by this verification. Important separate recovery debt discovered while answering the workerless-runtime question: Report retry queue controls do not execute without workers; inline Retry now uses single_resend and can leave a failed/uncertain action with its main job still queued, and misclassifies accepted action response strings. SMTP reconciliation UI omits the required evidence note. Do not equate raising the limit with reliable unattended timeout recovery. These recovery defects are diagnosed, not fixed by this policy slice. Local/unpublished; keep open.
Author
Owner

Reconciled 2026-09-08: implemented and published

This supersedes the earlier local/unpublished status. The owning fix is on remote main and the verified v0.1.28 tag (commit c51fc180fba7), included in the published 0.1.45 source/package composition.

Audited system/tenant synchronous-delivery overrides, the 0–500 validation range, default 25, deployment ceiling and tenant narrowing are implemented with revision fences and Core safety-catalog coverage. test_delivery_policy_settings.py, test_synchronous_delivery_policy.py and actual campaign-delivery-policy.spec.ts passed. EN/DE administrator guidance and the Review & Send link are included. No live limit was changed and no delivery was queued.

The completed, unmodified release tools/checks/check-focused.sh run passed, including 213 browser conformance cases and the relevant backend suites. The audit matched current remote branches/tags and reviewed the original acceptance criteria and subsequent comments. Closing the implemented source/package scope. This is not a runtime deployment claim: Meta #52 and website #9 retain their independent runtime/public-site holds. No tag was moved.

<!-- govoplan-issue-reconciliation-20260908-published-fixes-v1 --> ## Reconciled 2026-09-08: implemented and published This supersedes the earlier local/unpublished status. The owning fix is on remote `main` and the verified [`v0.1.28` tag](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/src/tag/v0.1.28) ([commit `c51fc180fba7`](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/commit/c51fc180fba75441dbd19c25b02a3ddc37c81a5d)), included in the published [0.1.45 source/package composition](https://git.add-ideas.de/GovOPlaN/govoplan/src/commit/88b685ff5e689acf096bdfc7084bd108e801e86e/docs/releases/0.1.45.md). Audited system/tenant synchronous-delivery overrides, the 0–500 validation range, default 25, deployment ceiling and tenant narrowing are implemented with revision fences and Core safety-catalog coverage. `test_delivery_policy_settings.py`, `test_synchronous_delivery_policy.py` and actual `campaign-delivery-policy.spec.ts` passed. EN/DE administrator guidance and the Review & Send link are included. No live limit was changed and no delivery was queued. The completed, unmodified release `tools/checks/check-focused.sh` run passed, including 213 browser conformance cases and the relevant backend suites. The audit matched current remote branches/tags and reviewed the original acceptance criteria and subsequent comments. Closing the implemented source/package scope. This is not a runtime deployment claim: [Meta #52](https://git.add-ideas.de/GovOPlaN/govoplan/issues/52) and [website #9](https://git.add-ideas.de/add-ideas/addideas-govoplan-website/issues/9) retain their independent runtime/public-site holds. No tag was moved.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-campaign#98