This may have been suggested elsewhere, but it may also be worth considering (in conjunction with some other changes above) a brown-out period.
Maybe all to-be-archived packages are replaced with a stub opam file that has it’s build section replaced with echo "this package is being archived, if you need it please respond at ISSUE" && exit 1
.
And after some time these files are then removed. I’m not entirely sure how this would interact with switches that just add opam-archive as an additional repository, though.
Alternatively, they could be removed for a couple days, and then put back for some time while issues are filed etc, then removed ‘for good’