I am not able to test interface itself, so I've just played a bit with this awesome review tool. http://codereview.appspot.com/40100/diff/4/1001 File instances/python-dev/detectors/tagsauditor.py (right): http://codereview.appspot.com/40100/diff/4/1001#newcode6 Line 6: ALLOWED_CHARS = '[a-z_-]+$' I would also add "." for python/namespace-specific tags like os.popen http://codereview.appspot.com/40100/diff/4/1001#newcode12 Line 12: # XXX Should we convert the name to lowercase or let the error happen? lowercase and probably convert CamelCased names to under_scored automatically http://codereview.appspot.com/40100/diff/4/1001#newcode26 Line 26: tags = [tag.strip() for tag in tags.split(',')] as our tags can not contain spaces, spaces would do better for separating tags than commas http://codereview.appspot.com/40100/diff/4/1001#newcode38 Line 38: tag_ids.append(tid) shouldn't there be calls to history component to record/notify when tags are added/removed or this is done automatically by roundup? http://codereview.appspot.com/40100/diff/4/1005 File instances/python-dev/schema.py (right): http://codereview.appspot.com/40100/diff/4/1005#newcode130 Line 130: tags_str=String() why not just tags and make it a sorted list?