fix(worker): use native appointment email and purge retries #70

Merged
eleith merged 2 commits from fix/appointment-job-retries into main 2026-10-20 15:46:11 +00:00

Summary

  • Checkpoint prepared email content and explicit host/guest roles, then start independent native delivery children without increasing worker concurrency.
  • Let SMTP failures reach OpenWorkflow's five-attempt retry policy. Checkpoint successful sends separately from status bookkeeping so retries do not repeat saved sends.
  • Recheck live appointment eligibility before effects and condition email action logs on non-purged rows. Attempt failures are distinct from terminal engine failure; done requires every intended delivery to be sent.
  • Remove purge catch-and-orphan behavior: thirty native remote-delete attempts now exhaust into a failed job, retaining current/later purged rows rather than deleting local data.
  • Include unit/restart/replay integration coverage, operating notes, and a grouped patch changeset. No old-engine fixtures or upgrade integration tests.

Validation

  • Full workspace typechecks, lint, coverage gates, and production builds passed.
  • 247 worker tests, 634 web tests, 17 jobs tests (100% coverage), and 44 CLI tests passed; all remaining shared-package tests passed.
  • 23 browser tests passed.
  • Twenty-row near-budget purge scenario completed with 640 of the engine's 1000 step attempts.
  • Readability review completed and findings addressed; worker validation rerun afterward.

Scope and rollout

Part 2 of the OpenWorkflow work, following #69. This PR contains the two planned appointment commits; native cron maintenance remains a separate PR.

Do not deploy intermediate images before the grouped rollout. Before deploying changed workflow graphs, stop producers, let the old worker drain all unfinished jobs, stop it, and take consistent paired app/queue backups. Do not replay unfinished old histories through the new graphs. Prepared queue envelopes contain personal data and capability links; SMTP remains at-least-once across the remote-acceptance/checkpoint crash window.

## Summary - Checkpoint prepared email content and explicit host/guest roles, then start independent native delivery children without increasing worker concurrency. - Let SMTP failures reach OpenWorkflow's five-attempt retry policy. Checkpoint successful sends separately from status bookkeeping so retries do not repeat saved sends. - Recheck live appointment eligibility before effects and condition email action logs on non-purged rows. Attempt failures are distinct from terminal engine failure; `done` requires every intended delivery to be sent. - Remove purge catch-and-orphan behavior: thirty native remote-delete attempts now exhaust into a failed job, retaining current/later purged rows rather than deleting local data. - Include unit/restart/replay integration coverage, operating notes, and a grouped patch changeset. No old-engine fixtures or upgrade integration tests. ## Validation - Full workspace typechecks, lint, coverage gates, and production builds passed. - 247 worker tests, 634 web tests, 17 jobs tests (100% coverage), and 44 CLI tests passed; all remaining shared-package tests passed. - 23 browser tests passed. - Twenty-row near-budget purge scenario completed with 640 of the engine's 1000 step attempts. - Readability review completed and findings addressed; worker validation rerun afterward. ## Scope and rollout Part 2 of the OpenWorkflow work, following #69. This PR contains the two planned appointment commits; native cron maintenance remains a separate PR. Do not deploy intermediate images before the grouped rollout. Before deploying changed workflow graphs, stop producers, let the old worker drain all unfinished jobs, stop it, and take consistent paired app/queue backups. Do not replay unfinished old histories through the new graphs. Prepared queue envelopes contain personal data and capability links; SMTP remains at-least-once across the remote-acceptance/checkpoint crash window.
eleith-gitea-agent Bot added 2 commits 2026-10-20 15:42:49 +00:00
fix(worker): retain purged rows when native remote deletion exhausts
ci/woodpecker/pr/cli Pipeline was successful
ci/woodpecker/pr/jobs Pipeline was successful
ci/woodpecker/pr/web Pipeline was successful
ci/woodpecker/pr/worker Pipeline was successful
ci/woodpecker/push/cli Pipeline was successful
ci/woodpecker/push/jobs Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/worker Pipeline was successful
1909f88488
eleith merged commit 1909f88488 into main 2026-10-20 15:46:11 +00:00
eleith deleted branch fix/appointment-job-retries 2026-10-20 15:46:11 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eleith/when#70