docs: 拆分契约/前提/参数文档,合并消息生命周期并收敛设计裁决
- design.md 合并 message-lifecycle.md(后者保留跳转 stub),去重并改用稳定 ID 引用 - 新增 invariants.md(前提/不变量/声明边界/验证映射)、contracts.md(对外条款与 Q 台账)、 reference.md(参数/指标/模块/错误分类) - architecture/flight-state/user-stories/README 同步重划引用;README 废止「引用章节号」 - 裁决收敛:R 按超期而非次数放弃、清除前提含放弃清单、航班表写者互斥、head-deadline 仅告警、 超期判据用本地入队时间、投递批次读取时刻冻结、schd 只进不退与条件标记、FLID 复用为前提 - 删除 runbooks 与 CI 防漂移校验:设计阶段不产出面向执行期的产物 Refs: ACM2-42..51
This commit is contained in:
+57
-10
@@ -1,16 +1,63 @@
|
||||
# 设计文档入口
|
||||
|
||||
当前实现核对日期:2026-09-10(代码基线 `eea1120`)。文档哈希不在此行回填,以 `git log -- docs/` 为准。文档中的目标能力不等于已实现;测试通过不等于现场已发布。
|
||||
实现核对日期:2026-09-11(代码基线以 `git log -- docs/` 为准)。文档描述**目标设计**,不等于已实现;测试通过不等于现场已发布。进度与缺口在 Plane(ACM2)跟踪;文档只记录「对外主张当前是否可声明」,见 [invariants.md](invariants.md) 声明边界。
|
||||
|
||||
## 1. 按读者选入口
|
||||
|
||||
| 你是谁 | 从哪读起 |
|
||||
|---|---|
|
||||
| 新开发者 | [invariants.md](invariants.md)(前提 / 不变量 / 声明边界)→ [design.md](design.md)(机制)→ [reference.md](reference.md)(参数 / 指标 / 模块) |
|
||||
| 库方 / 上游接口人 | [contracts.md](contracts.md)(条款 `C-x` 与待确认 `Q`) |
|
||||
| 值班主任 / 运维 | [reference.md](reference.md)(参数与指标)→ [invariants.md](invariants.md)(哪些主张当前不可声明)。执行规程在上线/切流前另立,设计阶段只保留前置条件与红线 |
|
||||
| 评审 / PR 作者 | [invariants.md](invariants.md) + 本文 §5 评审清单 |
|
||||
|
||||
## 2. 文档职责(一个事实只有一处定义)
|
||||
|
||||
| 文档 | 唯一职责 |
|
||||
|---|---|
|
||||
| [architecture.md](architecture.md) | 系统边界、模块职责、FIFO、单写者、数据库归属。 |
|
||||
| [design.md](design.md) | 管道流程、处理/投递状态、恢复与运行配置。 |
|
||||
| [message-lifecycle.md](message-lifecycle.md) | 信箱消息全生命周期的唯一现行规范:五事实、状态、水位、回填与清除。 |
|
||||
| [flight-state.md](flight-state.md) | 航班设计的唯一现行规范:当前态、表关系、事务流程和开放问题。 |
|
||||
| [user-stories.md](user-stories.md) | US/OPS 验收目标,不能用“当前基础”替代完成证据。 |
|
||||
| [旧系统行为基线](legacy/msgexchange-api-legacy-user-stories.md) | msgexchange-api 现役行为基线与 KEEP/FIX 来源,Q8 对拍参考;不作为 v2 设计依据。 |
|
||||
| [legacy/decision-flight-state-history.md](legacy/decision-flight-state-history.md) | 已撤销方案的存档说明;现行规则仍以 `flight-state.md` 为准。 |
|
||||
| [SIS 规范](legacy/SIS_AODB_RMS-V0.1.md) / [XSD](legacy/unisysaodbsis.xsd) | 外部协议事实;即使在 legacy 目录仍是兼容依据。 |
|
||||
| [architecture.md](architecture.md) | 系统边界、模块职责、存储归属、架构决策(D1–D4)。 |
|
||||
| [invariants.md](invariants.md) | 前提 `PRE-x`、不变量 `INV-x`、声明边界 `CLM-x`、验证映射。 |
|
||||
| [design.md](design.md) | 管道机制:收报·水位、主泵·处理·事务边界、回填、投递、作业与归档。 |
|
||||
| [contracts.md](contracts.md) | 对外承诺与要求(`C-x`)、待确认事项(`Q`)。 |
|
||||
| [reference.md](reference.md) | 参数注册表、指标与健康、模块入口、错误分类。 |
|
||||
| [flight-state.md](flight-state.md) | 航班域模型与合并语义。 |
|
||||
| [user-stories.md](user-stories.md) | US / OPS 验收目标。 |
|
||||
| [legacy/](legacy/) | 现役行为基线与外部协议事实([SIS 规范](legacy/SIS_AODB_RMS-V0.1.md)、[XSD](legacy/unisysaodbsis.xsd));与现行文档冲突时以 SIS 为准。 |
|
||||
|
||||
维护规则:架构写约束,设计写机制,规范(`flight-state.md`、`message-lifecycle.md`)写唯一规则,故事写目标,Plane 跟踪工作。不要在多份文档复制阶段清单;同一规则只允许一处定义,其他文档引用章节号。外部协议事实([SIS 规范](legacy/SIS_AODB_RMS-V0.1.md)、[XSD](legacy/unisysaodbsis.xsd))与现行文档冲突时以 SIS 为准;legacy 行为基线只描述现役行为。
|
||||
`message-lifecycle.md` 已并入 design.md,文件仅保留跳转说明。
|
||||
|
||||
## 3. 事实归属表
|
||||
|
||||
| 事实 | 唯一归属 | 其他文档怎么写 |
|
||||
|---|---|---|
|
||||
| 水位 `W`、空洞判定与推进条件 | design「收报与水位」 | contracts 写对库方的承诺 `C-1`–`C-3`;reference 写参数 |
|
||||
| 保留期下界 `R_keep`、清除前置条件 | contracts「保留与清除」 | design 只引 `C-x`;执行步骤在上线前另立 |
|
||||
| 处理标记值集与写权限 | contracts `C-5` | design 只写行为约束「只写空标记、不回撤、不覆盖」(`INV-6`) |
|
||||
| 回填四结果、放弃语义、`R` 的作用 | design「回填」 | invariants 记结论与可声明性 |
|
||||
| `head-deadline` / 退避 / `claim-batch` 等取值 | reference「参数」 | design 只引 `PARAM:x` |
|
||||
| 消费权排他、ID 不复位、报文不可变、时钟、单实例 | invariants「前提」 | 其他文档只引 `PRE-x` |
|
||||
| 航班身份、合并语义、`STATE_VERSION`、`OPERATION_DAY` | flight-state.md | design 只引域规则 |
|
||||
| 对外术语(落信 / 入站 / 库方 / 处理标记) | contracts「术语」 | — |
|
||||
|
||||
## 4. 引用与写作纪律
|
||||
|
||||
1. **引用只用稳定 ID**:`PRE-x`、`INV-x`、`CLM-x`、`C-x`、`PARAM:x`、`[G-x]`、`[Q-x]`、`US-xx`、`ACM2-nn`。**不再用章节号做跨文档引用。**
|
||||
本条取代旧版 README 的「其他文档引用章节号」规则:章节号随增删章节腐烂,指针失效后必然被改写为复述——重构前实测有 30 处「唯一定义处」与 33 处跨文档章节引用。
|
||||
2. 指针之后**不再复述**被指内容。若两处需要同一段话,说明它放错了位置。
|
||||
3. 文档不记进度,只记「主张是否可对外声明」。进度在 Plane。
|
||||
4. 机制段只写「是什么 / 为什么」。验收 → invariants 验证映射;前置条件、红线与库方方案 → contracts / invariants;参数默认值 → reference;操作步骤在上线/切流前另立规程,设计阶段不写。一句话一个主张;加粗每节 ≤ 3 处。
|
||||
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.md;design.md 由 design.md + message-lifecycle.md 合并(后者保留跳转 stub);跨文档引用由章节号改为稳定 ID。
|
||||
- 不建 runbooks.md:设计阶段没有可执行的运行环境,操作步骤在上线/切流前另立(见 Plane ACM2-48);设计阶段需要的只有前置条件与红线,它们分别在 contracts(`C-7`–`C-12`)与 invariants(CLM-x)。
|
||||
- 目标设计与交付状态分离:未交付、未确认、不可声明的主张见 invariants.md 的声明边界与 Plane ACM2,不在正文里逐段标注。
|
||||
|
||||
Reference in New Issue
Block a user