Skip to content

docs(release): 更正"只改发版配置仍会 mint 版本"这个推论(被 RP 实测否掉)+ 记下 sdist 里 tests 的分发面 - #139

Merged
ReSerendipity merged 1 commit into
mainfrom
docs/rp-scope-correction
Sep 23, 2026
Merged

ReSerendipity merged 1 commit into
mainfrom
docs/rp-scope-correction

Conversation

@ReSerendipity

Copy link
Copy Markdown
Owner

纯文档更正,改的是我自己上一轮写进 main 的一个错推论。没有代码改动、没有版本号改动。

我错了哪一条

#138exclude-paths)的 PR body 与 docs/release-governance.md §1 第 ② 条都由"根上的单个文件排不掉"推出过"所以只改发版配置的提交仍会 mint 一个版本,#137 就是这么留下的"。

#138 合入(1264b70,14:32:09Z)后 RP 2 秒重跑,日志原文:

✔ Splitting 5 commits by path
❯ commits: 3
✔ Considering: 3 commits
✔ No user facing commits found since 9125a3e… - skipping

那条提交改的正是 release-please-config.json(根文件、排不掉),却没 mint 版本。原因:路径排除与提交类型是两道独立的闸 —— ci: 不算 user facing,docs: 才算(当初 2.2.6 被开出来是因为内容是 ### Documentation,跟文件位置无关)。"排不掉 ⇒ 会发版"这步跳跃把两个机制当成了一个。

一起记下来的两条

  1. 收窄口径会留下"死信 release PR":RP 对已开出、内容却不再算数的 PR 既不更新也不关闭(这一轮走 skipping),chore(main): release 2.2.6 #137updatedAt 停在 14:03:51Z 一动没动 —— 只能人关。以后每次动 exclude-paths 或类型口径都要去清一遍旧的。
  2. 排除 tests 不是零代价:v2.2.5 的 sdist 实测含 138 个 tests/ 文件app/ 1064 + tests/ 138 + 根 6 = 1208 文件),而 wheel 里 tests/docs/scripts/.github/release-please-config.json 全是 0 命中。所以"只改测试不发版"是对 wheel(用户真正 pip 安装的东西) 成立的取舍,对 sdist 不成立 —— 记成取舍,别记成无影响。

docs/DOD.md 新增一条 v2.2.5 的产物侧回读记录(wheel 4eba3c28… 28,381,932 B / 1065 条目、sdist 04d012b6… 28,337,605 B / 1208 文件、三件套齐、run_startup_selfcheck(enforce=True) = 16/16/0 skipped=0 manifest_signed=true),并写明这一版没重跑 DoD 清单(运行时代码零改动 + 主工作树被另一个写者占着,"跑测试期间冻结工作树"的前提不成立),不拿局部绿灯冒充清单执行过。

验证

独立 worktreegit worktree add,不动主工作树)里跑:

  • pytest tests/test_version_consistency.py tests/test_release_readiness_gate.py13 passed
  • scripts/check_release_readiness.py --root . → "发版条件满足"(11 处版本位 = 2.2.5)
  • 已发布最新 = v2.2.5 那一行未动 → 第 11 处版本位不受影响

(顺带一条环境账:独立 worktree 里没有 .venv,pre-commit 的 check-engine-compat 会退回裸 python 而报 4/9(torch 找不到)。把 .venv/Scripts 前置到 PATH 再提交就正常 —— 那是 worktree 缺 venv 的假失败,不是改动的问题。)

#138 合入(1264b70,14:32:09Z)后 2 秒 RP 重跑,日志原文:

    ✔ Splitting 5 commits by path
    ❯ commits: 3
    ✔ Considering: 3 commits
    ✔ No user facing commits found since 9125a3e - skipping

那条提交改的正是 `release-please-config.json`(外加 docs/tests),而 #138 的 PR body 与
§1 第 ② 条都由"`exclude-paths` 排不掉仓库根上的单个文件"推出过"所以只改发版配置仍会 mint
一个版本,#137 就是这么留下的"。**前半句是对的**(匹配式 `file.startsWith(entry + "/")`
决定根文件做不成条目),**后半句是错的**:类型侧还有一道闸,`ci:` 不算 user facing,
`docs:` 才算 —— 当初 2.2.6 被开出来是因为内容是 Documentation,不是因为文件位置。
一句话里"排不掉 ⇒ 会发版"这步跳跃是我把两个独立机制当成了一个。

顺带补两条同批量到的账,下次动口径要用:

1. **收窄口径会留下"死信 release PR"**:RP 对已经开出、但内容不再算数的 PR 既不更新也**不关闭**
   (这一轮走的是 `skipping` 分支,#137 的 `updatedAt` 停在 14:03:51Z 没动),所以它要靠人关。
   以后每次改 `exclude-paths` 或提交类型口径,都得去 `gh pr list --author app/github-actions`
   清一次旧的。
2. **排除 `tests` 不是零代价**:v2.2.5 的 sdist 实测含 **138 个 `tests/` 文件**(wheel 里 0 个,
   `docs/`、`scripts/`、`.github/`、`release-please-config.json` 也都是 0)。"只改测试不发版"
   是对 wheel(用户真正 pip 安装的东西)成立的判断,对 sdist 不成立 —— 是有意的取舍,写下来
   免得下次有人以为它完全不影响产物。

产物侧的数一起进 `docs/DOD.md`:新增一条"v2.2.5 只做产物侧回读,没重跑本清单"的记录 ——
wheel/sdist 的字节数、条目数(1065 / 1208)、三件套、双向对上的 sha256、
`run_startup_selfcheck(enforce=True)` = `16/16/0 skipped=0 manifest_signed=true`,
并写明**为什么不拿局部绿灯冒充 DoD 执行过**(运行时代码零改动 + 主工作树当时被另一个写者占着,
"跑测试期间冻结工作树"这个前提不成立)。

验证:独立 worktree(`git worktree add`,不动主工作树 —— 那边此刻有另一个写者在改 38 项)
跑 `tests/test_version_consistency.py` + `tests/test_release_readiness_gate.py` = **13 passed**;
`scripts/check_release_readiness.py --root .` 判"发版条件满足"(11 处版本位 = 2.2.5);
`已发布最新 = v2.2.5` 那一行未动。

Signed-off-by: ReSerendipity <zengyangc@outlook.com>
@ReSerendipity
ReSerendipity merged commit d324998 into main Sep 23, 2026
30 checks passed
@ReSerendipity
ReSerendipity deleted the docs/rp-scope-correction branch September 23, 2026 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant