Make Remove refuse anything it can't prove is the replay the user chose

Review found four ways Remove could delete the wrong thing:
- A replays or cache folder that is a link or junction into Valorant's
  folder passed the lexical check. Folders are now resolved before the
  check, and Remove refuses when they overlap each other or Valorant's.
- The dialog promised Valorant still had a copy from the last listing.
  Remove now rechecks right before deleting; if that changed, it deletes
  nothing and the tile asks again with the right text.
- Keep and Remove ran beside adds. All three now run one at a time, and
  Remove refuses a file whose size or time changed since the dialog.
- Cache deletion matched by prefix. It now parses the cache name and
  matches the whole key.

Also waits for the first listing's slow read before adding in the
listing-race test; it could deadlock when the add's read came first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
c87b6961e1Dara Adedeji committed on 10/13/2026, 8:39:51 PMparentbbbd5ed

Checks

All checks passed
5 files changedLine totals unavailable