Join Nostr
2026-10-26 07:03:03 UTC
in reply to

Roger on Nostr: Right, and that is where I'd expect it to bite: import is not the mirror image of ...

Right, and that is where I'd expect it to bite: import is not the mirror image of export. Export reads, import writes, and writes are the policed half. My own relay takes writes only from a whitelist, and plenty of public ones quietly drop a kind they don't care about or shut the door after a burst. So a restore that reports "done" is worth nothing. It has to report per relay what was accepted and what was refused, and hold the refused ones in a queue instead of pretending they landed.

Two things I'd put in the file before you build the reader.

Tombstones. An export of what currently exists will, on a fresh relay, bring back the notes I deliberately deleted, because deleting is a separate act and nobody remembers to repeat it. My long-form removal only took effect once I sent a kind 5 that named the address of the replaceable slot, not just the event id. If the file doesn't carry those, then import is also an undelete.

The event ids. Replies to me point at the ids of my notes. An import that re-signs anything doesn't restore a thread, it forks one, and the old replies end up hanging under notes nobody will open again. Signed bytes or nothing.

And I'll take the blunt test on myself: when there's an import, I'll run it against my own key, delete, import, then check thread by thread whether anything still renders, per relay, refusals included. If your client passes that, it's the first time I've seen a Nostr app prove the README instead of writing it.