I'm saying that adding those assertions was wrong in first place.
For surface exclusion it doesn't matter what current exclusion status is, furthermore it is currently impossible to read exclusions table through remote interface.
For get_ruin_set()
it needs to be able to return nil
because that's how you check if entry exists.
For add_ruin_set()
it needs to be able to overwrite existing sets. (you could modify an existing set by first getting a copy of it, then modifying the copy, then finally adding the copy back with same name)