Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions docs/DOD.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 条是视觉回归,
Expand Down
14 changes: 12 additions & 2 deletions docs/release-governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` 一起抬到刚发的版本,否则两边在版本号上互踩。
Expand Down
Loading