Some discussion regarding NodeBB’s handling of soft deleted posts and Discourse’s parallel implementation prompted the creation of this FEP, which attempts to describe how the concept of soft deletion can be published without the introduction of new activities—using as:Delete as-is and relying on a backreference check for Tombstone in order to signal a soft delete.
@Claire, in Feb 2002, you created a topic where you mentioned soft deletes. While this isn’t strictly related to Undo(Delete), this FEP recommends thinking of a received Delete as an instruction to invalidate the cache, and re-fetch, which would give you a better answer as to how to handle the received Delete or Undo(Delete).
>Request the object (via its id) from the origin server directly
Couldn't Delete activity itself indicate the type of operation?
For example, if Delete contains embedded Tombstone, then treat it as a soft delete. Otherwise, treat it as a hard delete.
>The Forums and Threaded Discussions Task Force (ForumWG) has identified a common nomenclature when referring to organized objects in a threaded discussion model.
I find this nomenclature a bit confusing. Commented on the linked issue.
The assumption is that the object is not embedded. If it is, then it stands to reason that the embedded object can be used as is. I’ll call it out in that section, thanks.
What would happen if you receive a Delete for an object that you believe to have been soft deleted, but now it shows up as an object instead of a Tombstone? Like, it was undeleted by the time you receive the Delete or something?
Likewise, you receive an Undo(Delete) and when you fetch the referenced object, it returns back a Tombstone instead of the object?
It’d be good to document those cases, because I think the answers are:
If you receive a Delete and the object returns an object, not a 410 / 404 or Tombstone, then you discard the Delete
If you receive an Undo(Delete) and the object returns a 404, 410 or Tombstone, then you discard the Undo(Delete)
this regards soft deletion + context collections (as a collection of posts). This topic started at
I’m curious what should happen if the context contains three elements ap-obj, reply, and reply2. reply2 is a reply of reply. Now reply is deleted. How many elements does the context then contain?
@silverpill said that for mitra the context would contain 1 element ap-obj.
The scenario as Gherkin:
Background:
Given A new user called "Alice"
And A new user called "Bob"
And An ActivityPub object called "ap-obj"
Scenario: Reply to reply with parent reply deleted
Given "Alice" replied to "ap-obj" with "Nice post!" as "reply"
And "Bob" replied to "reply" with "Good point!" as "reply2"
When "Alice" deletes "reply"
Then For "Alice", the "context" collection of "ap-obj" contains "?" elements
Per my understanding, when processing a deletion of reply, you would not presume deletion of any or all downstream objects. Only the referenced object is deleted.
Deleting multiple objects at once would require multiple activities, or perhaps a single (and as-yet undefined) "batch" style activity.