Files
hepu/docs/handover/04_155条证据适用边界.md
aomin a7605ef8b8 chore(repo): 导入 M-Z 业务底座 V1.9 基线并建立仓库规范
按周工交付的 SEC-Z-01 清理后源码建立 M-Z 主干,并按 Git 仓库惯例重排目录。

- aomin-gateway/  后端工程 87 文件,原样保留,路径与构建命令未变
- demo/           演示前端与设备模拟器 9 文件(原 02_前端与设备端),非正式三端
- docs/handover/  交付与安全清理材料 6 份,内容未改
- docs/contract/  J-00 规格、OpenAPI、内部五接口、状态机、Mock 样例
- docs/reference/ 指纹与校验清单,含 84 个源码文件的 sha256 清单

目录重排只动位置不动内容:源码树 84 文件哈希与交付一致,逐文件自校验通过;
12 条 Flyway 迁移与交付包内镜像逐字节一致。

未纳入:迁移镜像目录(与工程内一套重复,改留指纹)、target/、证据 raw、
应急恢复脚本、评审用虚构台账数据。

安全:SEC-Z-01 15 处明文已清零,导入前重新扫描无新增命中,本仓库无历史污染。
行尾按交付字节原样保存(.gitattributes 设 * -text),不做归一化以免整树摘要失效。
2026-11-13 17:32:37 +08:00

110 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 哈希与构建说明。*