Because network hashrate tends to increase, it becomes increasingly easy to create fake "historic" stale blocks. One way to be sure this is not the case is if the hash of the stale block is committed to the block chain -- in that case you can be sure the block was mined prior to the commitment block. It might be good to include ots proofs for historical headers and only accept new headers to the repo if they have an ots proof no later than 13000 blocks (~3 months) than the claimed header height or similar (or when the ots proof block's nBits specifies a difficulty no more than 2x the difficulty of the header, perhaps), or perhaps if they're from a well known widely trusted person.
Because network hashrate tends to increase, it becomes increasingly easy to create fake "historic" stale blocks. One way to be sure this is not the case is if the hash of the stale block is committed to the block chain -- in that case you can be sure the block was mined prior to the commitment block. It might be good to include ots proofs for historical headers and only accept new headers to the repo if they have an ots proof no later than 13000 blocks (~3 months) than the claimed header height or similar (or when the ots proof block's nBits specifies a difficulty no more than 2x the difficulty of the header, perhaps), or perhaps if they're from a well known widely trusted person.