Design systems have a mortality pattern. They are born in enthusiasm, adopted in a honeymoon of consistency, and then — component by component, exception by exception — they drift. Two years in, the system describes an application that no longer exists. The failure is rarely aesthetic. It is governmental.
Tokens are the constitution
Everything visual should trace to a token, and every token should trace to a decision. The moment a hex code appears inline, the system has a competitor. We enforce this mechanically: a lint rule fails any PR containing a raw color, shadow, or spacing value outside the token files. Exceptions require a comment linking to an issue — which means exceptions are visible, countable, and eventually resolvable.
Semantic tokens (surface, accent, danger) age better than descriptive ones (blue-500). Themes, dark mode, and rebrands become table edits instead of codebase migrations.
Components need owners, not authors
Every component in our system has a named owner and a health status: stable, deprecated, or incubating. Incubating components live in the consuming app until a second consumer appears — premature promotion to the shared library is how systems fill with half-APIs. Deprecations ship with codemods; a deprecation without a migration path is just a broken promise with documentation.
The system survives when contribution is cheaper than divergence. That is the entire game.