diff --git a/docs/DOD.md b/docs/DOD.md index 8c6b486..6eb7acc 100644 --- a/docs/DOD.md +++ b/docs/DOD.md @@ -99,6 +99,18 @@ 模板/静态资源,CI 的 `Playwright E2E Tests` 在该改动合入的 `777bfe1` 上是 success); 字体菜单/断网首屏/换页竞态三项**没重跑**(上次取证是 2026-09-19/20 的 v2.2.2 工作树); `Setup.exe` 真机安装与 26 GB 分卷仍未验收。 +- **v2.2.5 只做产物侧回读,没重跑本清单**(2026-09-22 22:3xZ)。这一版的内容是发布链路本身 + (docker 层缓存 `mode=min`+scope、`release-gate` commit status、DCO 按作者豁免、治理文档), + 运行时代码零改动,而且主工作树当时有另一个写者在改 38 项 —— 全量门禁的前提"跑测试期间冻结 + 工作树"不成立,所以**不拿局部绿灯冒充本清单执行过**。产物侧取证(RP 自己构建、挂上 Release 的那份): + wheel 28,381,932 B / **1065 条目** / `METADATA Version: 2.2.5`,sdist 28,337,605 B / + **1208 文件**(`app/` 1064 + `tests/` 138 + 根 6),两者的 sha256 与 Release 的 `SHA256SUMS` + 以及 GitHub 自算 `asset.digest` **双向对上**(`4eba3c28…` / `04d012b6…`);完整性三件套 + (清单 / `.sig.ed25519` / 公钥)在两个产物里都在;解包后**按包导入**跑 + `run_startup_selfcheck(enforce=True)` = `total=16 passed=16 failed=0 skipped=0 + manifest_signed=true`,rc=0(按文件路径加载会打断相对导入 → 假红,见 GOTCHAS #150)。 + 顺带一条分发面事实:**`tests/` 随 sdist 分发**(138 个),wheel 里则没有 —— + `release-please-config.json` 把 `tests` 放进 `exclude-paths` 的取舍依据就在这里(§1 第 5 条)。 - 上一次全量执行:2026-09-19,v2.2.2 工作树。机器侧佐证:全量 `pytest`(含 e2e、服务在线, `--cov=app/integrated_app`)**2084 passed / 40 skipped / 0 failed,8m14s**,覆盖率 51.94% (门禁 45%);mypy 103 = 基线;`tests/e2e/` 68 passed + 5 skipped(跳过的 5 条是视觉回归, diff --git a/docs/release-governance.md b/docs/release-governance.md index ea9d146..14883df 100644 --- a/docs/release-governance.md +++ b/docs/release-governance.md @@ -75,12 +75,22 @@ `file.startsWith(entry + "/")`,**不是 glob**): ① 写 `docs/**` 永不命中,只能用裸目录名 `docs`;RP 自己的测试用的也是 `['pkg3','pkg1']`; ② **仓库根上的单个文件排不掉**(那个 `+"/"` 让 `README.md`、`CHANGELOG.md`、 - `release-please-config.json` 都做不成条目)—— 所以"只改发版配置"这一类提交仍然会 - mint 一个版本,今天这条 #137 就是这么留下的; + `release-please-config.json` 都做不成条目)。**但"排不掉"不等于"会发版"** —— 我原先 + 由这一点推"只改发版配置仍会 mint 一个版本",#138 合入后被实测否掉:那条提交改的正是 + `release-please-config.json`,而 RP 的日志是 + `✔ No user facing commits found since 9125a3e… - skipping`。原因是类型侧还有一道闸: + `ci:` 不算 user facing(`docs:` 算,这才是当初 2.2.6 被开出来的原因)。 ③ 条目写成 `.` 会把**所有**提交排掉,RP 从此一声不响再也不发版(本仓踩过同形状的 "永远绿却什么都不做",见下面 v2.2.2 那段旧账)。 闸是 `test_exclude_paths_entries_are_all_actionable`:glob / `.` / 不存在的目录 / 清空列表 / 覆盖 `app/` 这 5 种写法都实测过会红。 + 另外两条例外的账要记着: + · **收窄口径会留下"死信 release PR"** —— RP 对已开出但内容不再算数的 PR 既不更新也 + **不关闭**(走 `skipping` 分支),#137 就是靠人关掉的。以后每次动 `exclude-paths` + 或提交类型口径,都要去 `gh pr list --author app/github-actions` 看一眼有没有旧的要清。 + · **排除 `tests` 不是零代价**:实测 v2.2.5 的 sdist 里有 **138 个 `tests/` 文件** + (wheel 里 0 个,`docs/`/`scripts/`/`.github/` 也都是 0)。所以"只改测试"不发版这条 + 是对** wheel(用户真正装的东西)**成立的判断,对 sdist 不成立 —— 是有意的取舍,别当成无影响。 2. 手工:`git tag -a` + `gh release create`(v2.2.2 / v2.2.3 / v2.2.4 走的就是这条)。 手工发版之后 RP 会在下一条 release PR 里把版本号再抬一格(它按 manifest 算), 所以手工发完要把 `.release-please-manifest.json` 一起抬到刚发的版本,否则两边在版本号上互踩。