outbox
Filesystem outbox for the no-SMTP fallback: writeOutboxEmail
persists one drafted message as a standalone HTML file under
<dir>/<from>/<timestamp>-<subject-slug>.html instead of sending it.
This lets the approval flow and agents be exercised end-to-end with
zero email configuration - open the file in a browser to see exactly
what would have gone out (the HTML matches the SMTP send, headers
table aside). The body is rendered + style-inlined by
renderEmailHtml. Attachments are listed by filename in the
header table but not written to disk - the outbox previews the
envelope, it doesn’t reproduce the wire payload.