review(mailu): M2 PASS @2026-06-11T21:15Z — build #483 LEVEL 5, fresh independent re-trigger; all phase DoD satisfied
Some checks failed
continuous-integration/drone/push Build is failing

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.
This commit is contained in:
autonomic-bot
2026-06-11 21:16:27 +00:00
parent e37a7df496
commit be526c8252

View File

@ -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.**