The editing token catches every edit the application makes, because
upsert_reading writes a fresh token on every write. A document edited
outside the application - by a script, or by hand - keeps its empty
token, so a stale thread's write would still match on the gravity alone
and could put advice about the old comment back.
The advice is generated from the comment as well as the gravity, so the
comment is now a second, independent guard on the write. A stale write
can only land if BOTH the gravity and the comment are unchanged.
The stored comment and the one the view sees can differ by trailing
whitespace - two of the live readings are padded - so the match is a
stripped, anchored regex rather than an exact one.
Also: the log message said the reading 'no longer holds the gravity it
was written for', but the guard is the token and the comment. It now
says what actually happened.
194 tests pass.