Files
姚章浩 4f8ee0a8c5 feat(version): 变更记录改固定四类,破坏性变化带发布文档链接
按项目方给的规则重做 CHANGELOG 与检查器(本轮不推、不打 tag、不部署):

- 条目形状:四个自定义必填节(改了什么/兼容性与迁移影响/怎么验收/已知问题)
  → 固定四类 Added/Changed/Fixed/Security;分类可省略,**不许空栏目**;每个版本块
  至少一个非空分类;`[Unreleased]` 段不得写日期。
- 破坏性变化:固定写在 Changed 里、以 `**破坏性**` 开头,**必须链接发布文档**;
  仓内 `docs/….md` 链接**对账**(不存在 ⇒ 红)。写在别的分类里也判红。
- 结构判据补强:非法日期、重复版本、顺序必须严格递减、前导零;围栏代码块里的
  `##`/`###` 不算标题;**块正文以任意二级标题为界**(「## 能力基线(未发布)」这类
  不带方括号的标题原先不是边界,会把后文算成上一节的内容 ⇒ 空栏目被兜成"有内容",
  夹具真的抓到了这个假绿)。
- tag 一致性:远端专属清单 `.ci-remote-tags` → `ls-remote` → 本地 refs 三级来源;
  **没核对远端就不许说校验成功**(CI/预检用 `--require-remote`,拿不到清单即红),
  非正式 tag(如本地 `x`)不当作发布版本、不判红,没有 tag 不判红。
- `0.1.0` 定为**未发布的能力基线**(远端无 tag、无 Release):改成不带方括号的
  「## 能力基线(未发布)」,不补造 tag/发布日期/发布事实。
- 过程记录迁出:审查轮次与命令输出 → `docs/archive/CI_接入留档.md`(原文保留);
  未合并事项 → `docs/BACKLOG.md`;补 `docs/RELEASE_RUNBOOK.md`(破坏性变化的链接目标,
  同时修掉 CHANGELOG 里指向不存在文档的悬空引用)。
- 发版预检:无版本基线时把「首个正式版本号由人指定」列成阻塞项(不再要求先有基线才能跑);
  打印破坏性变化条数;远端 tag 查不到时明说未核对并阻塞;不再硬读已删除的『已知问题』节。
- traps trap-5 口径修正:不是"不用 tag",而是"构建时不要用 git describe 取版本号"。

验证:check_changelog --self-test 全过;反仓夹具 80/0(含五条真改文件的结构负例、
六条只在临时仓库里造 tag 的场景);make verify 15/15 success。
2026-10-13 14:59:35 +08:00

1.4 KiB
Raw Permalink Blame History

待办(未合并事项)

这里的东西都不是已完成变更,不写进 CHANGELOG.md。做完并验收后,把使用者可见的部分写成 [Unreleased] 条目,再从这里划掉。

建立于 2026-10-13(从 CHANGELOG.md 的 [Unreleased] 段迁出)。

待合并 / 待评审

# 事项 现状 完成判据
1 PR #2:批量发布 / 建批即锁定 / 需下架逐条移除 / 数据源勾选改造(23 个提交,80 个文件) 未合并 合并进 main 且 CI 绿;合完写 [Unreleased]
2 仓库卫生:撤出误入库的 node_modules/.vite/.../results.json 与 8 个历史 scripts/__pycache__/*.pyc 未做 git ls-files 反查干净(git check-ignore -v 命中规则)
3 AGENTS.md 现状表修正稿(写着"main 已启用分支保护",实际 GET /branch_protections = []) 修正稿已拟,受写入保护待人工批准 人工批准后应用,并读回核对
4 ESLint 接入、格式基线收尾、密钥/依赖扫描器覆盖度 未做 各自带 --self-test 反向自检,接进 make verify

做完之后怎么收尾

  1. 跑 make verify(本地全绿不等于远端跑通,需要一次真实 run 的证据)。
  2. 把使用者可见的变化写成 CHANGELOG.md 的 [Unreleased] 条目(按四类,别写过程)。
  3. 从本文件划掉该项;过程记录归档到 docs/archive/。