This topic has been one we were discussing for a while now over IRC. I also highlighted several issues with our current system in one of my recent
judgments. The staff has reached a consensus over IRC.
1) The most important point is to give labels which properly define what the run is about. If the labeling needs to be edited upon obsoletion, it shows it was not defined correctly in the first place. Specific numbering should be avoided unless it defines a maximum. In the case of minimums, new minimums may always be discovered, or other routes which shows the wrong tagging was used to define some sort of minimum.
2) All significant differentiators should be tagged where applicable. Even if this means every run for a game now has several tags. However, we should try to find the most meaningful and least arbitrary tags, so we don't end up using multiple tags to take the place of a more generic but precise singular tag. Tags which define avoiding normal gameplay do not need to have counter tags listed in other branches. Meaning, tag
walkathon and
pacifist, do not tag
uses running and
kills enemies. However, something like
warps and
forgoes warps should be tagged on both sets of applicable branches.
3) Sub-tagging is an option, and should be used. For example, regular unrelated tags on runs could be "warpless, pacifist". But where one is a subset of the other, use sub-tags: "low% - grappling hook", "low% - skeleton key".
4)
Arbitrary code is now a primary tag which should be used on runs which make use of them, and always has a sub tag. Examples of sub-tags and possible cases they may be used:
Arbitrary code - Scene (Pi)
Arbitrary code - Game ending (Fast Super Mario World, Super Metroid, Battletoads)
Arbitrary code - Level ending (Other Battletoads run)
Arbitrary code - New game(s) (SMW Snake & Pong)
Arbitrary code - Adds cheats (aforementioned rejected SMW run)
Note the above sub-tag naming is examples and can be further tuned. The important point here is the concepts, the wording is not set in stone. Don't take these examples as any anything more than examples either.
5)
Arbitrary code is a kind of exception where its counterparts which avoid
Arbitrary code don't need to be labeled as such.
6) Further amendments to adjust the above will be made as needed, but they should work within the above framework, and not try to replace it with something else.