From 06f12cd35c6813e529e9f807628c2156320b58ac Mon Sep 17 00:00:00 2001 From: windyboy Date: Wed, 16 Sep 2026 10:42:42 +0800 Subject: [PATCH] =?UTF-8?q?docs(acm2-75):=20=E6=B8=85=E7=90=86=20inv20b=20?= =?UTF-8?q?=E6=AE=8B=E7=95=99=E5=85=B3=E8=81=94=E5=B9=B6=E5=B0=86=E5=8F=8C?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E9=AA=8C=E6=94=B6=E6=A0=87=E8=AE=B0=E4=B8=BA?= =?UTF-8?q?=E6=9C=AA=E9=97=AD=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/specification.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/specification.md b/docs/specification.md index 6eeb8ce..df08028 100644 --- a/docs/specification.md +++ b/docs/specification.md @@ -119,7 +119,7 @@ - **INV-16** 回填与 Kafka 投递失败可重试,不回滚已提交的本地业务结果;出站请求写入结果不明时记录告警、不直接重发(`C-24`)。 - **INV-17b** 航班类消息(增量、删除)的状态变更与待发事件在同一事务提交;处理终态与回填意图在另一事务提交,且晚于 Redis 投影写成功。待发事件在处理完成前不可投递(`US-03` AC4),本句对所有类别生效。日计划的分批与静态参考数据的单事务见架构「主流程」。 - **INV-19** 日计划整包校验失败时整包不落地,既有状态与版本不变(`US-07` AC1)。运营日冲突时的处置未在需求与架构定案(`Q23`)。 -- **INV-20b** 处理器幂等(目标不变量,被 `G-FLOP-IDEMPOTENT` 阻断,当前不成立):同一消息在失败重处理与重复发现下都只产生一次业务效果。身份唯一只防「重复记录」,不防「重新执行」;逐类幂等规则补齐并回归前,依赖本条的收敛声明(`CLM-3`、`INV-31`)都不可作出。 +- **INV-20b** 处理器幂等(目标不变量,被 `G-FLOP-IDEMPOTENT` 阻断,当前不成立):同一消息在失败重处理与重复发现下都只产生一次业务效果。身份唯一只防「重复记录」,不防「重新执行」;逐类幂等规则补齐并回归前,依赖本条的收敛声明(`CLM-3`)不可作出。 - **INV-30** 非法报文进死信、合法但不支持的类型跳过留档,两者都无业务副作用、按已处理回填(`US-03` AC2);处理错误记在对应消息的处理记录上,不被外层吞掉(`US-03` AC5)。 ### 4.2 航班域 @@ -166,7 +166,7 @@ | CLM-8 | 出站交付承诺只到落信 | `C-24` | 能 | 只覆盖落信;ACK 与错误列语义未确认(`Q10`) | | CLM-9 | 处理标记的写入时刻不等于处理完成的时限 | — | 不能 | 扫描周期不构成完成时限;批次积压与单行重试都会延长实际延迟 | | CLM-10 | 容量与吞吐量级 | — | 不能 | 无实测数据,取得信箱日量、峰值与单报文上限后重估 | -| CLM-11 | 配置不完整时拒绝启动;实例排他由部署保证,无运行时跨实例互斥 | `OPS-1`、`PRE-5` | 启动拒绝能;运行时排他不能 | 不引入并行主泵或分布式锁是非目标(requirements「范围与非目标」);双实例同时启动的验收针对部署红线与启动检查 | +| CLM-11 | 配置不完整时拒绝启动;「双实例同时启动只允许一个处理」无系统侧机制承载 | `OPS-1`、`PRE-5` | 启动拒绝能;双实例验收不能 | 运行时跨实例互斥不在此版设计内——不引入并行主泵或分布式锁是非目标(requirements「范围与非目标」),单实例靠部署保证(`PRE-5`);达成方式待 `Q29` | ## 6. 待确认事项台账 @@ -214,6 +214,7 @@ | Q26 | `REF_MASTER` 的物理列、唯一键、空值存储与写入后可见时点 | 记录用类别码加识别标签识别(接口契约「静态参考数据类别与编号来源」) | admin-api 读取契约无法定稿(`C-31`) | | Q27 | Elasticsearch 历史索引、文档 ID、字段映射、成功判据、保留期与容量上限、写入结果不明的对账与幂等策略 | 历史写入确认成功才删实时数据(`D1`、`INV-28`) | 历史链路无法验收(`US-14`;`G-FLIGHT-HIST-RETENTION`) | | Q28 | `REQ_TRACK` 已结案记录的保留期取值 | 到期清理没有可依据的窗口(`G-REQ-TRACK-RETENTION`) | 请求历史清理无法实现(`US-09`) | +| Q29 | 「双实例同时启动只允许一个处理」的达成方式 | 由部署规程保证单实例(`CLM-11`);是否需要系统侧启动互斥未决 | `OPS-1` 双实例验收不闭环 | ## 7. 当前已知偏差 @@ -270,7 +271,7 @@ | CLM-9(不承诺完成时限) | `OPS-2` | 积压、处理失败、投递失败、回填失败各有指标与告警(架构「总体架构」) | | CLM-10(容量假设) | `OPS-2` | 上线前用现场量级重估 | | C-34 | `OPS-4` | 回退演练:回填了结后切回,旧系统不重处理已产生业务效果的消息;在途窗口处置见 `Q21` | -| CLM-11(单实例防线) | `OPS-1` | 配置错误启动失败测试;双实例同时启动的验收针对部署红线与启动检查,系统不提供运行时跨实例互斥 | +| CLM-11(单实例防线) | `OPS-1` | 配置错误启动失败测试可验收;「双实例同时启动只允许一个处理」未闭环——系统无运行时互斥,达成方式待 `Q29` | | C-35(测试隔离承诺) | `OPS-3` | 测试环境配置核对:独立数据库、Redis 与 Kafka 主题,不连接生产信箱 | ## 9. 契约数值