So, this is perhaps not a problem with the error message as such...
This error occurs during the last stage of edit submission, right before the suggested edit is created in the database. At this stage, there are a handful of sanity-checks that run, to make sure that:
- There isn't already another suggested edit pending
- All submitted tags exist
- The normalized title, body and tags aren't all empty
This is not the complete set of validation checks - those run earlier, and there are a LOT more of them. But if any of these checks fail, the routine throws an exception and the request fails with a 500 error (and an appropriately opaque error is displayed to the editor).
Arguably, check #2 is a bit of an odd one out since it doesn't actually prevent the creation of an invalid suggestion so much as it just enforces some constraints on the content of that suggestion (and nowhere near all of the necessary constraints - for example, it doesn't check for the use of moderator-only or blacklisted tags). It doesn't even do anything to prevent those weird race conditions wherein a tag is removed by the system mid-edit, since there's no telling how long the suggestion will sit in the queue.
But those oddities aren't the real problem here. The problem is that it performs a check that isn't done anywhere else: it disallows tags that exist but have a use-count set to 0 in the Tags table.
Try this: instead of suggesting a 0-use tag, suggest an edit with a completely bogus tag, like lskjfslkaafi. You get a nice detailed error back immediately.
Or try this: suggest the addition of a tag that has been removed from all questions but hasn't had its internal use-count updated yet (tag name autocomplete lists a number next to it). It goes through just fine.
Better yet, try this: as a brand-new user with 1 rep, try asking a question and using a 0-use tag. The system lets you do so without complaint.
In short, while preventing the addition of extant but unused tags might actually be a good idea... It isn't enforced anywhere else. So I would consider that the real bug here: the last-minute sanity-check doesn't match the rest of the validation performed on the edit.
Recommended fix:
Either remove sanity-check #2 entirely, or bring it in line with the rest of the tag validation (which is to say, simply verify that the tags exist, and ignore how often they've been used).