Writing

A date is the one field where being wrong looks exactly like being right

5 November 2026

Nineteen pages on this site end with a line saying when they were last reviewed. Twelve of them were lying, by up to a month, and nothing had noticed because nothing could.

What the line is actually for

It looks like politeness. It is not. That same date is handed to search engines as the sitemap’s lastModified, which is the field a crawler reads to decide whether a page is worth fetching again. A page edited in October and still claiming September is telling a crawler, in the only language it has, not to bother.

So the cost is not that a reader is misinformed about a detail they will never check. The cost is that the work of updating a page is thrown away at the point where somebody might have found it.

Why nothing caught it

Every other field on these pages fails loudly when it is wrong. A broken link 404s. A missing logo renders as a torn image. A stale price is contradicted by the live one beside it. A date does none of that. It renders perfectly, it is plausible, and it is wrong in a direction nobody has a reason to question.

That is the whole category: a date is the one field where being wrong looks exactly like being right. There is no symptom to notice, so noticing requires going and asking, which nobody does without a reason.

The gaps were not small. Terms was five weeks behind. The pairs hub, the splitting page and the Monero page were each a month out. These are not pages nobody touched — they are pages that were touched and then said otherwise.

Git is the authority, not the filesystem

The obvious fix is to read the file’s modification time. That is wrong, and quietly so: in a fresh checkout every file carries the date of the clone. A check built on mtime would pass on a developer’s machine, pass in CI, and report every page as updated this morning.

The commit that last changed the file is the only record of when the content changed, so that is what the check compares against. A page whose file has never been committed is skipped rather than guessed at.

One asymmetry worth stating: only a date that is too old fails. A date set ahead — a page reviewed today and committed tomorrow — is the author’s business, and a check with an opinion about that would be wrong more often than the thing it is checking.

The pattern this is the eighth instance of

This project now runs ten checks before a release, and almost every one exists because something had to be remembered and was not: that a provider appears in seven places, that a page is linked from somewhere, that the sitemap lists what the site declares, that two copies of one wire format still agree.

The shared shape is that none of those failures announced itself. They are all facts that are true on the day they are written and quietly stop being true later, with no symptom at the moment they break. A convention that lives only in somebody’s head holds until the day it matters — and the only way to find out which day that was is afterwards.

Plan an exchange

Every figure above can be checked against the providers yourself — no account, no sign-up, and nothing is held for you at any point.