# Release 检查清单 > 发版前自检。Producer (Worker) 在 Phase 1 和 Phase 6 完整过一遍。 > **维度命名空间(dimension namespace)**: 本清单中的维度代码(如 TST/BEH/GATE/REG)是**清单局部(checklist-local)**标识符,仅在本文档内唯一;其他清单可能对相同字母串绑定不同概念(如 code-review.md 的 TST=Test Quality、verification.md 的 TST=Test Suite Completeness、port.md 的 TST=Test Porting)。跨清单引用时必须带清单限定(如 code-review.md TST 5.8),不得使用裸代码。 --- ## 1. 前置闸门(GATE — Pre-release Gates) | # | 检查项 | 通过 | 不通过 | 备注 | | --- | ---------------------------------------- | ---- | ------ | ---- | | 1.1 | 工作区干净(`git status` 无未提交变更) | ☐ | ☐ | | | 1.2 | 在正确的发布分支上 | ☐ | ☐ | | | 1.3 | 构建通过 | ☐ | ☐ | | | 1.4 | Typecheck + Lint 通过 | ☐ | ☐ | | | 1.5 | 测试全部通过 | ☐ | ☐ | | | 1.6 | 依赖审计已运行,无新增 HIGH/CRITICAL CVE | ☐ | ☐ | | | 1.7 | 无未跟踪的敏感文件(.npmrc 含 token、.env、credentials、私钥等) | ☐ | ☐ | | > **注意 1.6**:若使用了无法访问公有 registry 的私有仓库(如自建 Gitea),`bun audit` / `npm audit` 可能报 404。此时无法获取 CVE 数据属于已知盲区,须在 release report 中明确标注「dependency audit: N/A (custom registry)」。 --- ## 2. 版本号(VER — Version) | # | 检查项 | 通过 | 不通过 | 备注 | | --- | ------------------------------------------- | ---- | ------ | ---- | | 2.1 | 已找到上一个 tag(或确认这是首个 tag) | ☐ | ☐ | | | 2.2 | 所有 commit 已按类型分类(BREAKING/feat/fix/other) | ☐ | ☐ | | | 2.3 | 版本号遵循 semver(MAJOR.MINOR.PATCH) | ☐ | ☐ | | | 2.4 | 变更类型与 commit 内容一致 | ☐ | ☐ | | | 2.5 | 版本号大于上一个 tag | ☐ | ☐ | | | 2.6 | 版本号已写入所有版本文件 | ☐ | ☐ | | --- ## 3. 变更日志(LOG — Changelog) | # | 检查项 | 通过 | 不通过 | 备注 | | --- | -------------------------------------------- | ---- | ------ | ---- | | 3.1 | 自上一个 tag 以来的所有非 chore 提交均已收录 | ☐ | ☐ | | | 3.2 | 条目分组正确(Added/Changed/Fixed/Breaking) | ☐ | ☐ | | | 3.3 | Breaking change 有迁移说明 | ☐ | ☐ | | | 3.4 | 每个条目标注了对应的 commit hash | ☐ | ☐ | | | 3.5 | CHANGELOG.md 已更新(prepend 新版本段) | ☐ | ☐ | | --- ## 4. 标签(TAG — Git Tag) | # | 检查项 | 通过 | 不通过 | 备注 | | --- | --------------------------------------- | ---- | ------ | ---- | | 4.1 | commit message 含版本号 | ☐ | ☐ | | | 4.2 | tag 已创建且指向正确 commit | ☐ | ☐ | | | 4.3 | tag 命名遵循项目约定(默认 v{version}) | ☐ | ☐ | | --- ## 5. 回滚计划(ROLL — Rollback Plan) | # | 检查项 | 通过 | 不通过 | 备注 | | --- | ------------------------------------------- | ---- | ------ | ---- | | 5.1 | Git 回退步骤已文档化 | ☐ | ☐ | | | 5.2 | 若有数据库迁移,down migration 存在且已测试 | ☐ | ☐ | | | 5.3 | 回滚触发条件已明确(延迟/错误率/严重 Bug) | ☐ | ☐ | | --- ## 6. 冒烟测试(SMOKE — Post-release Smoke) | # | 检查项 | 通过 | 不通过 | 备注 | | --- | ----------------------------------- | ---- | ------ | ---- | | 6.1 | Tagged commit 可构建 | ☐ | ☐ | | | 6.2 | 测试全部通过 | ☐ | ☐ | | | 6.3 | 回到了原始分支 | ☐ | ☐ | | --- ## 7. 产物发布(DIST — Artifact Distribution,octopus 项目) > 对应 `.octopus/skills/release/SKILL.md` Phase 4b(#2003 退役 CI publish > 管线后的手工发布流程)。**主仓库 tag + release 对象 ≠ 发布完成**——CLI > 二进制、公开镜像、桌面 feed 三层外圈全部就位才算。本清单从磁盘读取, > 作为技能注入被截断时的兜底事实源(v0.25.0 发布时技能注入截断恰好切掉 > Phase 4b,导致外圈整层遗漏——本节由此设立)。 | # | 检查项 | 通过 | 不通过 | 备注 | | --- | ---------------------------------------- | ---- | ------ | ---- | | 7.1 | 12 平台 CLI 二进制已构建(tag 的干净 checkout,`bun packages/octopus/script/build.ts`),全部 smoke test 输出版本号 | ☐ | ☐ | Windows 无 `python3` 命令,zip 归档需垫 shim 或手动补齐 | | 7.2 | 12 个归档已挂到主仓库 release(zip×6 + tar.gz×6) | ☐ | ☐ | | | 7.3 | (可选,Gitea-only 口径可跳过)npm/docker/AUR 外部 registry 已发或明确跳过 | ☐ | ☐ | `OCTOPUS_GITEA_ONLY=true` | | 7.4 | `sync-public-assets.sh` 已跑:公共镜像 `Octopus/octopus-release` 的 `v{version}` release 有 12 资产 | ☐ | ☐ | 大 POST 出站不通时经服务器 localhost 中继 | | 7.5 | `sync-public-install.sh` 已跑:install/install.ps1/README 同步到镜像 main(注意 cp 目标是**根 README.md**,不是 scripts/ 副本) | ☐ | ☐ | | | 7.6 | `verify-public-sync.sh` PASSED | ☐ | ☐ | | | 7.7 | Desktop feed 三腿已派发(mac 走 `desktop-mac.yml` dispatch;win/linux 各一次 `desktop-feed.yml` dispatch),`bun packages/desktop/script/verify-feed.ts --version --channel ` PASS(三平台 yml 全量校验:`latest.yml`/`latest-linux.yml`/`latest-mac.yml` 的 `version:` == CLI 版本 + size 对资产逐项核对 + 匿名可达) | ☐ | ☐ | #6378 起以 verify-feed.ts 为准(v0.31.0 漏腿事故 #6375 的 fail-loud 补丁);concurrency 组已按 platform 分离;stable 通道 feed 缺失见 #6376 | | 7.8 | README 下载链接抽查(install 脚本 raw、资产直链、docs 相对链接)匿名可达 | ☐ | ☐ | v0.18 遗留 wiki 坏链由此发现 |