ADR-0011: Retire propflow-inbox-poller Lambda

Context

propflow-inbox-poller was a Lambda triggered by EventBridge rate(1 minute) that polled every connected mailbox via Microsoft Graph (or Gmail), diffed against recentMessageIds, and published any new message into propflow-inbound.fifo. It pre-dated the Microsoft Graph change-notification (webhook) integration and was the only inbound path until early April 2026.

Since the Graph webhook subscription pipeline shipped (ADR-0001 + the /api/integrations/outlook/webhook route), every connected mailbox also delivers messages in real time:

Real-time delivery makes the poller redundant. Keeping it around costs:

Decision

Retire propflow-inbox-poller. Specifically:

  1. Delete lambda/inbox-poller/ (handler, build, deploy, fixtures).
  2. Delete .github/workflows/deploy-inbox-poller.yml.
  3. Delete scripts/compare-webhook-vs-poller.ts (no longer applicable — nothing to compare the webhook against).
  4. Update lambda/README.md to remove the row + fixture example.
  5. Update related ADRs (0001, 0003, 0004, 0005) and the deployment-cleanup architecture doc to reflect the retirement.
  6. AWS infra teardown after merge:
    aws events disable-rule --name propflow-inbox-poller-schedule
    aws events remove-targets --rule propflow-inbox-poller-schedule --ids <target>
    aws events delete-rule --name propflow-inbox-poller-schedule
    aws lambda delete-function --function-name propflow-inbox-poller
    aws lambda delete-function --function-name propflow-inbox-poller-preview
    

Explicitly kept:

Consequences

Positive:

Negative / trade-offs:

Migration

This ADR assumes ADR-0005 send-lock is in place so that any duplicate message that does sneak through (e.g. a renewer-recreated subscription re-delivering an already-processed message) cannot trigger a duplicate outbound reply.

References