Tokens hashed at rest, shown once
A share link mints fresh randomness and stores a domain-separated hash, so a database read cannot reconstruct a working link. Revocation is a first-class state with its own timestamp and actor, so a leaked link dies without touching the underlying node.
