Let me see if I understand what you’re asking.
Suppose you want to share a document with me in a non-repudiable way. One way to do this is to sign the document as well as a statement saying “as of time X, Jude now owns this document.” As long as a third party verifier knows both your and my public keys, they can contact either one of us to verify the transfer.
Blockstack makes sure that the third party verifier gets your and my public keys by assigning them easy-to-remember names on a blockchain. It does not need to write your attestation to the blockchain for the above scheme to work (but it could do so if it wanted to, for reasons I will explain below).
What happens if I transfer the document to Ryan? I could do the same thing: sign the document and a statement saying “as of time Y, Ryan now owns the document.” A verifier could look at your signed statement and my signed statement, and conclude that the document has passed from you to me to Ryan.
Now here’s where it gets interesting. How does the verifier know that the signed statement it got is the latest such signed statement? For example, what if the verifier didn’t “see” my statement that I transferred the document to Ryan? It would still believe that I owned it. This means that all of us need to come up with a way to make sure that the verifier always knows it has the full history of transfers (i.e. the document’s provenance).
Recording transfers on the blockchain is a sufficient but not necessary way to preserve provenance. Blockstack can do this, such as by assigning the document a name on the blockchain and encoding ownership transfers with
NAME_TRANSFER transactions. However, cheaper and practical off-chain solutions also exist, such as simply emailing all of the interested parties your transfer statements.
Hope this helps!