At present a revision is usually identified by a revisionID in most functions. Thus a public and visible revision, a suppressed (RevisionDeleted) revision, and an oversighted revision, all are encoded and identified by the revision ID.
Normal deleted revisions are the sole exception - they are identified by a timestamp. This has two problems:
1/ Timestamp (to the precision used to identify a deleted revision: YYYYMMDDHHMMSS) may in some cases not be unique.
2/ Deleted diffs and revisions can't be identified from any link prior to deletion, since upon deletion they switch from being identified by revision ID, to being identified by timestamp. This prevents easy lookup of a diff (eg when a privacy or dispute arises), preventing admins, checkusers and others from using a diff to check up on a matter if one of the revisions in the diff has been deleted, and seems to prevent diffs working at all, other than the simple case of comparing two sequential revisions.
1/ All revisions, deleted or visible, to be identified by their revision ID, not timestamp or other identifier. (This may involve a schema change to deleted revisions handling.)
2/ A user who can see the text of both revisions in a diff (eg specified and next, specified and prev, or 2 specified revisions), is always able to view the diff between them; the fact one or both may have been deleted doesn't break this functionality.