Files
msgexchange-v2/docs

设计文档入口

实现核对日期:2026-09-11(代码基线以 git log -- docs/ 为准)。文档描述目标设计,不等于已实现;测试通过不等于现场已发布。进度与缺口在 Plane(ACM2)跟踪;文档只记录「对外主张当前是否可声明」,见 invariants.md 声明边界。

1. 按读者选入口

你是谁 从哪读起
新开发者 invariants.md(前提 / 不变量 / 声明边界)→ design.md(机制)→ reference.md(参数 / 指标 / 模块)
库方 / 上游接口人 contracts.md(条款 C-x 与待确认 Q
值班主任 / 运维 reference.md(参数与指标)→ invariants.md(哪些主张当前不可声明)。执行规程在上线/切流前另立,设计阶段只保留前置条件与红线
评审 / PR 作者 invariants.md + 本文 §5 评审清单

2. 文档职责(一个事实只有一处定义)

文档 唯一职责
architecture.md 系统边界、模块职责、存储归属、架构决策(D1–D4)。
invariants.md 前提 PRE-x、不变量 INV-x、声明边界 CLM-x、验证映射。
design.md 管道机制:收报·水位、主泵·处理·事务边界、回填、投递、作业与归档。
contracts.md 对外承诺与要求(C-x)、待确认事项(Q)。
reference.md 参数注册表、指标与健康、模块入口、错误分类。
flight-state.md 航班域模型与合并语义。
user-stories.md US / OPS 验收目标。
legacy/ 现役行为基线与外部协议事实(SIS 规范XSD)。外部协议事实(报文结构、字段语义、上游行为)以 SIS/XSD 为准;legacy 现役行为只是基线,已知缺陷不作依据;与本系统目标设计的已知差异见 C-25/C-26,确认状态见 Q13/Q14

3. 事实归属表

事实 唯一归属 其他文档怎么写
水位 W、空洞判定与推进条件 design「收报与水位」 contracts 写对库方的承诺 C-1C-3reference 写参数
保留期下界 R_keep、清除前置条件 contracts「保留与清除」 design 只引 C-x;执行步骤在上线前另立
处理标记值集与写权限 contracts C-5 design 只写行为约束「只写空标记、不回撤、不覆盖」(INV-7
回填四结果、放弃语义、R 的作用 design「回填」 invariants 记结论与可声明性
退避 / claim-batch / 回填期限等取值 reference「参数」 design 只引 PARAM:x
消费权排他、ID 不复位、报文不可变、时钟、单实例 invariants「前提」 其他文档只引 PRE-x
航班身份、合并语义、STATE_VERSIONOPERATION_DAY flight-state.md design 只引域规则
对外术语(落信 / 入站 / 库方 / 处理标记) contracts「术语」

4. 引用与写作纪律

  1. 引用只用稳定 IDPRE-xINV-xCLM-xC-xD-xOPS-xPARAM:x[G-x][Q-x]US-xxACM2-nn不再用章节号做跨文档引用。 本条取代旧版 README 的「其他文档引用章节号」规则:章节号随增删章节腐烂,指针失效后必然被改写为复述——重构前实测有 30 处「唯一定义处」与 33 处跨文档章节引用。
  2. 指针之后不再复述被指内容。若两处需要同一段话,说明它放错了位置。
  3. 文档不记进度,只记「主张是否可对外声明」。进度在 Plane。
  4. 机制段只写「是什么 / 为什么」。验收 → invariants 验证映射;前置条件、红线与库方方案 → contracts / invariants;参数默认值 → reference;操作步骤在上线/切流前另立规程,设计阶段不写。一句话一个主张;只强调关键结论,避免整段加粗。
  5. 数值只有两个家:参数默认值与指标名在 reference.md;契约数值(保留期、值集、下界)在 contracts.md。

5. 维护清单

Q 答复落地(4 步):① 在 contracts.md 就地补结论与日期 → ② 改 reference.md 的默认值与「依据」列 → ③ 机制有变才改 design.md → ④ 在 invariants.md 的 CLM 上划掉挂起。

PR 评审 4 问:新事实是否已有归属?是否复述了别处?是否用了稳定 ID?是否把运维 / 验收写进了机制段?

尺寸触发器design.md 超过约 800 行才按子系统再拆;invariants.md 超过两页先怀疑混进了机制。

6. 当前状态

  • 2026-09-11 文档体系重构:新增 invariants.md / contracts.md / reference.mddesign.md 由 design.md + message-lifecycle.md 合并,后者于 2026-09-12 删除(内容已全部并入 design.md);跨文档引用由章节号改为稳定 ID。
  • 不建 runbooks.md:设计阶段没有可执行的运行环境,操作步骤在上线/切流前另立(见 Plane ACM2-48);设计阶段需要的只有前置条件与红线,它们分别在 contracts(C-7C-12)与 invariantsCLM-x)。
  • 目标设计与交付状态分离:未交付、未确认、不可声明的主张见 invariants.md 的声明边界与 Plane ACM2,不在正文里逐段标注。