
Text: Kolofon
From this version an instance can record that a reader spent a given amount of time with an entry. It sounds like a detail, and it is the foundation for everything that follows — because a mark for reading is worth exactly as much as the measure it stands on.
**The browser does not measure the time.** It reports two moments only: that the entry opened, and that the reader is asking for the time to be recorded. The difference is worked out by the server, from its own timestamps. Were the browser doing the counting, one request with a suitable number inside it would be enough to make the whole measure meaningless.
**The threshold grows with the length of the text.** Three paragraphs and ten paragraphs do not take the same time, and a single shared threshold does harm in both directions: too high for a short entry, too low for a long one. The floor is thirty seconds, the ceiling three minutes — beyond that a threshold stops being a threshold and becomes a test of endurance.
**The clock runs only while the tab is visible.** An entry opened in the background and forgotten for an hour is not an entry that was read. The browser knows this by itself and needs no supervision — it is enough to stop the counter when the tab leaves the view.
The component renders nothing. There is no progress bar, no line saying “you have been reading for thirty seconds”. A reader should be reading, not watching their own measurement — and the awareness that something is being counted changes the thing being counted.
This cannot be made airtight, and there is no point pretending otherwise. An entry can be opened and abandoned in front of an empty chair. The measure is not proof of reading, only a reasonable indication, and everything built on it has to treat it that way.
