マイグレーションせずにバージョン11にアップデートするインスタンスが出てきそうなので一応立てときます。
https://github.com/syuilo/misskey/pull/3046 で既知のリモートユーザーのインスタンスのデータベースがリセットされた時に修復する処理が追加されました。
この処理はAPI(users/show)を実行した時に、取得済みのリモートユーザーの情報が古い場合に実行されます。
取得済みのリモートユーザーの情報をいつ取得したかはlastFetchedAtプロパティに保存されていました。
しかし、10.96.0からupdatePerson関数が実行されるとlastFetchedAtが更新されるようになりました。
https://github.com/syuilo/misskey/pull/4510
実際には取得されていなくてもlastFetchedAtが更新され、取得された扱いになっています。
これによりlastFetchedAtが情報が古いと判定されるしきい値を超えて更新されないことがなくなったため修復処理が自動で実行されることがほぼなくなりました。
updatePersonは、ユーザー情報の自動修復がされた後か、
inboxに来て署名が検証された後 (検証できているということはユーザー情報が正常ということ)
にしか実行されないので
しかし、10.96.0からupdatePerson関数が実行されるとlastFetchedAtが更新されるようになりました。
のタイミングでおかしくなったわけではないと思います。
いや、ユーザー情報が不正の場合updatePersonでの事後のlastFetchedAt更新が走らないので
やっぱり該当しそう。
Replay, Renote, Quote で参照されたNoteに要修復ユーザーがいた時に
古かったらupdatePersonを試みる (lastFetchdAt更新 => update => lastFetchdAt更新) しているところで意図せず日付が更新されてしまう
最初のlastFetchdAt更新さえなければ、要修復ユーザーの場合はupdateがコケるので最後のlastFetchdAt更新も発動しないので問題ない。