066dc45a25
build / build (push) Successful in 1m34s
- ES `_stats` 写计数是分片生命周期统计(官方文档:分片迁到另一节点时该分片统计清零), 索引 uuid 不变不绑定统计生命周期,清零后重新累计到同一数值(ABA)无法排除。 撤销 r36 的"写计数器栅栏"授权:既不落盘也不读取,统计仅作诊断。 - 删除型恢复(独占 `_create`)只有在本次尝试开始时不存在任何恢复意图、且文档确实缺失时 才可重做;既存 restore-mark-intent 配缺失文档一律 held、零写入。 - 保留可证明路径:marker 仍在且世代一致的 clean 收尾重试;文档仍是 applied 结果、 世代一致的 DELETE 补偿重试。 - 新增 ABA 反例(传输层 stats 故障模拟、真实 ES 文档写删、未重启共享 ES); B19 / clean / delete 安全正例全回归。 验证(真实 PG/ES/MinIO 隔离夹具): - ABA 反例:旧代码 RED(restoration must be held, not rebuilt),新代码 PASS - 索引/恢复回归 13 项 PASS - 回滚回归 2 项 PASS - make verify 16 项 success(identity 仅 CI 可核) 未部署、未写生产/云、未重启共享 ES。