tbh the more I think about this, the more it feels like federating Update(Tombstone) is never going to work very well.
We'd first have to win the argument that federating Tombstones make sense at all. I found the arguments to the contrary relatively persuasive on that front (I know you're aware of this, but just giving context for other folks reading this):
The Delete Activity And It's Misconceptions
Instead of using my personal blog, I’m going to just start writing about ActivityPub here instead, as I think it is more useful to have a central repository of all knowledge relating to ActivityPub that is easily searcha…
SocialHub (socialhub.activitypub.rocks)
I wonder if we can't just do point 6 on your list:
If we receive a
Delete(Note)(or Article, or Question, etc.) we will not delete it immediately. Instead, as kaniini advises, we will attempt to retrieve the object from the origin:
- If we see an
as:Tombstone, we will delete the post (soft delete)- If we encounter a 404 or 410, we will purge the post (hard delete)
So to play that out:
PublisherPost is deleted
- On soft delete:
- Convert
(Note|Article)toTombstone - Federate
Delete(Note|Article)
- Convert
- On hard delete:
- Delete
(Note|Article) - Federate
Delete(Note|Article)
- Delete
ReceiverReceives Delete(Note|Article)
- Remote
(Note|Article)returnsTombstone- Convert
(Note|Article)toTombstone - Soft-delete associated post.
- Convert
- Remote
(Note|Article)returns 404 (or 410)- Delete
(Note|Article) - Hard-delete associated post.
- Delete