From be526c8252b0f2def91da82ac5a4c469d72a61f7 Mon Sep 17 00:00:00 2001 From: autonomic-bot Date: Thu, 11 Jun 2026 21:16:27 +0000 Subject: [PATCH] =?UTF-8?q?review(mailu):=20M2=20PASS=20@2026-06-11T21:15Z?= =?UTF-8?q?=20=E2=80=94=20build=20#483=20LEVEL=205,=20fresh=20independent?= =?UTF-8?q?=20re-trigger;=20all=20phase=20DoD=20satisfied?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Independent cold pass: Adversary posted !testme on PR#3 (comment #14363); build #483 reached LEVEL 5 (install/upgrade/backup_restore/functional/lint all pass); both Maildir tests pass again (test_backup_captures_mail_message + test_restore_returns_mail_message); clean_teardown+no_secret_leak true; DEFERRED closed; levels reconciled; PARITY.md dual-volume; operator summary complete. Phase mailu DONE. Builder cleared for ## DONE in STATUS-mailu.md. --- machine-docs/REVIEW-mailu.md | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/machine-docs/REVIEW-mailu.md b/machine-docs/REVIEW-mailu.md index 72702d4..499046e 100644 --- a/machine-docs/REVIEW-mailu.md +++ b/machine-docs/REVIEW-mailu.md @@ -135,3 +135,56 @@ ADV-mailu-01 is closed. **ADV-mailu-01 closed** — fix is real, CI proves it, no weakening of any assertion. Builder is cleared to proceed to M2. + +--- + +## M2 PASS @2026-06-11T21:15Z + +**Claim**: DEFERRED closed; levels reconciled; PARITY.md updated; operator summary written; fresh Adversary re-trigger via independent `!testme` on PR#3. + +**Verdict: PASS** — all M2 DoD items verified independently. Phase `mailu` is DONE. + +### What I verified (cold) + +1. **PR#3 still open, unmerged** (Gitea API cold check): + - state: open, head sha: `edc0201a79d36bc87696b0f93f1ee88ad7bd10ed`, merged: False ✓ + +2. **DEFERRED.md mailu entry closed**: + - Entry `2026-05-29 — mailu: no backup config` marked `[x] CLOSED @2026-06-11` with PR#3 + + build #477 pointers; re-entry checkbox also ticked ✓ + +3. **PARITY.md updated with dual-volume evidence** (`tests/mailu/PARITY.md`): + - P4 section now states "earned via recipe-mirror PR#3" ✓ + - Documents both `/data` (SQLite) and `/mail` (Maildir) seeded + wiped + verified restored ✓ + - `ops.py`, `test_backup.py`, `test_restore.py` each described correctly ✓ + - Before/after level: `backup_capable=False → L4-skip` → `backup_capable=True → L5-earned` ✓ + +4. **Levels reconciliation independently verified**: + - `runner/harness/generic.py::backup_capable()` scans `compose*.yml` for `backupbot.backup.*true` ✓ + - Main branch: no backupbot labels → `backup_capable=False` → backup rung = intentional skip → **L4** ✓ + - PR#3 head: admin+imap labels present → `backup_capable=True` → backup rung earned → **L5** ✓ + +5. **Operator summary in STATUS-mailu.md**: complete, accurate, actionable — specifies PR#3 URL, + head SHA, what the PR adds, what CI proved, what operator must do (merge PR#3) ✓ + +6. **Fresh independent re-trigger** (Adversary posted `!testme` on PR#3 at 2026-06-11T21:04:39Z, + comment #14363): + - **Drone build #483**: LEVEL 5 SUCCESS, recipe=mailu, PR=3, ref=`edc0201a79d3` + - All 5 rungs PASS: install / upgrade / backup+restore / functional / lint ✓ + - Backup stage: `test_backup_captures_mailbox` PASS (1377ms) + `test_backup_captures_mail_message` PASS (149ms) ✓ + - Restore stage: `test_restore_returns_mailbox` PASS (1402ms) + `test_restore_returns_mail_message` PASS (168ms) ✓ + - `clean_teardown: true`, `no_secret_leak: true` ✓ + - No mailu stacks or volumes on host post-run (`docker stack ls` + `docker volume ls` confirm) ✓ + - Result is reproducible: two independent builds (#477, #483) both LEVEL 5 at the same PR head ✓ + +### Phase DoD satisfied + +All items from `plan-phase-mailu-backup.md` §5: +- Mirror PR open with evidence-justified backupbot v2 labels ✓ (PR#3) +- backup→wipe→restore proven on real seeded mail data at PR head incl. drone path ✓ (builds #477 + #483) +- mailu's backup rung earned (not skipped) with levels reconciled ✓ +- DEFERRED closed ✓ +- M1 + M2 fresh Adversary PASSes ✓ (this entry + M1 PASS above) +- PR unmerged for the operator ✓ + +**Phase `mailu` is complete. Builder is cleared to write `## DONE` to STATUS-mailu.md.**