Recover workerless delivery safely; show compact SMTP/IMAP progress and complete recipients #100

Closed
opened 2026-09-07 19:21:31 +02:00 by zemion · 3 comments
Owner

Implement the user-requested follow-up after #99 and successful live campaigns.

Acceptance:

  • Canonical bounded synchronous retry/continue without workers; accepted SMTP and uncertain effects must never be blindly replayed.
  • Fenced stale-claim recovery only with expired lease and proven stopped/replaced owner; subsequent reconciliation requires an evidence note.
  • Small version-scoped progress endpoint and shared blocking SMTP/IMAP dialog, explicit active/pending/success/failure/unknown/excluded counters; no full workspace reload while processing; preserve successful write acknowledgement when a read fails.
  • Report all frozen To/Cc/Bcc recipients; list filters for SMTP and IMAP diagnostics.
  • Warn that file links must precede locking, and recheck attachment matches before locking.
  • Mail-owned bounded IMAP connection/folder reuse, sequential per-message APPEND, current authorization and provider recovery fences, no replay after uncertain APPEND.
  • EN/DE owning documentation, backend fault-injection and browser conformance checks.

Implementation in progress locally. No publication/closure yet. Verification uses isolated fixtures; no real delivery or mailbox append is authorized by this maintenance work.

Implement the user-requested follow-up after #99 and successful live campaigns. Acceptance: - Canonical bounded synchronous retry/continue without workers; accepted SMTP and uncertain effects must never be blindly replayed. - Fenced stale-claim recovery only with expired lease and proven stopped/replaced owner; subsequent reconciliation requires an evidence note. - Small version-scoped progress endpoint and shared blocking SMTP/IMAP dialog, explicit active/pending/success/failure/unknown/excluded counters; no full workspace reload while processing; preserve successful write acknowledgement when a read fails. - Report all frozen To/Cc/Bcc recipients; list filters for SMTP and IMAP diagnostics. - Warn that file links must precede locking, and recheck attachment matches before locking. - Mail-owned bounded IMAP connection/folder reuse, sequential per-message APPEND, current authorization and provider recovery fences, no replay after uncertain APPEND. - EN/DE owning documentation, backend fault-injection and browser conformance checks. Implementation in progress locally. No publication/closure yet. Verification uses isolated fixtures; no real delivery or mailbox append is authorized by this maintenance work.
Author
Owner

Implementation completed locally across Campaign, Mail, Core conformance and workspace checks. Not committed/pushed; keep this issue open pending publication.

Implemented:

  • Workerless bounded retry/continue through canonical immutable jobs and attempt/recovery ledger, including queued zero-attempt remainder. Accepted, excluded, active and uncertain jobs are protected. Configured limits, all channel attempts, current Mail policy, review, approval and integrity gates remain enforced.
  • Stopped/replaced-owner + expired-lease + original evidence + revision-fenced active-claim recovery. Recovery only marks unknown; a separate evidence-note reconciliation is mandatory. Campaign attempts and matching pure-Mail/channel-specific IMAP Core ledger updates are atomic with audit. Compound channel and Mail-owned provider ledgers remain separate.
  • Small version-scoped progress counters, including active SMTP/IMAP, and shared blocking dialog with no workspace/summary/job polling behind it. Read failures retain last counters and cannot erase successful write acknowledgements or trigger replay.
  • Bounded sequential IMAP connection/folder reuse (100 APPENDs or300s default), with fresh per-message authorization/revision/credential/recovery checks; no automatic APPEND replay, MULTIAPPEND or parallel network effects. Append selects the intended version, not all historical versions.
  • All frozen To/Cc/Bcc addresses in Report, authored order, protected compact projection/search, long-address wrapping, shared status-list filters and active/pending count drill-downs.
  • Explicit Report reload and post-append diagnostics bypass recent-response caching; late account/version responses cannot replace current UI state.
  • File-link-before-lock explanation, loading guard, and fresh match check requiring explicit Link and lock confirmation.
  • EN/DE owning manifest-driven documentation/runbook/handbooks, acceptance runner adaptations and regression checks.

Verification so far:

  • Full Campaign backend:610 passed +34 subtests; final focused recovery/query/docs/testbed/adapter rerun72 passed +3 subtests.
  • Mail unittest203 passed. Broader Mail pytest238 passed +66 subtests, explicitly deselecting one pre-existing imported JMAP helper discovery problem.
    -22 focused real-component browser tests passed. Full Core browser regression suite is running; result will follow.
  • Production frontend build/bundle budget, conformance TypeScript, manifest72/72, strict contracts, dependency boundaries, shared layout/primitive/foundation, report-grid, aggregate-report, review and accessibility checks passed.
  • Workspace check-focused reaches the existing unrelated tests/test_institutional_governance_journey.py:223 failure (expired availability fixture, IndexError); not modified to hide it.

Live READ-ONLY verification: current completed version has183 SMTP accepted and183 IMAP appended,8 excluded,0 active/pending/failed/unknown. New progress response612 bytes in~0.135s. Earlier inspected multi-recipient SMTP envelopes included multiple recipients with no refusals. No real message send/append or campaign/configuration/job mutation was performed during this maintenance verification. Real-provider throughput and production supervisor/broker drills remain operational verification, not inferred from mocks.

Implementation completed locally across Campaign, Mail, Core conformance and workspace checks. Not committed/pushed; keep this issue open pending publication. Implemented: - Workerless bounded retry/continue through canonical immutable jobs and attempt/recovery ledger, including queued zero-attempt remainder. Accepted, excluded, active and uncertain jobs are protected. Configured limits, all channel attempts, current Mail policy, review, approval and integrity gates remain enforced. - Stopped/replaced-owner + expired-lease + original evidence + revision-fenced active-claim recovery. Recovery only marks unknown; a separate evidence-note reconciliation is mandatory. Campaign attempts and matching pure-Mail/channel-specific IMAP Core ledger updates are atomic with audit. Compound channel and Mail-owned provider ledgers remain separate. - Small version-scoped progress counters, including active SMTP/IMAP, and shared blocking dialog with no workspace/summary/job polling behind it. Read failures retain last counters and cannot erase successful write acknowledgements or trigger replay. - Bounded sequential IMAP connection/folder reuse (100 APPENDs or300s default), with fresh per-message authorization/revision/credential/recovery checks; no automatic APPEND replay, MULTIAPPEND or parallel network effects. Append selects the intended version, not all historical versions. - All frozen To/Cc/Bcc addresses in Report, authored order, protected compact projection/search, long-address wrapping, shared status-list filters and active/pending count drill-downs. - Explicit Report reload and post-append diagnostics bypass recent-response caching; late account/version responses cannot replace current UI state. - File-link-before-lock explanation, loading guard, and fresh match check requiring explicit Link and lock confirmation. - EN/DE owning manifest-driven documentation/runbook/handbooks, acceptance runner adaptations and regression checks. Verification so far: - Full Campaign backend:610 passed +34 subtests; final focused recovery/query/docs/testbed/adapter rerun72 passed +3 subtests. - Mail unittest203 passed. Broader Mail pytest238 passed +66 subtests, explicitly deselecting one pre-existing imported JMAP helper discovery problem. -22 focused real-component browser tests passed. Full Core browser regression suite is running; result will follow. - Production frontend build/bundle budget, conformance TypeScript, manifest72/72, strict contracts, dependency boundaries, shared layout/primitive/foundation, report-grid, aggregate-report, review and accessibility checks passed. - Workspace check-focused reaches the existing unrelated tests/test_institutional_governance_journey.py:223 failure (expired availability fixture, IndexError); not modified to hide it. Live READ-ONLY verification: current completed version has183 SMTP accepted and183 IMAP appended,8 excluded,0 active/pending/failed/unknown. New progress response612 bytes in~0.135s. Earlier inspected multi-recipient SMTP envelopes included multiple recipients with no refusals. No real message send/append or campaign/configuration/job mutation was performed during this maintenance verification. Real-provider throughput and production supervisor/broker drills remain operational verification, not inferred from mocks.
Author
Owner

Final verification: full Core browser conformance passed 149/149 in 3.4 minutes, including all 22 new Report/progress scenarios. The temporary test server stopped cleanly.

Final production frontend build and bundle budget passed. Full Campaign backend passed 610 tests + 34 subtests; Mail unittest passed 203 tests. Final focused recovery/query/documentation/testbed/adapter checks passed 72 tests + 3 subtests. Manifest, module boundaries, shared UI contracts and whitespace checks are clean.

No real SMTP send or IMAP APPEND was performed during verification. The read-only live check still showed 183 SMTP accepted, 183 IMAP appended, 8 excluded, zero active/pending/failed/unknown.

The implementation is ready locally; reload the browser before manual use. Keep this issue open until the coordinated changes are committed and published. The unrelated expired institutional-governance fixture still blocks the workspace-wide check-focused runner; it was not changed. Unknown provider outcomes still require external evidence before reconciliation/retry.

Final verification: full Core browser conformance passed **149/149** in 3.4 minutes, including all **22** new Report/progress scenarios. The temporary test server stopped cleanly. Final production frontend build and bundle budget passed. Full Campaign backend passed **610 tests + 34 subtests**; Mail unittest passed **203 tests**. Final focused recovery/query/documentation/testbed/adapter checks passed **72 tests + 3 subtests**. Manifest, module boundaries, shared UI contracts and whitespace checks are clean. No real SMTP send or IMAP APPEND was performed during verification. The read-only live check still showed **183 SMTP accepted, 183 IMAP appended, 8 excluded, zero active/pending/failed/unknown**. The implementation is ready locally; reload the browser before manual use. Keep this issue open until the coordinated changes are committed and published. The unrelated expired institutional-governance fixture still blocks the workspace-wide check-focused runner; it was not changed. Unknown provider outcomes still require external evidence before reconciliation/retry.
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.

Workerless delivery recovery/progress, frozen To/Cc/Bcc reporting, list filters, pre-lock file-link warnings and Mail-owned bounded connection/folder reuse are implemented. test_workerless_recovery.py covers accepted/unknown/active no-replay, expired fenced-owner recovery, evidence reconciliation, scopes, query bounds and audit atomicity. Mail batch/encoding tests and actual campaign-delivery-progress.spec.ts / campaign-report.spec.ts passed. SMTP and IMAP unknown outcomes still require external evidence; APPEND is sequential per message within bounded connection reuse, not blind replay or protocol pipelining. Real-provider throughput/supervisor/broker drills remain operational verification, not effects performed by these isolated tests. EN/DE runbooks/topics are included.

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). Workerless delivery recovery/progress, frozen To/Cc/Bcc reporting, list filters, pre-lock file-link warnings and Mail-owned bounded connection/folder reuse are implemented. `test_workerless_recovery.py` covers accepted/unknown/active no-replay, expired fenced-owner recovery, evidence reconciliation, scopes, query bounds and audit atomicity. Mail batch/encoding tests and actual `campaign-delivery-progress.spec.ts` / `campaign-report.spec.ts` passed. SMTP and IMAP unknown outcomes still require external evidence; APPEND is sequential per message within bounded connection reuse, not blind replay or protocol pipelining. Real-provider throughput/supervisor/broker drills remain operational verification, not effects performed by these isolated tests. EN/DE runbooks/topics are included. 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#100