Okay, I think I'm getting the hang of this code, and I'm pretty sure it is not correct. There are two ways check_expected_tools can be tricked out of warning that "added" is missing.
1. Do a successful retract. This means that expected_differences will be non-empty from the retract clause, and so the added clause cannot set missing_errors.
2. Have other missing versions. This means that the "added" clause will set missing_errors, but the "missing" clause will overwrite its value. There will be an error, but it won't mention "added".
Okay, I think I'm getting the hang of this code, and I'm pretty sure it is not correct. There are two ways check_expected_ tools can be tricked out of warning that "added" is missing.
1. Do a successful retract. This means that expected_ differences will be non-empty from the retract clause, and so the added clause cannot set missing_errors.
2. Have other missing versions. This means that the "added" clause will set missing_errors, but the "missing" clause will overwrite its value. There will be an error, but it won't mention "added".
Other comments below.