系统规范域 · 架构与治理组

x-arch · 架构层治理

规范x-arch V1.8.3
判据指纹6bda540a
变更历史最新V1.8.3 · 2026-09-21 · 已封版
条款12 条(无机器闸 1 条)
判据标准写法 0 颗 · 非标兜底 11 颗
规则书.claude/rules/x-arch-rule.md
判据文件.claude/skills/x-spec-checker/references/x-arch-spec.md(注册表 x-arch-standard.jsonx-arch-system.json

本页分两类内容:带「派生区」标识条的方框由引擎从真相源算出,各自被内容指纹锁着、手改即红(上面这张身份表就是其中之一,版本、指纹与计数只此一处,正文一律不复述);其余都是原件,由写页的人负责,机器只能验形态、验不了对错。

一页读懂

x-arch 治理 .claude/arch/ 下并列的两个目录。业务架构 arch/business/ 放业务域的端到端设计(DDD bounded context,与 x-data 归类层一一对应),以代码为锚;系统架构 arch/system/ 每份系统规范一个目录,放系统四件套的设计件,也就是本页这样的架构页与变更历史。

治理版图

arch/business/ · 业务架构 业务域端到端设计,与 x-data 归类层一一对应 以代码为锚 · srcHash 四端保鲜 x-architect 经开发流收尾回看撰写 业务组 NS-COMMON-0001~0006 arch/system/ · 系统架构 每份系统规范一个目录 ARCH.html + CHANGELOG.md(四件套的设计件) x-meta-governor 经 /x-meta-dev 撰写 系统组闸:四件套锁步 + 标准符合 系统四件套(每份系统规范一套) 设计 架构页 · 变更历史 条款 规则书(条款书) 判据 规范 · 内嵌检测器 执法 收尾环 · 全量检测 锁步:条款认领每颗闸 · 派生区戳记 · 版本号与变更历史封版 · 规范与目录一一对应

分界可以由仓库推导:有自己规范文件的,是系统四件套,设计件住 arch/system/<规范名>/;以代码为锚、没有自己规范文件的,是业务架构。arch/business/system/mobile 描述移动端底座却没有自己的规范,所以归业务架构;arch/business/system/ 是 x-data「系统中心」的业务归类,与系统架构无关。元规范 x-standard 的设计留在 harness,不建系统架构目录。

迁移名册

还没迁成系统四件套的规范登记在系统组注册表里,只减不增:迁完一批就划掉,同批把上限 ceiling 降到登记数。新建的规范直接用 x-meta-dev 建整套,不进名册。

说明x-arch 系统组注册表(判据的一部分:同前缀注册表计入 x-arch 判据指纹,改它走 /x-meta-dev sync 升版)。pending = 迁移名册:还没迁成系统四件套的规范(元规范 x-standard 除外,其设计留在 harness)。名册只减不增 —— 迁完一份就划掉一份,同批把 ceiling 降到登记数;新建的规范直接走 /x-meta-dev tetrad 建整套,不进名册。本文件同时是成套闸 NS-COMMON-0007 与版本锁步闸 NS-COMMON-0009 的全局锚点,名册清空后也保留。
ceiling0
pending

射程与普查

本域的射程有一处特别值得说清楚:它治的是「设计件」这一类文件本身,而不是它们描述的东西。业务架构文档描述的业务、系统架构页描述的规范,都不在本域射程内 —— 本域只判这些文档在不在、成不成套、有没有随代码漂移。

包含面两个目录 + 两份注册表
  • 业务架构树域文档、变更历史与注册表 —— 以代码为锚,靠签名保鲜
  • 系统架构目录每份系统规范一个目录,放四件套的设计件
  • 系统组注册表成套闸与版本锁步闸的全局锚点,名册清空后仍保留
  • 标准名册架构页该长什么样的可机判面,棘轮名册也住这里
排除面 · 三种性质完全不同不许混为一谈
  • 结构性看不见元规范的设计不在系统架构目录里(它住框架真相源)—— 而且成套闸反过来把那个目录的存在本身判红:框架操作四件套,绝不依赖四件套
  • 在案豁免(棘轮)两张名册里登记的域整条静默,名册只准变短 —— 迁移名册与标准名册此刻都已清空,即当下零豁免:通道还在,没有任何域走在上面
  • 判据够不着两个目录各归哪个执行者写、经哪条流程写 —— 检测器只看文件内容,看不出这些

普查:射程内今天实际有多少东西

下面每一块都是机器当场数出来的,但它是快照、不随代码自动刷新 —— 每块顶上标着快照日期。

业务架构文档总数,其中文档头写着 status: active 的计为命中:

文件.claude/arch/business/**/ARCH.md
文件数13
正则^status: active$ m
命中文件13
命中次数13

快照 · 2026-09-14(不随代码自动刷新;刷新走 sync --census --date=YYYY-MM-DD)

已迁成系统四件套的架构页:

文件.claude/arch/system/*/ARCH.html
文件数1

快照 · 2026-09-14(不随代码自动刷新;刷新走 sync --census --date=YYYY-MM-DD)

设计机理:为什么长成这样

业务架构层:以代码为锚

系统架构层:四件套的设计件

改 x-arch 的路径

改判据或系统组注册表:规范简介升版本,变更历史顶部加新条目(判据指纹写「(待同步)」),回看条款、新闸补认领,跑 /x-meta-dev sync 刷新派生部分,本版写完加 --seal 封版,最后跑 -v x-archvalidate --spec=x-arch-m x-arch .claude。只改条款或本页原件区不升版,跑 sync 刷新派生区即可。

条款总表

条款标题要求守护
ARCH-A01注册表登记的业务域必须有设计文档必须.claude/arch/business/_index.md 已固化业务域表里,每一行第 2 列反引号里的文档路径(相对 arch/business/)真实存在。x-arch:NS-COMMON-0001
ARCH-A02业务架构文档头按契约写必须ARCH.md 以 frontmatter 开头,含 title、layer、status、version、describes、specRefs、sourceOfTruth 七个键;layer 写 business;status 只取 active、superseded、deprecated;describes 下 data、server、admin、client 四端键齐全,不涉及的端写 null;specRefs 列的每个名字是 references 下真实存在的规范,并且在正文里出现。x-arch:NS-COMMON-0002
ARCH-A03改了描述域代码必须回看设计并重算 srcHash必须describes 所指的四端代码变了之后,回看本域 ARCH.md、确认设计仍成立,同批升 version、重算 srcHash;某一端 srcHash 写 null,那一端就必须确实没有代码。x-arch:NS-COMMON-0003
ARCH-A04域目录必须成套必须:有 ARCH.md 的域目录同时有同级 CHANGELOG.mdx-arch:NS-COMMON-0004
ARCH-A05设计正文与版本日志分居禁止ARCH.md 的 frontmatter 出现 version-log 键;CHANGELOG.md 的 frontmatter 出现 describessrcHashsourceOfTruth 键。x-arch:NS-COMMON-0005
ARCH-A06域目录里不放白名单外的东西禁止:域目录里出现 ARCH.mdCHANGELOG.md 与子目录 parts/adr/assets/ 之外的任何条目。x-arch:NS-COMMON-0006
ARCH-B01系统规范与系统架构目录一一对应必须:references 下每份规范(元规范 x-standard 除外)要么已迁成系统四件套,即有 arch/system/规范名/ARCH.htmlCHANGELOG.md、规则书是条款书;要么登记在系统组注册表 x-arch-system.json 的迁移名册里。arch/system/ 下每个目录名都有同名规范,目录里只放 ARCH.htmlCHANGELOG.mdassets/,根下不放文件;名册按名称排序、不重复,登记数等于 ceiling。x-arch:NS-COMMON-0007
ARCH-B02架构页派生区只准引擎产出禁止:直接改架构页的派生区,包括外壳样式与脚本(带 data-x-derived 的 style、script)、页头、条款总表、判据总表、面板与普查(x-derived 元素)。x-arch:NS-COMMON-0008
ARCH-B03版本号只写一处,变更历史与它锁步必须:版本号只写在规范简介一处;CHANGELOG.md 的 frontmatter 恰为 title、spec、kind;条目标题写成「## V主.次.补 · YYYY-MM-DD」,自上而下严格递减,每条的下一行是判据指纹;最新条目等于规范简介版本,提交前已封版,且指纹等于当前判据指纹。x-arch:NS-COMMON-0009
ARCH-B04架构页原件写完,测试床点名属实必须:架构页原件区不残留骨架占位符;每颗闸都出现在测试床点名里,有床写床的路径,没有床写「待补床」;点名引用的「规范名:规则号」真实存在,点名引用的「规范名:ARCH-条款号」在该规范的条款书里真实存在;点名的床位于 x-test、真实存在,内文写着它守的每个「规范名:规则号」与「规范名:ARCH-条款号」;床的种类要写实 —— 跑本规范判据的床不写 data-bed-kind,床文件剥掉注释后就必须按调用形态出现引擎令牌(调用 extractNsRuleDetector(buildDetectorTools(checkStandardFormat( 之一,或把 check.js 作为路径段写出,或在注释以外写出 X-RULE-BEGIN-SLOT),守不变量、不跑判据的床写 data-bed-kind="invariant";两者都不是的点名判红。x-arch:NS-COMMON-0010
ARCH-B05架构页按同一套标准长,机器看得见的那一面由名册强制必须:系统架构页遵循《系统架构标准》可机判的那一面 —— 节只取自标准名册且顺序与名册一致、必填节齐全(s-censuss-ops 是条件节,不适用的域不建)、每节带 data-indexdata-kicker 编号属性、页面挂共用表达层(body 带页面类、head 引共用样式表)。判定依据是名册 x-arch-standard.json,散文版住 .claude/arch/standards/system-architecture-standard.html,两者的关系与条款书和判据相同。x-arch:NS-COMMON-0011
ARCH-C01两个目录各归一个执行者写必须arch/business/** 由 x-architect 在开发流收尾的 ARCH-SYNC 里撰写;arch/system/**、规则书与规范由 x-meta-governor 经 /x-meta-dev 撰写;开发流不写 arch/system/无机器闸:分工类(检测器只看文件内容,判不了是哪个执行者、经哪条流程写的,由工作流派发与提交审查把关)

判据实现:闸怎么咬

规则号名称认领条款
NS-COMMON-0001arch 注册表完整性ARCH-A01
NS-COMMON-0002arch 文档头完整性ARCH-A02
NS-COMMON-0003arch srcHash 四端保鲜ARCH-A03
NS-COMMON-0004域目录成套ARCH-A04
NS-COMMON-0005日志载体分离ARCH-A05
NS-COMMON-0006域目录白名单ARCH-A06
NS-COMMON-0007系统四件套成套ARCH-B01
NS-COMMON-0008架构页派生区保鲜ARCH-B02
NS-COMMON-0009四件套版本锁步ARCH-B03
NS-COMMON-0010架构页原件完整与测试床验真ARCH-B04
NS-COMMON-0011架构页遵循系统架构标准ARCH-B05

取舍与在案裁定

裁定理由
系统架构与业务架构拆成两个目录放在一起时两边的文件撞名,只能靠改名区分;拆开后名字统一为 ARCHCHANGELOG,分界由「有没有自己的规范文件」推导,不靠人记。
系统架构只有一个 ARCH.html,不再配 md 设计文档条款原文的唯一住处是规则书(按 paths 自动加载给 AI);设计理由、结构图、取舍与诚实边界放架构页。再加一份 md 设计文档,必然与规则书或架构页互相复述。代价是 AI 改设计时读 HTML 多费 token。
版本锁步锚在系统组注册表,由全量检测咬施工中改变更历史是常态,锚在变更历史上会逼出一轮一个版本号。施工轮次里由 sync 拒绝「已封版却判据变了」当轮咬住,提交前的全量检测报出未封版。
迁移名册计入 x-arch 判据指纹「只减不增」本身是判据。每迁一批,x-arch 升一次补丁版并记变更历史;改名册由提交审查把关,抬高上限同样要升版留痕。
派生区戳记写在元素属性上,不写在 HTML 注释里检测引擎对 .html 的视图会剥掉注释,写在注释里的戳记检测器看不见。
业务架构不设四件套业务架构以代码为锚,保鲜靠 srcHash 与开发流收尾回看;再给它配条款与判据,只会复述系统规范。业务架构对系统规范只经 specRefs 点名引用。
架构页不引用施工计划施工计划闭环即删,引用必成死链;x-governance 的禁引闸射程含架构页。长期结论写进本页或 harness。

测试床:凭什么信它在咬人

这些床验到了什么可复跑的事实
  • 闸真的会咬造出违规样本喂给引擎里那颗真检测器,正例必红,且报错点名到具体位置
  • 闸拆掉就不咬反向注入:临时改坏判据,对应那一发必须变绿 —— 这才证明闸没在空转
  • 射程真的覆盖到问引擎真选文件器:该进门的进门,射程外的确实不进
  • 判据写明的边界确实不咬把「刻意不管」的写法逐条钉成绿,防止后人误以为漏了
这些床证明不了什么别把它当保证
  • 不证明床真测到了那颗闸架构层的元闸只验「床存在、内文写了闸号、真调了引擎」,验不了它测的是不是那一颗
  • 不证明床被跑过点名与执行是两条独立的链:页面说「有床守着」,不等于哪个运行器真的扣了扳机
  • 不证明判据是对的床按判据当下的语义写;判据本身理解错了,床会忠实地复现这个错误

诚实边界:守不住什么

本节是承诺不是待办:做不到的明说,删掉本节等于默认宣称全覆盖。先写条款书里自认「没有机器守着」的那一条由谁兜底,再写闸射程内已知的失明点,最后写本页自己的边界。

条款书说「无机器闸」的那一条,实际由谁兜底

闸射程内已知的失明点

本页自己的边界

上面讲的是治理面的边界。这一段讲这张页面本身 —— 架构页也是被治的东西,它同样有机器管不到的地方。

本页是 x-arch 系统四件套的设计件。另三件:条款 .claude/rules/x-arch-rule.md、判据 .claude/skills/x-spec-checker/references/x-arch-spec.md、执法由写前拦截与收尾环承担。变更历史见同目录 CHANGELOG.md。页面骨架遵循《系统架构标准》,带斑马边框的区块全部由生成器产出、受内容指纹锁。