The UCI specification does not explain that:
For me, seldepth was always the largest depth that was ever searched on that "go" command. Consequently, seldepth is always greater or equal depth. I do not count qsearch.* seldepth <x>
selective search depth in plies,
if the engine sends seldepth there must also be a "depth" present in the same string.
For Stockfish, seldepth is the length of the PV. For some reason, it can happen that the PV is shorter than depth, and consequently seldepth can be smaller than depth.
I find my understanding more plausible, but the following example from the UCI specification might indicate that I am wrong:
However this might also be the output when the search is started at depth 1, but not a single move has been searched.info depth 1 seldepth 0