himalaya/cairn/log/2026-08-02-pimdir-move-supplies-placeholder.md
2026-08-07 09:27:04 +02:00

24 lines
1.1 KiB
Markdown

---
cairn: log
change: pimdir-move-supplies-placeholder
date: 2026-08-02
---
# pimdir move supplies a target placeholder
Following the io-replica `staged-delete-and-move` fix (a client-staged `Remove`
or `Move` was a silent no-op in the hub), `ReplicaMutation::Move` gained a
`placeholder` field mirroring `Copy`. The pimdir backend's `move_messages` now
supplies it (`move:<target>:<handle>`), so a move stages a target create plus a
source tombstone that the next sync propagates.
This is a mechanical caller update tracking the engine API; no `backends`
requirement wording changed (the spec already states move stages a `Move`
mutation the sync propagates). Behaviour fixed for users: `message move` — and
`message delete`'s trash-first move step, once `mailbox.alias.trash` is set — now
take effect against a synced pimdir store instead of silently doing nothing.
Verified live over the Fastmail-synced store (`--account local`): a move leaves
the source and appears in the target, keeping the message's public id.
Capability touched: `backends` (no requirement change; caller-side fix logged for
honesty).