Three names, one thing.

The same thing was a series in the content layer, a category in the API, and a topic in the client. Each layer was coherent on its own. Together they simply did not connect.

The break was concrete: the client asked using a topic id, the API matched on categories, and the content had never heard the word. The list came back empty, every single time.

W27 · ONE CONCEPT, ONE NAME 前端说「专题」 接口说「分类」 内容说「系列」 同一个东西 谁也不认识谁 series 全链路唯一的名字 命名不是风格问题,是接口问题.
Naming is not a style question. It is an interface question.

Vagueness bills you at integration.

Inside any one layer the name barely matters — context carries it. The bill arrives at the boundary, and by then all three sides have already been written.

Which is why naming is not aesthetics. It is an interface. It decides whether two modules can speak to each other at all.

What I did this week.

Collapsed the three vocabularies into one: series. The id is its slug, a series is a column, and a column is an entry point. Every middle layer got deleted.