REF-003 稳定度一致性
验证某项的稳定度不超过其依赖项的稳定度。出现 stable 项目引用 experimental 项目这样的不一致时,会报告为 warning。这是项目作用域规则,会跨越 include 加载的所有文档进行评估。
稳定度标签(experimental / review / stable 等)表示文档内项目的可信度。如果 stable 的需求依赖 experimental 的需求,那么每当依赖项变更时 stable 一侧也需要跟进,稳定度的含义将形同虚设。反方向的依赖(experimental → stable)没有问题。本规则可机械化验证稳定度标签的一致性。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
stabilityColumn | string | ✓ | 存放稳定度的列名 |
stabilityOrder | string[] | ✓ | 稳定度的排列顺序(从不稳定到稳定) |
definitions | string | ✓ | 定义 ID 的文件 glob |
references | string[] | ✓ | 引用 ID 的文件 glob 数组 |
idColumn | string | — | 定义文件中存放 ID 的列名(默认值:ID) |
idPattern | string | — | 视为 ID 的值的正则表达式 |
stabilityOrder 按数组的索引顺序视为「越来越稳定」。["experimental", "review", "stable"] 中 stable 最稳定。引用侧行的稳定度比依赖目标项目的稳定度更稳定(索引更大)时,即视为违例。
docs/requirements.md:| ID | 内容 | Stability || ------ | ---------------- | ------------ || REQ-01 | 用户注册 | experimental |
docs/design.md:| ID | 关联 | Stability || ------ | ------- | --------- || DSN-01 | REQ-01 | stable |设置 stabilityOrder: ["experimental", "review", "stable"] 时,stable 的 DSN-01 引用 experimental 的 REQ-01,因此判定为违例。
docs/design.md line 4 warning Item "REQ-01" has stability "experimental" in docs/requirements.md, but is referenced from a row with stability "stable" REF-003将引用方的稳定度与依赖目标对齐,或提升依赖目标的稳定度。
docs/requirements.md:| ID | 内容 | Stability || ------ | ---------------- | --------- || REQ-01 | 用户注册 | stable |{ "rule": "ref003", "options": { "stabilityColumn": "Stability", "stabilityOrder": ["experimental", "review", "stable"], "definitions": "**/requirements.md", "references": ["**/design.md", "**/tests.md"], "idColumn": "ID", "idPattern": "^REQ-\\d+$" }}- REF-002 ID 的定义与引用 — 稳定度的前提:ID 定义 / 引用的一致性
- TBL-003 允许值 — 验证稳定度列的值是否在允许列表中
- TBL-005 列间约束 — 单文件内稳定度与其它列的一致性验证