After launch. The operator wants moves supported (2026-09-29); the design is plan/name-pools.md.
A did:web DID is its hostname and never moves. A move gives the account a handle-only name from another pool, through com.atproto.identity.updateHandle: it rewrites the DID document's alsoKnownAs and sends #identity. The DID's hostname stays reserved and keeps serving its document.
Needs a human review before building, because it adds stored state: handle-only names, and a per-pool reclaim rule (after N days, at once, or never) for them. A move is also an account.create-style placement decision, so policy should judge it the same way.
Done when the plan's exit criterion holds: a moved account keeps its DID, its DID's hostname is never issued again, its old handle stops resolving under its pool's reclaim rule, and the move is announced on the firehose.
Checked on main at 1351e8b33 in a sweep. Not a contained fix:
updateHandlestill answers 501. A move needs handle-only names and a per-pool reclaim rule, both new stored state. It also needs anidentity:handlescope in the ceiling and a ledger of minted DIDs, so that a hard delete stops freeing labels. All of it needs the owner's review ofplan/name-pools.mdfirst.