Two Copies, One Original
The moment a reader caches a summary, extracts an article body, or renders text in its own typography, it is holding a working copy of something it does not own. That is fine — it is what reading tools do — but only if the relationship stays explicit. The canonical original is primary; everything the reader holds is a projection for convenience.
Stated as a rule: an article row always carries the original URL, that URL is always reachable in one deliberate action, and extraction never becomes the destination. In-app reading can be the default click — convenience is not a sin — as long as the way out is one tap and extraction failure degrades to the source's own summary rather than to something invented.
Canonicalization Is Identity, Not Tidiness
URLs arrive decorated. Campaign parameters, click identifiers from whichever platform referred them, per-newsletter tags — none of which name the article, all of which change the string. If you hash the raw URL to decide whether you have seen an article before, you will store the same piece three times because it was linked from three places.
So canonicalization has a job beyond hygiene: it produces the identity. Lowercase the scheme and host, drop the fragment, and strip the parameters that are known to be tracking — anything with a campaign prefix, plus the specific click identifiers the big platforms attach. Keep everything else, because a query parameter you do not recognize may well be the article id. Then hash the result. That hash is what a uniqueness constraint should be on.
Strip on the Way Out, Too
The same canonical form is what you hand to anyone else. When the reader shares an article, the link it publishes is the cleaned canonical URL — not the decorated one it happened to receive, and not a shortener. A shortener would make the reader an intermediary in someone else's click path and hide the destination from whoever receives it; passing along the tracking parameters would forward surveillance the reader has no reason to forward.
Where the Rule Bites
Original-first is easy to agree with and easy to erode, because each erosion is a small convenience. Caching the extract forever is convenient. Rendering only your version is convenient. Letting the share sheet default to your own reader page instead of the publisher's is convenient. The discipline is not refusing all of these; it is noticing that each one moves the primary act, and keeping the original link one unambiguous tap away no matter how good the copy gets.