# 155 条作者证据的适用边界(Z-02 附件) | 项 | 内容 | |---|---| | 依据 | AM-S1-GOV-020 §4.4「Z-02:……现有 155 条作者证据的适用边界;若作为清理后当前结果,必须真实重跑」 | | 处理结论 | **已真实重跑**,不是沿用清理前结果 | | 批次号 | `R20261113-112443` | | 结果 | **155 条 / 通过 155 / 未过 0**,11 组脚本 **失败 0 组** | --- ## 一、这 155 条是什么 | 证据文件 | 条数 | 覆盖内容 | 耗时 | |---|---|---|---| | `05_SOS链路.json` | —(非用例) | 单次闭环的原始请求/响应记录,不作计数 | 8.9s(与下一项同组) | | `06_命令链.json` | 23 | 命令七态、回执、幂等、状态机边界 | 58.6s | | `06_异常与权限.json` | 28 | 异常分支与对象级权限 | 同上组 | | `07_告警失败不吞事件.json` | 5 | 故障注入:规则异常 / 库异常 / 重试 / 死信 | 84.6s | | `08_闭环后半段.json` | 13 | 通知、家属确认、处置关闭 | 22.0s | | `09_数据范围.json` | 16 | 数据权限与可见范围 | 19.9s | | `10_摘要与状态防护.json` | 15 | rawRef 摘要、状态不可回退 | 34.0s | | `11_超窗与死信.json` | 15 | 时间源分流、退避、死信、审计回滚 | 286.2s | | `12_合并与替代.json` | 6 | 连续触发的合并与 superseded | 77.7s | | `13_GOV008整改.json` | 16 | GOV-008 定点整改项 | 105.8s | | `13_分区与一致性.json` | 8 | 分区维护、计数一致性 | 18.4s | | `14_命令节点闭环.json` | 10 | 领取节点、代次、租约、错节点拒收 | 42.7s | | **合计** | **155** | — | 约 13 分钟 | --- ## 二、为什么必须重跑(不是"为了好看") 清理动了三处会影响执行的东西: 1. **`application.yml` 的 `password`** 由「带默认值」改成「无默认值 + 缺参中止」——启动条件变了; 2. **12 个证据脚本** 的口令来源由「环境变量或内置默认」改成「只认环境变量」——脚本启动条件变了; 3. **`GatewayApplication`** 增加启动守卫——可执行产物变了。 换句话说,**清理前的 155 条是在"另一套启动条件"下跑出来的**,直接拿来当"清理后的当前结果"属于沿用旧结果。所以按 §4.4 那句"必须真实重跑"执行。 重跑后源码树摘要、jar 摘要、批次号全部更新,见 `03`。 --- ## 三、这批证据能证明什么 | 能证明 | 依据 | |---|---| | 155 条在**这一棵源码树**(`5E9F894B…`)、**这一个 jar**(`1F38F527…`)、契约 `1.8.1`、迁移 `1.0.28` 上真实执行过 | 每份结果 JSON 的 `_meta` + `raw/_execution_manifest.json` | | 每组是哪个脚本、什么参数、几点开始几点结束、耗时多少、退出码几 | `raw/_run_logs/*.log`(11 份完整 stdout+stderr) | | 失败项不会被藏起来 | 清单外的结果自动标「历史结果补充索引」,**不计入通过数**;本次该数为 **0** | | 清理没有破坏原有功能 | 与清理前同为 155/155,无新增失败 | --- ## 四、这批证据**不能**证明什么(必须写明,否则就是夸大) | 不能证明 | 说明 | |---|---| | **不是接收方复验** | 这是**作者自测**。按 §9.2 第 4 条,收到文件 ≠ 接收通过;A 类关闭要谢工、陈工签认,本件不构成关闭 | | **不含并发** | `v20_node_test.py` 是串行 10 条,**没有 Thread / 线程池 / 并发 PULL**。并发领取、节点与租约不匹配、重复/乱序/迟到回执,由谢工按完整矩阵补测 | | **不含真机** | 全部是接口级与故障注入。真实设备的上报、断连、无恢复帧场景,要等黄工真机窗口 | | **不代表生产性能** | 单机、本地 MySQL、单实例;没有压测、没有长稳 | | **不覆盖前端与小程序** | 只覆盖 M-Z 业务层与内部契约 | | **不是重复性统计** | 每项跑一次。偶发失败只能靠重跑发现,本批失败 0 不代表永不失败 | | **不覆盖 A-Z-02「停机超窗」的完整场景** | 有故障注入与死信验证,但"停服 60 分钟以上再起、事件被处理"需在共同环境由谢工/陈工复验 | --- ## 五、怎么复跑(陈工/谢工可按原样执行) ```bash # 1) 先起服务(必须带口令) set DB_PASS=<口令> java -jar aomin-gateway-0.0.1-SNAPSHOT.jar --server.port=8080 --server.address=0.0.0.0 # 2) 跑全部 11 组(约 13 分钟) cd 06_统一闭环题自测证据 python run_all_evidence.py # 产出 raw/_execution_manifest.json + raw/_run_logs/*.log python stamp_evidence.py # 给每份结果写 _meta.execution python count_evidence.py # 对账,exit 0 = 155 条一致 ``` 前置环境变量(缺一个都会失败或跳项): | 变量 | 用途 | 缺失后果 | |---|---|---| | `DB_PASS` | 应用启动 | **启动中止**(退出码 1) | | `AOMIN_DB_PASS` | 12 个证据脚本 | **脚本退出**,提示设置方法 | | `AOMIN_MYSQL` | mysql 客户端路径 | 找不到命令,相关断言失败 | | `AOMIN_LOG` | 应用日志路径(`v17` 读横幅合并日志) | 误报"跳过 0 次" | | `NO_PROXY` | 本机回环不走代理 | 报 `10061`,与用例无关 | --- ## 六、复验入口(对应 GOV-011 / GOV-016 的 A 类) | 关注点 | 脚本 | 建议核对 | |---|---|---| | A-Z-01 命令节点与代次 | `v20_node_test.py`(10 条)+ `cmd_chain_test.py`(23 条) | 领取后 `claimed_node_id` 落库、错节点 `NODE_MISMATCH`、历史空节点 `NODE_UNKNOWN`、旧节点+新代次仍被拒 | | A-Z-02 超窗补偿 | `v16_fix_test.py`(15 条)+ `alarm_retry_test.py`(5 条) | 无时间窗过滤、`receive_time` 库端打戳、退避与死信、人工回放 | | A-Z-03 审计可靠性 | `v16_fix_test.py` 的审计回滚段 | 审计写失败 → 业务整条回滚;`audit_fail_log` 可查可补录;重启后不清零 | 复验请填:**结论(通过/失败/未执行/不适用)+ 证据位置 + 日期**。作者不单方面宣布关闭。 --- *关联:`01` 差异清单、`02` 扫描报告、`03` 哈希与构建说明。*