A mempool.dat entry with a time in the future is loaded as it is, so its transaction never expires, whatever -mempoolexpiry says.
I use the current time for such an entry. Earlier times are unchanged. Open PR #36540 removes time-based expiry, which would make this change moot. I tested this with a functional test that restarts a node with its clock behind a saved entry time. It fails without the change and passes with it.
This is one of several PRs from a large audit of Bitcoin Core that I did with the help of LLM tools. The audit produced its evidence all at once, which is why the PRs arrive together. I understand each change fully and will answer review questions myself.