The docs in section 25.3.1 say that archive_command should check if the target file already exists and fail in that case. It seems that this is not entirely true; the command should succeed if the target file already exists and its content is the same as the source. This is explicitly mentioned in section 26.2.9 for the case of cascaded replication with a shared archive, but I understand that this is actually needed in all cases. I encountered this during a failed attempt at promotion, but there are likely to be other cases. Quoting David Steele from the -general mailing list:
"Duplicate WAL is possible in *all* cases. A trivial example is that Postgres calls archive_command and it succeeds but an error happens (e.g. network) right before Postgres is notified. It will wait a bit and try the same WAL segment again."
Sure, that is possible. But it is also possible that the network error caused the file to be short, but an identical prefix of what it is supposed to be. Or maybe it was corrupted by the error, and so not even an identical prefix. The possibilities are endless, and an example cannot cover all of them while still usefully serving as an example. There are canned systems for handling this more thoroughly, and you should look into using one of them.