Vito
ab333d3838
feat(vocabulary): backend for native tags and categories (#241)
* feat(tags): keep unused tags in the shared vocabulary
* feat(vocabulary): add bounded tag and category reads
* feat(vocabulary): guard tag create, rename and merge
* feat(vocabulary): preview and apply category consolidation
* refactor(vocabulary): share canonical token hashing
* test(vocabulary): prove retained tags survive restore
* test(vocabulary): cover category paging tie-break and clarify contract docs
* test(vocabulary): assert rejected tag creations write nothing