mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 11:46:35 +00:00
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>
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.