Files
computer-playbook/tests/integration/meta/categories
kevinveenbirkenbachandClaude Opus 5 851795f794 feat(categories): give every category a hanzi label
Adds a `hanzi` field to every node in meta/categories.yml plus a lint that
keeps it there. The labels are compact two-character fragments that compose
into a display path (sys-ctl-cln reads as 系统·控制·清理), so a category tree
that is otherwise only navigable by dash-joined role prefixes gains a short
human-facing form.

The lint asserts presence on every node and uniqueness among siblings, not
across the whole tree: the labels are path fragments and repeat across
branches on purpose (web-svc and svc both carry 服务), so sibling scope is
what actually guarantees a unique display path.

test_paths.py gained `hanzi` in its attribute skip list; without it the new
key reads as a sub-category and the test demands roles/web-hanzi,
roles/svc-hanzi and friends.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 20:09:53 +02:00
..

Category Tests 🗂️

Integration tests that validate meta/categories.yml: every declared category path MUST correspond to an existing directory under roles/, invokable: true MUST NOT appear on any descendant of an already-invokable ancestor, and every category MUST declare a hanzi label that is unique among its siblings.

Tests in this directory MUST only cover the category hierarchy itself. Tests for application_id classification driven by invokable_paths.py MUST live under tests/integration/roles/applications/id/.

For framework, directory layout, and make test-integration usage see integration.md.