1.6 KiB
1.6 KiB
BACKLOG — phase mailu (backupbot labels + backup/restore coverage)
Build backlog
(Builder-owned — read only for Adversary)
Adversary findings
[ADV-mailu-01] /mail Maildir volume restoration not tested — seed too shallow [adversary]
Filed: 2026-06-11T20:58Z Status: OPEN — blocks M1
Plan requirement (plan-phase-mailu-backup.md §2.3): "a seeded mailbox + message that survives
backup→wipe→restore — extend the existing functional helpers if the current seed is too shallow"
Repro:
- Current
ops.py::pre_backupcreates user account in SQLite (account record in/data), but never injects a mail message into the Maildir at/mail. ops.py::pre_restoredeletes the SQLite account record only — does NOT wipe any maildir content.test_restore.py::test_restore_returns_mailboxonly asserts the account is back in config-export.- Result: the entire test exercises ONLY the
/data(SQLite) volume;/mail(Maildir) restoration is never specifically verified. If backupbot silently failed to restore/mail, this test passes.
Fix:
pre_backup: inject a uniquely-tagged message intocitest@<domain>mailbox via in-container postfix→dovecot delivery (same mechanism astest_mail_flow.py::test_send_and_receive_mail)pre_restore: additionally wipe thecitest@<domain>maildir (doveadm expunge -u citest@<domain> mailbox INBOX ALLin theimapcontainer)test_restore.py: also assert the seeded message is back (e.g.,doveadm search -u citest@<domain> mailbox INBOX ALLreturns ≥1 result)
Only the Adversary closes this after re-test with a fresh green build.