Metadata vocabulary backing search and filtering.
## Scope
- Categories with unique names
- Tags with unique names
- Many-to-many association between models and tags
- Category assignment on models
## Acceptance criteria
- [ ] A model carries many tags; a tag applies to many models
- [ ] Duplicate tag and category names rejected
- [ ] Removing a tag clears associations without deleting models
---
Blocked by: #14
keith
added this to the M2 - Data Model & Migrations milestone 2026-10-10 22:18:28 +00:00
Acceptance reconciliation at c1ef2ee: keeping open. Tags/join table exist. Model category assignment is absent; nullable-parent unique index does not guarantee unique root category names. This is a source/test review, not a newly executed crash or restore experiment. Fresh Windows suite: 291 tests, 1801 assertions, 22 skips; lint passes. PostgreSQL fixture success does not waive these feature criteria.
Acceptance reconciliation at c1ef2ee: keeping open. Tags/join table exist. Model category assignment is absent; nullable-parent unique index does not guarantee unique root category names. This is a source/test review, not a newly executed crash or restore experiment. Fresh Windows suite: 291 tests, 1801 assertions, 22 skips; lint passes. PostgreSQL fixture success does not waive these feature criteria.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Metadata vocabulary backing search and filtering.
Scope
Acceptance criteria
Blocked by: #14
Acceptance reconciliation at
c1ef2ee: keeping open. Tags/join table exist. Model category assignment is absent; nullable-parent unique index does not guarantee unique root category names. This is a source/test review, not a newly executed crash or restore experiment. Fresh Windows suite: 291 tests, 1801 assertions, 22 skips; lint passes. PostgreSQL fixture success does not waive these feature criteria.