-
0.25.1 — M4 verified live
Stablereleased this
2026-08-20 16:30:01 -05:00 | 35 commits to main since this release0.25.0 shipped folder administration with the one thing that mattered untested, and said so. This closes it. No behaviour changed — the probe found nothing to fix, which is worth recording as plainly as a defect would have been.
probes/m4_verify.py, 27 checks through the tool layer against the real mailbox. Scratch folders only; INBOX is not in the allowlist the script builds.The condition the phase owed
A rename must invalidate outstanding handles loudly, not silently. A green suite could not answer that — the fake renames a folder in a dict, so a stale handle fails there by construction. Both halves held live:
- A handle read before the rename comes back as an error naming the folder it could not open. Not a message, and not an empty result.
- With a new folder deliberately created at the old name and a different message inside it, the stale handle still refuses. Two independent things stop it: iCloud issues the reused name a fresh
UIDVALIDITY(observed1745372253→1745372267on a name reused seconds later), and the handle's ownUIDVALIDITYcheck refuses before any fetch.
That second case is the one the probe was really built for. A
message_idcarries(folder, UIDVALIDITY, uid), so a collidingUIDVALIDITYon a reused name would have let an old handle resolve to a different message — every guard downstream reasoning about the wrong one. It does not occur.Also confirmed
Each of these is a claim a tool description makes to the user:
- A created folder is invisible to
list_foldersuntilMAIL_FOLDERSnames it. - A rename carries the folder's messages with it; a duplicate create is refused.
- Deleting the trash folder is refused as protected.
delete_folderwithout a count refuses and reports the real number; a wrong count and a wrongexpected_nameeach refuse, and none of the three refusals removed anything.- The deleted folder's messages do not go to trash. Searched for afterwards and absent — the one thing separating this from
delete_message, and the reason its guards are heavier.
On probing a safety check
The protected-folder check passes a deliberately impossible
expected_message_countalongside, and the rename half names a destination outside the allowlist. Two independent guards would both have to be broken before the probe could touch anything real. A probe that verifies a safety check must not be the thing that fires when the check is missing.Write-up in
docs/operations.mdbeside M1's and M2's.docs/icloud-mail-plan.mdis down to M3. 969 tests green.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads