From 48ab9d55e735aa8b59903365bbe7fc284fbad0e6 Mon Sep 17 00:00:00 2001 From: Ruixiang Du Date: Mon, 6 Jul 2026 09:22:04 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20ADR=200003=20=E2=80=94=20include-prefix?= =?UTF-8?q?=20short-form=20registry=20(xmnav,=20xmmsg)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/adr/0003-naming-and-branding.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/adr/0003-naming-and-branding.md b/docs/adr/0003-naming-and-branding.md index edb49e6..ec820de 100644 --- a/docs/adr/0003-naming-and-branding.md +++ b/docs/adr/0003-naming-and-branding.md @@ -66,6 +66,17 @@ The **foundation owns the root namespace**: xmBase's shared vocabulary lives unq Non-C++ components: **xmBoard** (KiCAD) has no code namespace; **xmFirmware** (Zephyr is C) uses a C identifier prefix `xm_…`. +**Include prefix (header install directory).** The default is `xm` + function word, matching the component (`xmbase/`, `xmdriver/`). Because the include prefix is typed in every consumer file, a long function word may register a short form — the registry is authoritative, one short form per component, decided at component creation: + +| Component | Include prefix | +|---|---| +| xmBase | `xmbase/` | +| xmDriver | `xmdriver/` | +| xmNavigation | `xmnav/` | +| xmMessaging (planned) | `xmmsg/` | + +Everything else keeps the full word: repository names, umbrella pin paths, C++ namespaces, CMake packages/targets, and package names never abbreviate. + ### 5. Derivation test The scheme is consistent iff all three artifacts derive mechanically from one function word: