# Helpdesk Outbox Worker Validation Use `validate_helpdesk_outbox_worker.py` to verify that controlled Helpdesk activity creates the expected `event_outbox_events` rows and that `redmine_outbox_worker.py` can enrich those rows without processing them. ## Run ```sh ./validate_helpdesk_outbox_worker.py ``` The script first runs the full Helpdesk/redMCP smoke path: - sends an inbound email to Mailpit for `fud-helpdesk` - triggers Helpdesk mail import on the LAN Redmine host - verifies `issueWithHelpdesk()` metadata - verifies normal `updateIssue()` does not send customer mail - verifies explicit Helpdesk reply delivery through Mailpit - closes the controlled Helpdesk issue unless `--keep-open` is passed It then queries `event_outbox_events` for the created issue and dry-runs `redmine_outbox_worker.enrich_event()` against those exact rows. ## Expected Checks The validator fails if any of these are missing: - `helpdesk_ticket.created` - `helpdesk_ticket.updated` - `journal_message.created` - `journal.created` - `issue.updated` - derived worker document types: `event`, `ticket`, and `message` It also confirms the new rows have not been locked or marked processed, and that worker documents do not expose raw `bcc_address` data. ## Configuration Defaults match the LAN test setup: - Redmine: `http://192.168.50.170` - SSH: `reddev@192.168.50.170`, key `/tmp/reddev` - remote Redmine path: `/usr/share/redmine` - Mailpit: `192.168.1.105`, SMTP `1025`, HTTP `8025` - API key source: `REDMINE_API_KEY`, `REDMNINE_API_KEY`, or `redMCP/.env` Useful options: ```sh ./validate_helpdesk_outbox_worker.py --skip-preflight ./validate_helpdesk_outbox_worker.py --keep-open ``` ## Expected Output The final summary should include the created issue id, Helpdesk ticket ids, journal message ids, event row ids/types, and derived document type counts. The worker mode should report dry-run enrichment only.