feat: add official full pull smoke

Emit runtime download progress and validation summaries for official sync.

Add repeatable real-network full pull smoke runbook and script.

Fixes #4

Fixes #6
This commit is contained in:
2026-07-14 00:48:59 +08:00
parent 2ff99ae9e3
commit 25c2c4d40f
15 changed files with 435 additions and 57 deletions
+15 -11
View File
@@ -319,26 +319,30 @@
- GitHub Actions 或等价 CI 执行 format、lint、test、build。
### G-018:真实官方网络全量下载 smoke test 未记录
### G-018:真实官方网络全量下载 smoke test 已固化为可重复命令
状态:**关闭**
状态:**关闭(已固化可重复 smoke 命令;真实下载产物不纳入 Git)**
现象:
历史现象:
- 本地测试覆盖 mock、fixture、synthetic import 和 CLI 参数。
- 尚未在隔离输出目录记录一次真实官方网络全量下载
- 曾缺少真实官方网络全量下载的固定 runbook 和可重复命令
影响
处理结果
- 无法用文档证明当前 `bat` 在真实官方网络环境下完成首次下载、二次静默 up-to-date 和本地损坏 repair
- 新增 `scripts/official-full-pull-smoke.sh`,默认在 `/tmp/bat-official-smoke-<UTC timestamp>/` 下创建隔离资源目录、状态目录和报告目录
- 新增 `make official-smoke` 统一入口。
- 新增 `docs/guides/official-full-pull-smoke.md`,记录目标、命令、输出结构、环境变量、安全边界和成功判定。
- smoke 流程覆盖 dry-run plan、首次全量拉取、二次 `up_to_date`、人工破坏 active release 文件后的 `repair`、repair 后 `verify`
- 脚本会检查二次 `up_to_date`、repair 完成、verify `healthy=true`,并检查首次拉取和 repair 的 stderr log 中存在总体下载进度、单文件进度和校验结果日志。
- 运行报告 `SMOKE_REPORT.md` 记录实际输出目录、active release、文件数量、release 大小和被破坏文件;大型官方资源文件保留在隔离输出目录,不纳入 Git。
验收:
- 使用独立目录执行 dry-run
- 执行真实首次下载,不指向任何现有客户端或人工维护资源目录
- 二次运行返回 `up_to_date`watch 模式在 up-to-date 时静默
- 人工破坏一个本地文件后,audit 检出并 repair
- 记录命令、摘要、输出目录和未纳入 Git 的大文件位置。
- 使用 `scripts/official-full-pull-smoke.sh``make official-smoke`
- 默认输出目录必须是独立 `/tmp` 目录;非 `/tmp` 路径需要显式设置 `BAT_SMOKE_ALLOW_NON_TMP=1`,且输出目录必须为空
- 脚本退出码为 0 即表示 runbook 验收通过
- 真实网络执行需要外部网络和足够磁盘空间;本仓库只保存 runbook、脚本和测试,不保存官方大文件
---