@haiyangbg/buildbeat 2.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +24 -301
  2. package/README.en.md +6 -19
  3. package/README.md +6 -19
  4. package/SKILL.md +168 -219
  5. package/bin/buildbeat.js +14 -2
  6. package/docs/CAPABILITY-MATRIX.md +13 -55
  7. package/docs/README.md +14 -14
  8. package/docs/RELEASING.md +8 -9
  9. package/docs/v2/RFC-0001-product-definition.md +2 -0
  10. package/docs/v2/RFC-0003-workflow-policy.md +2 -0
  11. package/docs/v2/guide/00-how-to-talk.md +3 -3
  12. package/docs/v2/guide/01-quickstart.md +12 -12
  13. package/docs/v2/guide/03-policy-guide.md +1 -1
  14. package/docs/v2/guide/06-evidence-guide.md +3 -3
  15. package/docs/v2/guide/07-approval-guide.md +10 -10
  16. package/docs/v2/guide/10-recovery.md +6 -6
  17. package/docs/v2/guide/11-session-handoff.en.md +2 -2
  18. package/docs/v2/guide/11-session-handoff.md +2 -2
  19. package/docs/v2/guide/README.md +0 -6
  20. package/lessons.md +52 -71
  21. package/package.json +16 -8
  22. package/src/v2/cli/run.js +33 -23
  23. package/src/v2/engine/risk-preset.js +1 -1
  24. package/src/v2/runtime/notify.js +5 -5
  25. package/src/v2/runtime/overview.js +7 -7
  26. package/templates/ARCHITECTURE.md +1 -1
  27. package/templates/contracts/PROTOCOL.md +2 -10
  28. package/templates/gitignore.template +0 -3
  29. package/templates/pm/adr/README.md +1 -1
  30. package/templates/pm/decisions.md +4 -5
  31. package/templates/standards/CODE.md +1 -1
  32. package/templates/standards/DESIGN.md +1 -1
  33. package/templates/standards/REVIEW.md +2 -2
  34. package/templates/standards/STACK.md +2 -8
  35. package/templates/v2/AGENTS.md +18 -18
  36. package/templates/v2/BUILDBEAT.md +2 -3
  37. package/templates/v2/CLAUDE.md +1 -1
  38. package/templates/v2/run-config.example.yaml +1 -1
  39. package/templates/v2//346/214/207/346/214/245/345/217/260.md +6 -6
  40. package/bin/buildbeat-v2.js +0 -18
  41. package/bin/solobaton.js +0 -6
  42. package/docs/BuildBeat v2/357/274/232AI /345/216/237/347/224/237/350/275/257/344/273/266/344/272/244/344/273/230/346/216/247/345/210/266/345/271/263/351/235/242.md" +0 -2053
  43. package/docs/CHECKS.md +0 -326
  44. package/docs/CLI-PILOT-2026-08-23.md +0 -25
  45. package/docs/CLI-STRATEGY-2026-08.md +0 -55
  46. package/docs/CLI.md +0 -244
  47. package/docs/EXECUTION-PLAN.md +0 -487
  48. package/docs/LEGACY-V1.16-MIGRATION.md +0 -54
  49. package/docs/PHASE1-PILOT-2026-08-24.md +0 -32
  50. package/docs/PHASE2-BUILDBEAT-PILOT-2026-08-25.md +0 -75
  51. package/docs/PHASE2-PILOT-2026-08-25.md +0 -88
  52. package/docs/PHASE2-PILOT-PREFLIGHT-2026-08-25.md +0 -42
  53. package/docs/PHASE4-STABILITY-AUDIT-2026-08-25.md +0 -35
  54. package/docs/PHASE4-V1.20-PILOT-2026-08-25.md +0 -56
  55. package/docs/ROADMAP.md +0 -875
  56. package/docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md +0 -55
  57. package/docs/V2-D2-DECISION-CARD.md +0 -37
  58. package/docs/V2-DECISIONS.md +0 -11
  59. package/docs/V2-ITERATION-01.md +0 -60
  60. package/docs/V2-ITERATION-02.md +0 -32
  61. package/docs/V2-ITERATION-03.md +0 -30
  62. package/docs/V2-ITERATION-04.md +0 -29
  63. package/docs/V2-ITERATION-05.md +0 -20
  64. package/docs/V2-ITERATION-06.md +0 -18
  65. package/docs/V2-ITERATION-07.md +0 -36
  66. package/docs/V2-ITERATION-08.md +0 -62
  67. package/docs/V2-PLAN.md +0 -335
  68. package/docs/V2-PROPOSAL.md +0 -319
  69. package/docs/V2.0.0-BETA.1-RELEASE-EVIDENCE-2026-08-28.md +0 -41
  70. package/docs/V2.0.0-BETA.2-RELEASE-EVIDENCE-2026-08-28.md +0 -8
  71. package/docs/V2.0.0-BETA.3-RELEASE-EVIDENCE-2026-09-01.md +0 -8
  72. package/docs/V2.0.0-BETA.4-RELEASE-EVIDENCE-2026-09-03.md +0 -9
  73. package/docs/V2.0.0-BETA.5-RELEASE-EVIDENCE-2026-09-05.md +0 -10
  74. package/docs/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md +0 -11
  75. package/docs/WP4.3-RELEASE-EVIDENCE-2026-08-25.md +0 -73
  76. package/docs/v2/M1-ACCEPTANCE-2026-08-28.md +0 -38
  77. package/docs/v2/M2-DOD-2026-08-28.md +0 -34
  78. package/docs/v2/M4-EXTERNAL-PILOT-2026-08-28.md +0 -46
  79. package/docs/v2/M4-PILOT-APP-2026-08-28.md +0 -44
  80. package/docs/v2/M4-SELFHOST-2026-08-28.md +0 -53
  81. package/docs/v2/guide/08-migration-v1.md +0 -72
  82. package/example/.buildbeat/manifest.json +0 -45
  83. package/example/AGENTS.md +0 -19
  84. package/example/ARCHITECTURE.md +0 -39
  85. package/example/BUILDBEAT.md +0 -17
  86. package/example/CLAUDE.md +0 -7
  87. package/example/README.md +0 -75
  88. package/example/contracts/PROTOCOL.md +0 -38
  89. package/example/pm/NOW.md +0 -22
  90. package/example/pm/adr/ADR-0001-local-first-sqlite.md +0 -25
  91. package/example/pm/adr/README.md +0 -7
  92. package/example/pm/archive//344/270/200/346/234/237/evidence/gate1.md +0 -5
  93. package/example/pm/archive//344/270/200/346/234/237/evidence/gate2.md +0 -5
  94. package/example/pm/archive//344/270/200/346/234/237/evidence/gate3.md +0 -5
  95. package/example/pm/archive//344/270/200/346/234/237/evidence/gate4.md +0 -5
  96. package/example/pm/archive//344/270/200/346/234/237/evidence/implementation.md +0 -5
  97. package/example/pm/decisions.md +0 -20
  98. package/example/pm/status//344/272/247/345/223/201.md +0 -20
  99. package/example/pm/status//345/205/250/346/240/210.md +0 -15
  100. package/example/pm/status//346/265/213/350/257/225.md +0 -15
  101. package/example/pm//344/270/200/346/234/237-/347/234/213/346/235/277.md +0 -97
  102. package/example/standards/CODE.md +0 -18
  103. package/example/standards/DESIGN.md +0 -34
  104. package/example/standards/REVIEW.md +0 -16
  105. package/example/standards/STACK.md +0 -31
  106. package/src/cli.js +0 -323
  107. package/src/constants.js +0 -202
  108. package/src/doctor.js +0 -267
  109. package/src/planner.js +0 -251
  110. package/src/project.js +0 -844
  111. package/src/upgrader.js +0 -1249
  112. package/src/v2/presets/risk/legacy-four-gates.yaml +0 -44
  113. package/src/writer.js +0 -534
  114. package/templates/.claude/agents/reviewer.md +0 -62
  115. package/templates/AGENTS.md +0 -85
  116. package/templates/BUILDBEAT.md +0 -13
  117. package/templates/CLAUDE.md +0 -7
  118. package/templates/pm/NOW.md +0 -26
  119. package/templates/pm/changes/README.md +0 -44
  120. package/templates/pm/status/README.md +0 -32
  121. package/templates/pm//345/275/223/346/234/237/347/234/213/346/235/277.md +0 -62
  122. package/templates/scripts/bus-check.sh +0 -1875
  123. package/templates/scripts/design-preview.sh +0 -44
  124. package/templates/scripts/drift-check.sh +0 -112
  125. package/templates/scripts/pre-commit.sh +0 -74
  126. package/templates/scripts/verify-status.sh +0 -105
  127. package/templates//346/214/207/346/214/245/345/217/260.md +0 -58
package/CHANGELOG.md CHANGED
@@ -2,8 +2,29 @@
2
2
 
3
3
  > 本项目吃自己的狗粮(红线④:必更 CHANGELOG)。格式循 Keep a Changelog,倒序。
4
4
 
5
+ ## v3.0.0 — 2026-09-09(大版本:只剩一个产品,v1 移除)
6
+
7
+ > **3.0.0(破坏性变更)**:v1 已移除。需要 v1 文件总线或 `buildbeat doctor/init/adopt/upgrade` 的项目请停留在 2.0.2;3.0.0 起仓库与包只描述一个产品。
8
+
9
+ - **可执行文件只剩 `buildbeat`**:它就是运行时(原 `buildbeat-v2`);`buildbeat-v2` 与 `solobaton` 两个入口删除。新增 `buildbeat --version`。所有文档、模板、信封、`overview` / `inbox` / 通知里可复制的下一句命令统一改名。
10
+ - **删除 v1 面**:生命周期 CLI 源码(`src/cli.js`、`constants.js`、`doctor.js`、`planner.js`、`project.js`、`upgrader.js`、`writer.js`)、文件总线模板(`templates/AGENTS.md` 等根模板、`pm/NOW.md`、当期看板、`pm/status/`、`pm/changes/`、`templates/scripts/` 五个脚本、`.claude/agents/reviewer.md`)、教学沙盘 `example/`、`docs/CLI.md`、`docs/CHECKS.md`、`docs/LEGACY-V1.16-MIGRATION.md`、`docs/v2/guide/08-migration-v1.md`、`legacy-four-gates` 风险预设,以及它们的测试(`tests/cli.test.js`、`test-scripts.sh`、`skill-only.test.sh`、`tests/fixtures/`)。保留并改写为运行时口径的模板:`pm/decisions.md`、`pm/adr/`、`standards/`、`contracts/PROTOCOL.md`、`ARCHITECTURE.md`、`gitignore.template`。
11
+ - **SKILL.md 重写为单一产品**:§3 项目文件布局、§4 十一条协作规则(指向 `templates/v2/AGENTS.md`)、§5 风险预设决定人批点、§6 三个仪式与读数表、§8 Bootstrap 只剩一条路(含验证命令与 worker 工具自查、通知一问)、§8.5 接管存量项目按 `allowedPaths` 划边界;frontmatter 触发词去掉旧名。`lessons.md` 22 条:只对文件总线成立的 3 条删除,其余解药改指运行时机制并重新编号。
12
+ - **文档**:README 中英去掉 v1 折叠段与迁移指南链接;能力矩阵改为三个可用面;docs 索引、发布手册、贡献指南、tests/README、插件 README 同步;RFC-0001 §6 与 RFC-0003 预设表加 2026-09-09 生效修订注,正文保留。带日期的历史文件(试点、路线、发布证据、`CHANGELOG-v1.md`)原样留在仓库,不进包。
13
+ - **守卫**:`tests/check_docs.py` 重写——删除面的路径不得回归(`REMOVED_PATHS`),现行文档不得再出现旧可执行文件名、旧产品名、文件总线与固定 Gate 词汇;`package.json` 只允许一个 bin;插件版本 0.2.2 → 0.3.0(不再链接 `example/`)。CI 去掉文件总线脚本套件,作业名不变;发布 workflow 只探测 `buildbeat`。
14
+ - **体积**:npm 包 137 → 85 个文件,压缩约 340 kB → 212 kB,解压约 963 kB → 578 kB。
15
+
16
+ - **CHANGELOG 拆分**:v1 系列条目(v1 ~ v1.21.0,约 55 kB,占原文件近三分之二)原文不改地移到仓库根 [`CHANGELOG-v1.md`](https://github.com/HaiYangBG1/BuildBeat/blob/main/CHANGELOG-v1.md),根 `CHANGELOG.md` 只保留 v2 系列并在末尾指向它;新文件不在 `package.json` 的 `files` 里,不随 npm 包分发,`tests/pack-firstrun.test.sh` 断言包内有 `CHANGELOG.md`、没有 `CHANGELOG-v1.md`。版本史仍只在 CHANGELOG 一处维护,只是按大版本分了两个文件。
17
+
18
+ ## v2.0.2 — 2026-09-09(补丁:npm 包不再携带历史文档)
19
+
20
+ > **发布状态**:`@haiyangbg/buildbeat@2.0.2` 已于 2026-09-09 从 `main`(PR #33,merge commit `a077367`,tag `v2.0.2`)经 OIDC Trusted Publishing 发布到 dist-tag **`latest`**(run 34351668694,双 job success;所有者授权「发 2.0.2」)。独立回读(直连 npmjs.org):`latest` = 2.0.2、integrity 与本地 dry-run 一致、attestation、隔离安装、`doctor` 有界 JSON、包内 `docs/` 24 个文件且无历史文档全过,GitHub Release v2.0.2 标 Latest,证据见 [`docs/V2.0.2-RELEASE-EVIDENCE-2026-09-09.md`](docs/V2.0.2-RELEASE-EVIDENCE-2026-09-09.md)。
21
+
22
+ - **npm 包不再携带历史文档**:`package.json` 的 `files` 显式排除发布证据、迭代记录、阶段试点、路线与规划类文件(`docs/*-RELEASE-EVIDENCE-*.md`、`V2-ITERATION-*`、`PHASE*`、`V2-PLAN/PROPOSAL/DECISIONS`、`ROADMAP`、`EXECUTION-PLAN`、`CLI-STRATEGY/PILOT`、`docs/v2/M1/M2/M4-*` 与 v2 长文),它们只留在仓库;现行文档(总入口、v1 CLI 合同与检查、能力矩阵、迁移、发布手册、RFC/SPEC、十件套指南)照常分发。包内 `docs/` 从 61 个文件降到 24 个,压缩包约 497 kB → 362 kB,解压约 1.3 MB → 1.0 MB。安装目录里现行文档指向历史文件的链接会落空,`docs/README.md` 已说明去 GitHub 看。回归:`tests/pack-firstrun.test.sh` 新增两条断言——每份现行文档都在包内、历史文件一个都不在。运行时行为不变。
23
+
5
24
  ## v2.0.1 — 2026-09-06(补丁:合同与文档同步、`env:` 透传修复、v2 模板与首跑回归、首页重写)
6
25
 
26
+ > **发布状态**:`@haiyangbg/buildbeat@2.0.1` 已于 2026-09-06 从 `main`(PR #29,merge commit `4b2362f`,tag `v2.0.1`)经 OIDC Trusted Publishing 发布到 dist-tag **`latest`**(run 34032278315,双 job success;所有者授权「发」)。独立回读(直连 npmjs.org):`latest` = 2.0.1、integrity 与本地 dry-run 一致、attestation、隔离安装、`doctor` 有界 JSON、包内 `templates/v2/envelope/` 全过,GitHub Release v2.0.1 标 Latest,证据见 [`docs/V2.0.1-RELEASE-EVIDENCE-2026-09-06.md`](docs/V2.0.1-RELEASE-EVIDENCE-2026-09-06.md)。
27
+
7
28
  - **首页与简介(C 批次)**:中英文 README 围绕项目上下文与持续交付重写,暂用“会话随时换,项目接着干”标语;突出 Git 与文件上下文、跨模型/工具/会话/人员接续、多角色协作和交付 Loop,个人使用与团队接力均为适用场景;包与插件简介同步(插件版本 0.2.1 → 0.2.2)。新增中英文跨会话与团队接续指南,区分聊天删除、跨成员交接、运行恢复和跨机器同步;场景示意不冒充实测。README 与快速开始说明新模板随下一个补丁版发布(不再教源码全局安装);角色表收回 SKILL 的产品/全栈/测试三视角,审查归入 Run 内置只读 reviewer;首段补"进度与证据由内核回读";标语改为 H1 下的加粗行。README 检查改为必要入口和中英结构一致性,不再固定旧标题。
8
29
 
9
30
  > 2.0.0 之后的对外说明同步(A 事实与合同 → B 使用路径 → D 防回退 → C 首页),四批各一个 PR(#24、#27、#26、#28)合入 `main`;运行时只有一处行为修复(`env:` 透传),v1 生命周期命令与骨架 `v1.21` 不变;插件 manifest 描述随首页同步,版本升 0.2.2。
@@ -28,7 +49,7 @@
28
49
  > **发布状态**:`@haiyangbg/buildbeat@2.0.0` 已于 2026-09-05 从 `main`(PR #22,tip `95e780e`,tag `v2.0.0`)经 OIDC Trusted Publishing 发布到 dist-tag **`latest`**(run 33974396871,双 job success;所有者授权「正式发布」)。独立回读(直连 npmjs.org):`latest` = 2.0.0、integrity、attestation、隔离安装、`doctor` 有界 JSON 全过,GitHub Release v2.0.0 标 Latest,证据见 [`docs/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md`](docs/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md)。
29
50
 
30
51
  - **内容与 `2.0.0-beta.5` 同源**(迭代 01~09 的全部 v2 运行时、Skill §0.5 驾驶手册、`templates/v2/`、十件套指南、lessons #1–#25),外加 README 中英文的「当前主线是 v2」段与 `docs/CLI.md` 的 2.0.0 状态行。
31
- - **对拷出项目意味着什么**:v1 文件总线、`buildbeat` 生命周期命令(`doctor` / `init` / `adopt` / `upgrade` / `version`)与安全边界**不变**,schema 仍是 2;`npm install --global @haiyangbg/buildbeat@latest` 现在同时给出 `buildbeat` 与 `buildbeat-v2`。骨架版本仍是 `v1.21`(模板未变,`buildbeat upgrade` 对 1.21 骨架报 up-to-date,不需要 `--major`);manifest 里的 `cliVersion` 只是记录,不触发升级。v2 运行时是可选叠加:按 [`docs/v2/guide/08-migration-v1.md`](docs/v2/guide/08-migration-v1.md) 建 `delivery/work/` 与 run 配置即可,不动现有 `pm/` 与 `contracts/`。
52
+ - **对拷出项目意味着什么**:v1 文件总线、`buildbeat` 生命周期命令(`doctor` / `init` / `adopt` / `upgrade` / `version`)与安全边界**不变**,schema 仍是 2;`npm install --global @haiyangbg/buildbeat@latest` 现在同时给出 `buildbeat` 与 `buildbeat-v2`。骨架版本仍是 `v1.21`(模板未变,`buildbeat upgrade` 对 1.21 骨架报 up-to-date,不需要 `--major`);manifest 里的 `cliVersion` 只是记录,不触发升级。v2 运行时是可选叠加:按 `docs/v2/guide/08-migration-v1.md`(已于 3.0.0 移除)建 `delivery/work/` 与 run 配置即可,不动现有 `pm/` 与 `contracts/`。
32
53
  - **分发口径**:`latest` 从 1.21.0 切到 2.0.0;`next` 保留给后续预发布;旧 `solobaton` 包不变。
33
54
 
34
55
  ## v2.0.0-beta.5 — 2026-09-05(迭代 09:预算是刹车、故障分开算、成本看得见)
@@ -105,304 +126,6 @@
105
126
  - **v1 冻结的两处诚实修正**(prepublish 门抓出):manifest `cliVersion` 校验接受 prerelease(否则 v1 CLI 装在 beta 包里自坏);`SCAFFOLD_VERSION` 钉死 `v1.21` 字面量、与包版本解耦——脚手架内容束未变,存量安装不应看到虚构的跨大版本升级
106
127
  - **发布道**:publish workflow 增加 prerelease 通道(prerelease tag 只能从其发布分支的 origin tip 发、强制 dist-tag `next`、verify 回读 dist-tag 路由;stable 通道 main-only 原样),配对契约进 `tests/publish-workflow.test.js` 永久回归
107
128
 
108
- ## v1.21.0 — 2026-08-25
109
-
110
- > 主题:统一各域的收口回复,让人一眼看清做成了什么、证据在哪、还有什么没做,以及下一棒或真实求助。
111
- > **拷出项目升级**:在根 `AGENTS.md` 的任务包规则后补入「域回复格式」;未改过的 `指挥台.md` 可随后续版本机械替换。历史 status、看板和证据不回改,`pm/status/**` 持久口径不变。
112
- > **发布状态**:`@haiyangbg/buildbeat@1.21.0` 已通过 GitHub Actions OIDC / Trusted Publishing 发布;官方 registry exact artifact、SLSA provenance、签名、attestation、隔离安装、README 与 GitHub Release 均已独立回读。关闭证据见 [`docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md`](docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md)。
113
-
114
- - **域回复契约**:产品/全栈/测试等 AI 视角面向人收口时统一按「已做 → 未做 → 下一步」输出;已做只写功能/业务结果,证据紧跟对应事项,未做必须写原因,下一步明确交棒对象或真实求助
115
- - **发挥边界**:回复契约只约束收口/交接,不要求中间进展和探索讨论套模板;本域仍能安全推进时继续做,不伪造求助或固定域流水线
116
- - **多入口同步**:`SKILL.md`、`templates/AGENTS.md`、`指挥台.md`、中英 README、教学沙盘与文档回归检查同步新口径;Claude Code 插件版本升至 `0.2.1` 以刷新缓存;`lessons.md` 新增「域回复各说各话」失败模式
117
- - **Node 23 macOS 测试兼容**:符号链接安全回归用 `unlinkSync` 删除符号链接,避免 `fs.rmSync` 在 Node 23.6 上误报 `ERR_FS_EISDIR`;不改运行时写入逻辑
118
-
119
- ## v1.20.0 — 2026-08-25
120
-
121
- > 主题:把 Phase 0–3 合并为 BuildBeat 首个 scoped 正式版本,canonical 分发迁移到 `@haiyangbg/buildbeat` 与 `HaiYangBG1/BuildBeat`;旧 `solobaton` 包冻结为只读兼容入口。
122
- > **拷出项目升级**:真实 schema 2 v1.16 安装可先运行 `buildbeat upgrade --dry-run`,无 blocker 后再机械升级到 v1.20;legacy/无 manifest 项目继续走手工迁移指南。`--force` 不覆盖 project-owned,项目 uninstall 仍不开放。
123
- > **发布状态**:`@haiyangbg/buildbeat@1.20.0` 已通过 GitHub Actions OIDC / Trusted Publishing 发布;官方 registry exact artifact、SLSA provenance、签名、attestation、隔离安装、README 与 GitHub Release 均已独立回读。关闭证据见 [`docs/WP4.3-RELEASE-EVIDENCE-2026-08-25.md`](docs/WP4.3-RELEASE-EVIDENCE-2026-08-25.md)。
124
-
125
- - **WP4.3 scoped 分发决策**:用户拍板立即迁移到 `@haiyangbg/buildbeat` 和 `HaiYangBG1/BuildBeat`;不冒用已被占用的 unscoped `buildbeat`。canonical executable 保持 `buildbeat`,`solobaton` 只保留包内兼容别名
126
- - **版本序列合并**:未对外发布的 v1.17/v1.18/v1.19 不伪造成中间 artifact;当前 Phase 0–3 统一进入 `1.20.0`,scaffold version 从 v1.16 形成真实增量到 v1.20
127
- - **legacy 包退场完成**:`solobaton@1.16.1`、`1.16.2`、`1.16.3` 已逐版本读回指向 `@haiyangbg/buildbeat` 的 deprecation 提示;未 unpublish,旧包不获得写入/upgrade 能力
128
- - **Claude plugin 迁移**:仓库入口更新为 `HaiYangBG1/BuildBeat`,插件版本升至 `0.2.0` 以刷新分发缓存;npm CLI `bin/` 仍不进入插件包
129
- - **真实 v1.20 升级试点**:在专用分支将真实 schema 2 项目从 scaffold `v1.16` / CLI `1.16.3` 升至 `v1.20` / `1.20.0`;默认 dry-run 对四个改写文件零写阻断,force 后人工回灌项目事实,project-owned 零 diff,doctor 0/0、strict exit 0、提交后 dry-run up-to-date,目标仓 clean 且无 remote
130
- - **真实多仓刷新与兼容修复**:当前检查器在真实四子仓协调层投影中发现 legacy prose 根内 `../` 误判;现只对 scoped prose 允许 realpath 留在根内的 source-relative link,canonical Gate/evidence 仍禁 traversal,根外逃逸回归继续阻断。Shell 回归增至 `222/222`;最终刷新精确保留业务仓真实 `lessons.md` 断链、未登记 map 与适配器/远端/live unverified,不冒充全绿
131
- - **Linux CI 可移植性**:JSON renderer 的 awk quote 正则改为 BSD awk / mawk 共通写法,避免 Linux stderr warning 污染机器 JSON;同时展开旧式 `A && B || C` Shell 断言并兼容 ShellCheck 0.9/0.11,macOS 与 Ubuntu 共用同一语义
132
- - **品牌正式定名 BuildBeat**:2026-08-25 用户拍板产品名为 BuildBeat;canonical CLI/Skill/Claude plugin 标识统一为 `buildbeat` / `buildbeat@buildbeat-plugins`,新骨架入口改为 `BUILDBEAT.md`
133
- - **canonical namespace 迁移**:新写入只生成 `.buildbeat/manifest.json`、BuildBeat `.gitignore` marker 与 `buildbeat-stack-baseline:v1`;doctor/bus-check 继续读取旧 `SOLOBATON.md`、`.solobaton/manifest.json`、marker 与 STACK 基线,双 manifest 或混合安装 fail-closed
134
- - **legacy 分发兼容**:已发布 npm 包 `solobaton` 保留为 BuildBeat 的 legacy read-only distribution ID;新 scoped 包同时暴露 canonical `buildbeat` 与兼容 `solobaton` executable。未加 scope 的 `buildbeat` 包名已被其他项目占用,canonical package/repository 已迁移并完成远端回读
135
- - **改名证据边界**:WP2.7 三条真实目录试点及其 hash 保持为 legacy namespace 历史证据;WP2.8 已用全新的隔离目录完成 BuildBeat canonical init/adopt/Skill-only 回归,二者不混写、不互相外推
136
- - **新版方向与执行基线入库**:新增 `docs/ROADMAP.md`、`docs/EXECUTION-PLAN.md` 与官方来源可复核的 CLI 策略对照;产品方向由路线图承载,当前交付范围与依赖顺序由执行计划 v3 承载
137
- - **CLI 选择性解冻决策**:未来只开放 `init/adopt` 哑脚手架写入与 manifest/hash 驱动的机械 `upgrade`;三方合并、项目 uninstall 引擎、`gate/adr/standards/check` 命令扩张继续冻结,语义渲染和冲突合并归 AI 会话/Skill
138
- - **Wave 2 机械升级源码候选**:新增 schema-2-only `buildbeat upgrade [path] [--dry-run] [--json] [--force] [--major]`;同 major 按 manifest baseline/current/bundled template 三组 hash 做 replace/create/retain/report,跨 major 需显式确认,安装版本更新于 bundle 时拒绝降级
139
- - **Wave 2 所有权与事务边界**:任一未解决冲突使整次 apply 零写;`--force` 仅可覆盖已登记的 `replace-if-unmodified` 或唯一 `.gitignore` owned fragment,永不触碰 project-owned、未登记碰撞、异常 marker、symlink/目录等不安全路径;写前复核 hash/absence,manifest 最后写,失败逐字节与 mode 回滚,成功后回读 doctor 并提示 bus-check
140
- - **WP3.1 本地候选门禁**:Node `55/55`(其中 CLI `50/50`)、Shell `176/176`、Skill-only、Claude plugin 隔离安装 `7/7`、99 份 Markdown 契约检查、74 文件 pack dry-run、ShellCheck、Bash/Node 语法、actionlint、gitleaks 与 `git diff --check` 全部通过;这些是本地源码与 disposable sandbox 证据,不是 push、真实版本增量试点或发布证据
141
- - **WP3.2 Gate/证据强关联**:`bus-check` 对正向 UI 信号与 Gate2 `n/a` 的矛盾新增 `gate.na_inconsistent` warning;passed Gate 的 `决策:` 必须精确指向 `pm/decisions.md:<行号>` 的现存日期表格行;有效本地证据不在 `pm/archive/<期>/evidence/` 时新增 `evidence.outside_archive` warning。未检出 UI 不外推为“无 UI”,两个 warning 均不冒充人工 Gate 结论或阻塞 strict
142
- - **WP3.2 本地候选门禁**:Node `55/55`(其中 CLI `50/50`)、Shell `199/199`、Skill-only、Claude plugin 隔离安装 `7/7`、106 份 Markdown 契约检查、74 文件 pack dry-run、ShellCheck、Bash/Node 语法、actionlint、gitleaks 与 `git diff --check` 全部通过;新增 fixture 分别覆盖 UI/n-a 矛盾、有效/缺失决策行和归档内/外证据,证据仍限当前本地源码与 disposable Git 沙箱
143
- - **WP3.3 多仓漂移**:`contracts/PROTOCOL.md` 新增 project-owned `buildbeat-multirepo-map:v1`,显式逐仓绑定子仓路径、契约版本文件与 `bus-baseline.json` app;`bus-check` 只核对首个非 Unreleased CHANGELOG H2、唯一契约快照版本和本地部署基线 imageTag。任意两个已观测来源确定不一致进入 `sync.multirepo_drift` conflict;缺 map/仓/来源/jq/基线、非标准版本或越界保留 `sync.unverified`,symlink/权限边界由后续 WP3.4 统一为 `sync.scan_truncated`
144
- - **WP3.3 迁移边界**:`bus-check.sh` 可整文件替换获得检查,但 `PROTOCOL.md` 是 project-owned,现有多仓项目须人工加入 map;未配置只增加非阻断 unverified,绝不猜架构表、package version、Git tag、自由文本或线上状态。当前真实多仓文件仅用于只读校准格式,没有修改项目、运行线上查询或形成真实项目通过证据
145
- - **WP3.3 本地候选门禁**:Node `55/55`(其中 CLI `50/50`)、Shell `210/210`、Skill-only、Claude plugin 隔离安装 `7/7`、106 份 Markdown 契约检查、74 文件 pack dry-run、ShellCheck、Bash/Node 语法、actionlint、gitleaks 与 `git diff --check` 全部通过;runtime fixture 临时创建带空格路径的内嵌 Git 仓,覆盖三源一致、确定漂移、精确 source/path 与未登记仓 unverified
146
- - **WP3.4 扫描边界**:机械扫描因阈值、根内 symlink 或权限不足未覆盖时统一进入非阻断 `sync.scan_truncated`,message 携带稳定 `reason=limit|symlink|permission`,finding path 指向已知的仓库相对来源;NOW/看板/status/evidence/standards/ADR/STACK/多仓来源不跟随 symlink、不读取无权限文件,也不把未读误报为不存在或一致
147
- - **WP3.4 结果处置与本地门禁**:`SKILL.md` 与 `指挥台.md` 新增五级 finding、strict/coverage 边界和常见处置页;runtime 回归证明 limit、symlink evidence 与 chmod `000` evidence 均保持 coverage unverified、strict 0、精确 path,且后两者不误报 `evidence.missing`。Node `55/55`(其中 CLI `50/50`)、Shell `221/221`、Skill-only、Claude plugin 隔离安装 `7/7`、106 份 Markdown 契约检查、74 文件 pack dry-run、ShellCheck、Bash/Node 语法、actionlint、gitleaks 与 `git diff --check` 全部通过
148
- - **WP4.1 新协议教学全貌**:`example/` 在保留已完成一期四个 `passed` live Gate 的同时,单独给出 `pending/passed/blocked/n/a` 四态语法;新增 schema 2 合成教学 manifest,由文档检查精确锁定 8 个声明路径的 policy 和当前字节 hash。该 manifest 明示不是已发布 v1.16 写入证据、健康 CLI 安装或真实项目可复制基线
149
- - **WP4.1 legacy 迁移边界**:新增 `docs/LEGACY-V1.16-MIGRATION.md`,默认路径是按所有权继续手工维护;只在明确批准后才可于专用 Git 分支移出旧冲突路径、重走当前源码候选 `adopt`、回灌 project-owned 事实并审查合并。手写/复制/重命名 manifest、混合 namespace、破坏性 reset 和把基线当成 Gate/部署证据均禁止
150
- - **WP4.1 本地门禁**:Node `55/55`(其中 CLI `50/50`)、Shell `221/221`、Skill-only、Claude plugin 隔离安装 `7/7`、107 份 Markdown 契约检查、76 文件 pack dry-run、ShellCheck、Bash/Node 语法、actionlint、gitleaks 与 `git diff --check` 全部通过;未执行真实项目迁移、push、tag、GitHub Release、npm publish 或远端改名
151
- - **WP4.2 能力矩阵与双语终校**:新增 `docs/CAPABILITY-MATRIX.md`,把可用面固定为检查 `doctor`、脚手架 `init/adopt`、机械升级 `upgrade` 三组生命周期入口,并逐项区分 Skill-only、已发布 `solobaton@1.16.3` 只读 v0 与当前本地源码候选;中英 README 同步 Phase 3 范围、真实试点缺口、示例边界和能力矩阵入口
152
- - **WP4.2 双向互操作**:Skill-only 手工项目可由源码 CLI `doctor` 保守识别并明确返回 `manifest.missing`;CLI 真实 `init` 的一次性项目经 Skill 渲染后,在屏蔽 Node/CLI 的环境中仍可运行项目本地 strict 检查。该回归只证明结构兼容,不把沙箱结果外推为真实项目升级或 npm 可用性
153
- - **WP4.2 硬门槛归档与本地门禁**:`docs/PHASE4-STABILITY-AUDIT-2026-08-25.md` 对演进书§15 逐条归档,12 条中 11 条达到本地源码候选口径;第 11 条仍缺真实版本增量 upgrade 和 WP3.3/WP3.4 真实环境刷新。Node `55/55`、Shell `221/221`、Skill-only + CLI/Skill 双向互操作、Claude plugin `7/7`、109 份 Markdown 契约检查、78 文件 pack dry-run及全部静态检查通过;未查询 npm/GitHub 可变远端状态,未执行 push、tag、Release、publish、部署或远端改名
154
- - **仓库安全基线**:新增 npm/GitHub Actions Dependabot 周检、JavaScript/TypeScript CodeQL、SECURITY/贡献/行为规范、CODEOWNERS、Issue/PR 模板;CI 中第三方 Action 改为不可变完整 commit SHA
155
- - **发布引用保护**:GitHub 服务端 `Protect release tags` ruleset 覆盖 `refs/tags/v*`,禁止更新和删除已创建的发布 tag,且无绕过角色;发布 runbook 增加回读步骤
156
- - **CLI v0 真实试点**:使用官方 npm registry 的 `solobaton@1.16.3` 对三个存量项目运行只读 `doctor` 和 `adopt --dry-run`;Git 可见状态前后一致,并正确区分未安装、旧版已安装和部分安装状态
157
- - **真实 scoped 发布验收**:`@haiyangbg/buildbeat@1.20.0` 已由 `v1.20.0@5aaa9e8` 和 workflow run `32826832379` 保全;registry `latest=1.20.0`、exact integrity、SLSA v1 provenance、registry signature、attestation、隔离安装及 GitHub Release 全绿。legacy `solobaton@1.16.3` 仍对所有项目写入 fail-closed
158
- - **产品扩张边界**:多人账号/权限/组织管理和遥测/效能评分/指标仪表盘明确为当前非目标;CLI 不采集或上传项目使用数据,未来若扩展须独立立项并审查数据口径、隐私和权限治理
159
- - **不变量与输出合同落地**:`docs/CHECKS.md` 冻结八条文件总线不变量、Gate/证据令牌、五级结论、finding code 命名空间、JSON 外形和严格模式退出语义;`bus-check --format=json` 已由同一 finding 集合渲染,默认人类报告保持 exit 0,strict 只拦 `conflict/error`
160
- - **Phase 1 执行同步**:`SKILL.md` 与 AGENTS/status 模板固化开工 7 步、执行中 5 守则、收工 7 步;看板模板和教学沙盘新增四行 canonical Gate 状态与完成工作包 `**证据**:` 令牌
161
- - **Phase 1 检查实现**:`bus-check` 新增 Gate、完成证据、作用域引用、扫描截断和显式 coverage 检查;`verify-status --format=machine` 返回 `sync.l3_stale` / `sync.l3_unconfigured`,`verify-status --run` 在任一真实套件失败时非零退出,warning/unverified 保持可见但不冒充绿灯
162
- - **Phase 1 fixture 闭环**:健康、坏指针、无证据完成、Gate n/a 无理由、passed 不可追溯、非法 Gate、有效证据、幽灵 hash、陈旧看板和扫描截断场景逐项核对 JSON code/level/count/coverage/path 与 strict 退出码
163
- - **Phase 1 只读试点**:example 的 11 个教学假 hash 全部被拦;活跃多仓投影稳定暴露 4 个 NOW 引用迁移项、4 条 legacy Gate warning 与旧 verify 机器协议缺口;真实单仓代码树投影基线 strict 通过,注入无证据完成/n-a 无理由/幽灵 hash 后分别命中唯一目标 conflict。三类源项目试点前后 Git 可见状态一致;详见 `docs/PHASE1-PILOT-2026-08-24.md`
164
- - **Phase 2-A 可选规范**:新增 project-owned 的 STACK/CODE/REVIEW/DESIGN 模板与教学沙盘完成态;三行声明、稳定 Rule ID、CODE 安全底线和 UI-only DESIGN 契约已冻结。`OPTIONAL_TEMPLATE_PREFIXES` 确保默认 CLI 计划和 Skill-only 骨架不生成它们;缺失零 finding,Draft 显式 `unverified`,结构损坏进入 strict
165
- - **Phase 2-A ADR**:新增五判据 README、七字段 ADR 模板和 decisions 索引口径;`bus-check` 校验四种 Status 与 Superseded 终止链,能拦缺失目标、自指、循环和非法目标状态;ADR 仍只记录长期技术决定,不承载成员或审批管理
166
- - **Phase 2-A Bootstrap/Adopt 契约**:技术栈事实先形成一屏 STACK Draft 卡,可选规范默认不落文件且不增加提问预算;只有 UI 项目建议 DESIGN;确认无 UI/无部署时生成 canonical Gate2/Gate4 n/a 理由草案。存量摸底固定区分已确认历史债务、未验证范围、新地盘、只维护老地盘和明确不碰边界
167
- - **Phase 2-A 历史收口边界**:Phase 2-A 稳定候选当时仍只接受 `init/adopt --dry-run`;该结论用于标记批次边界,不再描述后续叠加了 WP2.4–WP2.5 的当前工作区
168
- - **Phase 2-B Wave 1 源码候选**:`init/adopt` 已实现“完整计划 → 交互确认或显式 `--yes` → 受控写入”;默认/紧凑布局均排除 optional standards/ADR,并只渲染项目名、日期、骨架版本、布局与紧凑脚本路径,剩余语义占位符结构化返回给 Skill
169
- - **Phase 2-B STACK 漂移候选**:Confirmed STACK 新增 `buildbeat-stack-baseline:v1` 精确集合并只读兼容旧 `solobaton-stack-baseline:v1`;`bus-check` 比对 `.nvmrc` / `package.json#engines.node`、npm/pnpm/yarn/bun lockfile 种类与 Dockerfile FROM,确定矛盾进 `stack.drift` conflict,缺源/解析/权限/符号链接/截断边界进 `stack.unverified`;不猜自然语言、不回显原始值、不修改项目文件,matching/conflict/unverified 三类 fixture 已将 Shell 回归扩至 `166/166`
170
- - **Phase 2-B Claude 插件分发候选**:新增 `buildbeat-plugins` marketplace 与独立 `buildbeat` 插件 `0.1.0`;插件以 marketplace 内相对符号链接复用 canonical SKILL/templates/docs/example,安装缓存解引用为自包含副本,并刻意排除 npm CLI 顶层 `bin/`。隔离配置回归覆盖严格校验、marketplace 添加、插件安装/启用、缓存同源与二次校验;CI 无 Claude CLI 时只证明静态打包,不冒充安装证据
171
- - **分发入口证据边界**:中英 README 首屏加入 Claude plugin 与 scoped npm 路径;legacy `solobaton@latest` 不再承载写入入口,`npx --yes --package=@haiyangbg/buildbeat@latest buildbeat init my-project` 只有在 scoped artifact 完成官方 registry 回读后才宣称可用
172
- - **WP2.7 安全前置**:新增 `standards-partial` fixture,证明仅启用 Confirmed CODE/REVIEW 时缺失 STACK/DESIGN 合法,Shell 回归增至 `176/176`;只读 dry-run 排除 partial 且碰撞的 `pilot-app` 与 dirty legacy 安装的 `试点工作区` 作为 Wave 1 adopt 目标
173
- - **WP2.7 真实目录本地写入**:获用户点名后,分别保留 init dry-run 零写、交互拒绝零写、default init apply、Tide compact adopt 与 Skill-only 手动 Bootstrap 证据;三个实际骨架完成项目语义渲染,验证套件及离线 `bus-check --strict` exit 0,可选 standards/ADR 均未被为了全绿而生成
174
- - **存量保护证据**:Tide 接管前后原 83 个文件的聚合 SHA-256 完全一致;剥离唯一 managed fragment 后,原 `.gitignore` 的 173 字节与 SHA-256 完全一致。没有运行构建、浏览器加载、发布或部署,静态保护证据不得外推为业务验证
175
- - **浏览器扩展 UI 探测修复**:真实 Tide 试点暴露 `hasUi=false` 假阴性;项目扫描现在解析嵌套 Manifest V2/V3 的 action/content/options 等 UI 信号,Tide 重探测为 `hasUi=true`,并加入不依赖 `index.html` 或前端框架包的 Node 回归
176
- - **WP2.7 Git 证据闭环**:获明确授权后,三个 apply 目标均初始化 `main`、安装与仓内规范脚本一致的 pre-commit Hook,并各形成 baseline + evidence 两个仅本地提交;最终 HEAD 为 `eb27a88663701ea03de776e32b6a23c2d1e3ac28`、`5b6aa726a1722226f9651a14bf0fb8fa36a5f9f6`、`b63383db9e56f17495a8ccc8edcb81e7c9cf24f0`,均 clean、无 remote。最终 doctor 均 `ok=true`,Skill-only 只保留预期 `manifest.missing`;不自动授权上游源码 commit、tag、GitHub Release、npm publish 或首屏写入入口激活
177
- - **WP2.7 候选门禁**:真实试点反馈回灌后 Node `39/39`、Shell `176/176`、Skill-only、Claude plugin 隔离安装 `7/7`、98 份 Markdown 检查、71 文件 pack dry-run 与全部静态检查通过;该次结果是提交前 worktree 证据,后来随 Phase 0–2 本地基线一并保全,仍不是发布证据
178
- - **WP2.8 本地迁移门禁**:BuildBeat namespace 改名与新试点证据回写后 Node `41/41`、Shell `176/176`、Skill-only、Claude plugin 隔离安装 `7/7`、99 份 Markdown 检查、73 文件 pack dry-run、ShellCheck、Bash/Node 语法、actionlint、gitleaks 与 `git diff --check` 全部通过;该次结果是提交前本地候选证据,后来随 Phase 0–2 本地基线一并保全,不是发布证据
179
- - **WP2.8 BuildBeat 真实目录关闭**:新隔离根完成 default init、Tide compact adopt 与 Skill-only;doctor/verify-status/离线 strict、canonical namespace、Git/Hook/clean/no-remote 全部闭合,Tide 原 76 文件逐字节复核 0 差异。用户已确认 Gate3 并关闭 WP2.8,最终关闭 HEAD 为 `4ea29a94a3a29fa905ae99662359ec561298135d`、`69d6e8358f7fda03225c090d99b5647cae152183`、`6b32c53e4fd750770690a0bbe796638314cb792a`;随后另行授权形成 Phase 0–2 本地源仓基线 `b062f25`,未推送、未发布
180
- - **Wave 1 fail-closed 事务**:每个目标文件经同文件系统临时 sibling、fsync 与原子 rename 落盘;碰撞、符号链接父路径、已有/partial/mixed 安装、dirty/unavailable 根 Git 状态、异常 `.gitignore` marker 全部写前拒绝;任一步失败回删本次文件/空目录并逐字节恢复既有 `.gitignore`
181
- - **manifest/output schema 2(破坏性输出变更)**:CLI JSON envelope 从 schema 1 升为 2,新增实际写入路径、manifest、确定性替换和待渲染清单;新 manifest schema 2 最后写入,记录基线 SHA-256 与固定 `.gitignore` owned fragment,拒绝 `three-way-only`,同时 doctor 继续读取历史 schema 1
182
- - **所有权策略迁移**:AGENTS.md / BUILDBEAT.md / 指挥台.md 的新计划由历史 `three-way-only` 改为 `replace-if-unmodified`;历史 schema 1 仍可回读旧 `SOLOBATON.md` 与该旧策略,当前 schema 2 永不生成它
183
- - **Wave 1 证据边界**:Node 回归覆盖新目录/干净 Git/存量紧凑布局、无 Git 的诚实 `git.not_initialized`、确认取消、碰撞、dirty Git、ignore 幂等/hash、schema 双读、符号链接拒绝和注入失败回滚;WP2.7 另完成三条真实目录本地试点与 Git/Hook/hash 闭环,但没有上游 tag、GitHub Release 或 npm publish
184
- - **端到端 Builder 模型对齐**:`SKILL.md`、模板、示例和中英 README 统一为“按需求/功能工作包并行,单个 Builder 端到端负责产品判断、实现、测试与交付证据”;产品/全栈/测试保留为 AI 专业视角,不建人类角色接力或团队管理层
185
- - **Phase 0 回归地基**:新增健康/坏指针项目夹具和 `expected-findings.json` 过渡合同,并增加无 Node、无 CLI manifest 的 Skill-only 脚手架回归;两条 Shell 套件纳入 `prepublishOnly`,但未授权 v1.17 tag、GitHub Release 或 npm 发布
186
-
187
- > **拷出项目升级(v1.20 已验证发布)**:
188
- > 1. 若 `scripts/bus-check.sh` 未被项目修改,可整文件替换;紧凑布局替换 `pm/scripts/bus-check.sh`。
189
- > 2. `verify-status.sh` 属 project-owned:保留现有 `SUITES`,仅人工合并 `--format=machine` 与 L3 新鲜度逻辑,不整文件覆盖。
190
- > 3. 旧看板人工补 Gate1–Gate4 四行;每个 `✅完成` 工作包补恰好一行 `**证据**:`;NOW/看板的新机器引用改用仓库根相对路径(不用 `../`),并按需把开工/收工核对措辞合入 AGENTS/status 约定。
191
- > 4. optional standards 与 ADR 不自动迁移:项目未启用就保持缺失;要启用时只复制选中的 project-owned 模板,填完项目事实后从 Draft 经人工确认改为 Confirmed,已有同名文件绝不覆盖。新 Confirmed STACK 使用 `buildbeat-stack-baseline:v1`;旧 `solobaton-stack-baseline:v1` 仅为读取兼容,缺基线时诚实显示 `stack.unverified`。
192
- > 5. 已有 decisions.md 只补一行 ADR 索引口径;只有命中五项长期技术判据的决定才新建 ADR,历史普通拍板不追补、不拆表。
193
- > 6. WP2.4 是新增安装能力,不自动改动任何已拷出项目;legacy 项目继续按上述所有权分类手动迁移。新的 `init/adopt` 只产生 `.buildbeat/manifest.json`;旧项目不得仅靠重命名 marker 伪造受管基线。
194
- > 7. 品牌迁移不自动改写已拷出项目。保留旧 namespace 可继续只读兼容;若要迁移到 `BUILDBEAT.md` / `.buildbeat`,必须先做备份、ownership 核对和独立 dry-run,不同时保留两份 manifest。
195
-
196
- ## v1.16.3 — 2026-08-23
197
-
198
- > 主题:修复 npm 上不可变 README 的执行命令永久落后一版的发布闭环。脚手架版本仍是 v1.16,CLI 命令边界不变,项目写入/升级/卸载仍未开放。
199
- > **拷出项目升级**:业务模板和已拷出项目零修改;本补丁只修复 npm 分发文档与机器检查。
200
-
201
- - **npm 落地页不再过期**:中英 README 与 CLI 合同的可执行示例改用 `solobaton@latest`;同一份文件在发布前指向 registry 已有版本,发布后自然指向新版,不再因 tarball 不可变而永久落后
202
- - **可复现语义保留**:需要固定执行时先用 `npm view solobaton@latest version` 记录精确版本,再用该版本替换 `@latest`;精确 tag、commit、integrity 和 provenance 证据仍留在发布 runbook 与 GitHub Release
203
- - **防回归机器闸**:文档检查强制三份分发文档同时包含 `@latest` 执行入口和精确版本解析命令,并拒绝任何硬编码 semver 的 `npx`/全局安装命令
204
- - **候选证据边界**:`package.json` 与 manifest 已表达 `1.16.3` 候选,但在对应 annotated tag、OIDC 发布、registry/provenance/签名/隔离安装回读全绿前,已独立验证分发版仍是 `1.16.2`
205
- - **真实发布验收**:`solobaton@1.16.3` 已通过 GitHub OIDC 发布,官方 registry `latest`/精确 tarball/SLSA v1 provenance/registry signature/attestation/隔离安装/只读 `doctor`/registry README 独立回读全部通过;精确发布物由 `v1.16.3@821ea3e` 保全,并已创建匹配的 GitHub Release
206
-
207
- ## v1.16.2 — 2026-08-22
208
-
209
- > 主题:把 Trusted Publishing 从“已配置”推进到可实发验收的证据链。脚手架版本仍是 v1.16,CLI 命令边界不变,项目写入/升级/卸载仍未开放。
210
- > **拷出项目升级**:业务模板和已拷出项目零修改;本补丁只加固 npm 包的发布与供应链验证。
211
-
212
- - **npm 发布去长期 token**:新增手动触发的 GitHub Actions Trusted Publishing 工作流;发布 job 仅授予 `contents: read`、`id-token: write`,不读取 `NODE_AUTH_TOKEN` 或 `NPM_TOKEN`
213
- - **发布源收紧**:只接受三段式 annotated tag;发布时 tag 目标、checkout `HEAD`、`GITHUB_SHA` 与远端 `main` HEAD 必须四者全等,不允许从旧 tag 或非 `main` ref 发布
214
- - **registry + provenance 回读**:`npm publish` 后不只等版本可见,还必须读到精确的 `dist.attestations.url` 和 SLSA v1 predicate;缺 provenance 则工作流失败
215
- - **签名与安装实测**:工作流从官方 registry 安装新包、核对可执行文件版本,并通过 `npm audit signatures` 验证 registry signature 与 provenance attestation
216
- - **可恢复发布**:发布与回读拆为独立 job;已存在版本或 `npm publish` 响应不确定时,只有 registry `dist.integrity` 与已审 tarball 精确一致才继续,并由 5 个发布状态回归覆盖
217
- - **发布身份收紧**:OIDC job 的第三方 Action 固定到完整 commit SHA,并绑定需人工批准且仅允许受保护分支的 `npm-publish` GitHub Environment;npm Trusted Publisher 仍必须配置同名 environment
218
- - **候选与分发证据分离**:`package.json`/manifest 可表达 `1.16.2` 候选,但可执行的 `npx`/安装文档在新版本完成 registry/provenance/安装回读前继续指向已独立验证的 `1.16.1`
219
- - **证据边界**:workflow/绑定/tag 存在都不等于 OIDC 发布已验证;只有新版本工作流成功、registry/provenance 回读和独立安装全通过后,才能创建匹配的 GitHub Release
220
- - **真实发布验收**:`solobaton@1.16.2` 已通过 GitHub OIDC 发布,官方 registry `latest`/精确 tarball/SLSA v1 provenance/registry signature/attestation/隔离安装/只读 `doctor` 独立回读全部通过;精确发布物由 `v1.16.2@368f1f2` 保全,并已创建匹配的 GitHub Release
221
-
222
- ## v1.16.1 — 2026-08-22
223
-
224
- > 主题:把 CLI v0 从“只可源码运行”推进到可审计的 npm 公共分发。脚手架版本仍是 v1.16,项目写入能力仍未开放;本补丁只建立 CLI 包的安装、更新、移除和发布证据链。
225
- > **拷出项目升级**:业务模板和已拷出项目零修改。`npm uninstall --global solobaton` 只移除全局 CLI,不删除项目中的 Solobaton 文件;项目生命周期 `solobaton upgrade/uninstall` 仍保持 fail-closed。
226
-
227
- - **正式 npm 入口**:发布 `solobaton@1.16.1`;一次性运行使用带版本的 `npx --yes solobaton@1.16.1 ...`,全局安装使用 `npm install --global solobaton@1.16.1`
228
- - **包生命周期与项目生命周期分离**:`npm install --global solobaton@latest` 更新 CLI 包,`npm uninstall --global solobaton` 移除 CLI 包;二者都不写业务项目,也不等价于尚未开放的 `solobaton upgrade/uninstall`
229
- - **发布护栏**:`publishConfig` 固定 public npm registry 和公开可见性,`prepublishOnly` 重跑 CLI、文档与 pack 检查;文档检查要求包版本、Changelog、安装命令和 manifest 示例对齐
230
- - **分发元数据**:补齐 homepage 与 issue tracker;包继续保持零第三方运行时依赖、Node.js 20+,并携带 canonical templates、Skill、CLI 合同和示例
231
- - **回归证据**:CLI 19/19、Shell 行为 38/38,并对实际 tarball 做隔离安装、版本、`doctor` 和零项目写入验证
232
- - **后续发布安全**:首次包创建使用 npm 交互式 2FA;包存在后切换到 GitHub Actions Trusted Publishing/OIDC 和自动 provenance,不保存长期发布 token
233
-
234
- ## v1.16 — 2026-08-22
235
-
236
- > 主题:建立 `Skill + CLI` 双入口的第一块确定性地基。CLI v0 只做 `doctor` 与 `init/adopt --dry-run`,把项目扫描、布局识别、生命周期阻塞和未来文件所有权规则变成可测试接口;所有写操作继续 fail-closed,不拿“规划中的 upgrade/uninstall”冒充已交付能力。
237
- > **拷出项目升级**:没有模板文件需要替换。项目可把 `SOLOBATON.md` 版本更新为 v1.16;若从上游源码运行 `node bin/solobaton.js doctor <项目根>`,旧项目会被诚实标为 `legacy/unmanaged`(缺 manifest),不影响现有 Shell 护栏。CLI 尚未发布 npm,不要写 `npx solobaton` 作为已可用安装路径。
238
-
239
- - **零依赖 Node CLI v0**:新增 `package.json`、`bin/solobaton.js` 与 `src/`;要求 Node.js 20+,包内带 canonical templates,但运行时不引入第三方依赖
240
- - **只读生命周期命令**:`doctor` 检查安装/布局/版本/关键文件/占位符/Hook/依赖降级;`init --dry-run` 规划默认布局;`adopt --dry-run` 规划紧凑布局和存量接管;均支持稳定 `--json`
241
- - **写操作 fail-closed**:`init/adopt` 缺 `--dry-run` 返回 exit 2 且零写入;`diff/upgrade/uninstall` 只保留命令名并明确返回未开放,避免把危险半成品包装成正式能力
242
- - **生命周期合同**:`docs/CLI.md` 冻结 `replace-if-unmodified / three-way-only / project-owned / merge-only` 四类文件策略、manifest schema 1、升级三方比较、卸载保留规则、事务回滚和 Hook/.gitignore 合并边界
243
- - **扫描隐私边界**:最多四层/5,000 条目,跳过构建与 vendor 目录,不跟随 symlink;JSON 只输出路径/计数/能力元数据/finding code,不回显源码、配置值或 Secret
244
- - **CLI 回归与 CI**:Node 内置测试覆盖 19 个场景;CI 在 Node 20/24 与 Ubuntu/macOS 组合执行 `npm ci`、测试和 pack 内容检查
245
- - **刻意未做**:没有项目文件写入、manifest 落盘、自动升级/卸载、npm publish、Git 初始化/提交/推送或 Windows Shell 护栏兼容声明;Skill 仍负责代码级理解、少量提问和人 Gate
246
-
247
- ## v1.15 — 2026-08-22
248
-
249
- > 主题:从「PR 里描述做过验证」迈到「仓库自己可重复证明」。README 只承担定位与上手,完整规则继续单点留在 SKILL;已发生过的脚本回归变成动态沙盘测试,PR/main 变更由 CI 自动执行。
250
- > **拷出项目升级**:整文件替换 `scripts/bus-check.sh`、`scripts/design-preview.sh`、`scripts/pre-commit.sh`(紧凑布局则替换 `pm/scripts/` 同名文件),更新项目 `SOLOBATON.md` 版本即可。三处都是带空格路径/静态检查兼容补丁,没有新增流程 Gate 或配置项;仓库自身的 `.github/`、`tests/` 不拷进业务项目。
251
-
252
- - **README 渐进式重构**:中英文首屏统一为「交付协议与脚手架,不是 Agent Runtime」;保留一句话 Bootstrap、存量接管、适用边界和能力降级;删除长样例输出、十条规则复述和不可持续的兼容性绝对声明,完整语义链接回 `SKILL.md`
253
- - **仓库行为回归套件**:`tests/test-scripts.sh` 用 `mktemp` 动态创建隔离 Git 沙盘,覆盖默认/紧凑布局、协调层腐烂、幽灵 hash 与 URL 边角、多域 status、换期例外、批量 stage、契约提示降噪、gitleaks 阻断、验证占位符、真渲染路径和漂移基线保护,当前共 38 个断言
254
- - **文档可移植性检查**:`tests/check-docs.sh` 校验全部受版本控制的 Markdown 相对链接、拒绝 `filecite/cite` 内部标记、核中英 README 结构/frontmatter/关键模板与示例版本,不再把一次性研究环境引用当交付证据
255
- - **GitHub Actions CI**:PR 与 main push 自动跑 Bash 语法、ShellCheck、文档检查、commit whitespace,并在 Ubuntu/macOS 双平台跑行为套件;Windows 仍未声称支持
256
- - **Shell 健壮性**:`bus-check.sh` 不再用 `ls | grep` 发现子仓,带空格的子仓名可稳定识别;`design-preview.sh` 不再用 `ls` 选择 HTML,带空格入口可正确 URL 编码;`pre-commit.sh` 的 status 计数改为单次 `awk`
257
- - **刻意未做**:不新增 Gate/域/reviewer 模式,不先造完整 CLI,不拆出一组会复制 SKILL 语义的 docs;下一阶段先收外部试点数据再决定产品面扩张
258
-
259
- ## v1.14 — 2026-08-22
260
-
261
- > 主题:给 reviewer 加 `review-ready` 硬前置与调用预算。写者先把候选收敛干净,独立 reviewer 再一次消费稳定候选;不再让 reviewer 充当实现中的后台 lint,也不让一个 subagent 用连续状态更新制造“框框 review”风暴。
262
- > **拷出项目升级**:① 补丁修改根 `AGENTS.md` 规则⑥与红线 5;② 整文件替换 `.claude/agents/reviewer.md`;③ 更新 `指挥台.md` 的 review-ready 节奏;④ 更新项目 `SOLOBATON.md` 版本并在 `decisions.md` 记一次流程拍板。历史报告/status 不回改,脚本零改动。
263
-
264
- - **review-ready 四项硬前置**:首次 milestone 只能在工作包实现/写者自查完成、所有候选仓 `HEAD=candidate` 且工作树干净、受影响/全量 L3 与真渲染证据绿、无已知待修或计划改 hash 后启动;缺一项就不派 reviewer
265
- - **首次 milestone 前不做伪 delta**:鉴权/租户/Secret/fail-closed/持久化等写者自发现问题先集中进实现语义清单并自行收敛;只有修改已冻结对外契约或不可逆副作用才提前 `STOP_NOW`,批准后按一个风险批次核 `risk-delta`
266
- - **reviewer 调用预算**:每工作包每 Gate 默认 1 次 milestone;首轮 P0/P1 合并修完后 1 次 closure,P2 不复核;milestone 完成后真正新生的高风险语义才追加 `risk-delta`
267
- - **旧候选立即作废**:reviewer 返回前 candidate 改变 → 本次审查标 `SUPERSEDED` 并停止;写者重新收敛到 review-ready 后才启动替代 milestone,不得把连续自修包装成 delta 链
268
- - **单次静默输出**:reviewer 除输入缺失/真实阻塞外不发中间进度和分批 findings,整个 scope 核完后一次返回;`milestone` 缺 review-ready 证据只回 `NOT_READY`,不制造 P0/P1/P2 报告
269
- - **文档与模板同步**:`SKILL.md`、中英 README、`templates/AGENTS.md`、reviewer、指挥台及 example 更新;新反模式记入 lessons 第 18 条
270
-
271
- ## v1.13 — 2026-08-22
272
-
273
- > 主题:把「细粒度追踪」与「执行/审批粒度」解耦。会话按用户级工作包持续推进,不因子文档/commit/reviewer/status 过早结束;审批分 `STOP_NOW / BATCH_AT_GATE / NO_APPROVAL`,只让真正改变授权、冻结语义或不可逆状态的事项立即打断人。
274
- > **拷出项目升级**:① **只补丁修改**根 `AGENTS.md` 规则③/⑤/⑦/⑨并新增「任务包与人批节奏」(项目自己的域表与扩展规则不得被模板整文件覆盖);② 在当期看板新增「当前工作包 + 决策收件箱」,更新 `pm/decisions.md` 的决策包口径、`pm/changes/README.md` 的草案/冻结分界、`pm/status/README.md` 的按包更新口径与 `指挥台.md`;③ 更新项目 `SOLOBATON.md` 版本并在 `decisions.md` 记一次流程拍板。历史部分决策行/status 不回改,脚本与 reviewer 模板零改动。
275
-
276
- - **任务包信封**:多步骤工作明确 `objective / in_scope / terminal_condition`;需求 ID、验收项、原子 commit 继续细分但只作追踪单位。目标范围内仍有安全可逆工作就自动继续;单个文档提交、reviewer 返回、status 回写或普通 P2 不再构成任务结束
277
- - **终止条件收紧**:只允许「用户级目标带证据完成 / 必须由人处理的真实阻塞 / 用户明确只要检查点」三类;从流程上消灭交一个子产物就等用户说“继续”
278
- - **审批三级**:`STOP_NOW` 覆盖跨 Gate、扩范围、已冻结对外语义、不可逆外部动作与风险接受;`BATCH_AT_GATE` 把冻结前可逆选择攒到门前默认一次问 2–5 个(确实只有 1 个就单项);事实、推导约束、归档/status/P2 与不改外部语义的可逆细节走 `NO_APPROVAL`
279
- - **人批预算**:每个工作包、每道 Gate 默认只有 1 个批量审批请求;用户部分回答/要求解释继续沿用同一决策包编号,不重新包装成新审批;不阻塞的工作继续推进
280
- - **决策包而非验收项逐条批**:产品域先区分独立决策变量与派生验收约束;只把前者送人批。分轮回答暂存看板决策收件箱,收敛后 `decisions.md` 只记一行,不再沉淀 `3/14 → 11/14 → 14/14` 式部分状态
281
- - **草案/冻结分界**:`pm/changes/` 允许在已批准工作包内持续收敛草案和补证,到 Gate 一次冻结;冻结前不得冒充 canonical 或进入共享实现,冻结后语义 delta 才触发立即停与回流
282
- - **状态降噪**:原子 commit 保持可回滚,但 status 只在工作包完成、里程碑候选形成或真实阻塞时更新;记录的是交付候选/报告 hash,不是 status 自身 commit(禁止自引用),提交粒度不再决定交互粒度
283
- - 本次回灌来自真实运行数据:任务/状态提交密度、部分决策行和审批式收尾显著高于用户级成果数。解药记入 lessons 第 17 条
284
-
285
- ## v1.12 — 2026-08-22
286
-
287
- > 主题:核查门从「按小任务反复全审」校准为「机器闸常驻 + 高风险 delta 定向核 + 里程碑候选一次全核」,保留写者≠审者,降低流程吞吐损耗。
288
- > **拷出项目升级**:① **只补丁修改**根 `AGENTS.md` 规则⑥与红线 5(项目自己的额外规则/域表不得被模板整文件覆盖);② 整文件替换 `.claude/agents/reviewer.md`;③ 更新 `pm/changes/README.md` 的「实现语义清单 / 候选 hash 集」、当期看板核查门行与 `pm/status/README.md` 的结论摘要口径;④ 在项目 `decisions.md` 记一次流程拍板。历史核查报告不回改,脚本零改动。
289
-
290
- - **三层核查分工**:轻量机器闸每次提交,受影响自动化测试按变更批次,里程碑候选跑全量并留证据;任务中只对冻结契约、鉴权/租户/Secret/fail-closed、持久化或不可逆外部副作用等高风险语义做定向 delta 核查;完整四方一致性审查绑定一个里程碑候选 hash 集,同一批只做一次
291
- - **候选 hash 复用**:已核候选 hash 未变且机器证据仍绿,合并前直接复用原结论,不得为「再放心一次」重复全审;候选变化只核 `base..candidate` delta,finding 修复走 `closure`,新增高风险语义走独立 `risk-delta`
292
- - **文件数不再充当风险语义**:`>=N 文件`仍可由 pre-commit 当批量 stage 卫生信号,但归档/改名/status 回写/草稿演进不因文件多自动触发完整 reviewer
293
- - **阻塞口径收敛**:P0/P1 阻塞;P2 默认挂账、不触发一轮完整复核(项目可在立项时显式升格)。首轮报告保留问题原文,后续仅追加 finding closure 表,不复制整段背景
294
- - **实现期不靠记忆**:`pm/changes/` 模板新增「实现语义清单」,只记新增失败态、不可达状态、默认值/阈值、fail-closed 方向等实现期自由度;到里程碑核查一次消费,替代每个微任务各写一份报告
295
- - **reviewer 模板增加三种模式**:`milestone` / `risk-delta` / `closure`,明确输入 hash、审查边界与结论不可外推范围;完整报告默认只在 milestone 产生
296
- - 本次回灌来自真实项目的人机工程反馈:当审查产物开始大于交付产物、同一语义链在任务收尾/合并前/阶段门被重复核,核查门已从防线退化为吞吐瓶颈。解药记入 lessons 第 16 条
297
-
298
- ## v1.11 — 2026-08-08
299
-
300
- > 主题:装载入口去厂商化(回灌教训 15)。**breaking(两个文件改名)**:拷出项目要跟着改名 + 复核全仓引用。
301
- > **拷出项目升级**:① `CLAUDE.md` 改名 `AGENTS.md`(内容原样搬,不改一字)→ 原位新建一行指针 `CLAUDE.md`(拷 `templates/CLAUDE.md`);② `Agent.md` 改名 `ARCHITECTURE.md`;③ 复核残留 `grep -rn 'CLAUDE\.md\|Agent\.md' <项目根> --include='*.md'`,应只剩指针文件自身与 CHANGELOG 历史条目。
302
-
303
- - **装载入口从 `CLAUDE.md` 换成开放标准 `AGENTS.md`**:此前只认 `AGENTS.md` 的工具(Codex CLI / Gemini CLI / Aider / Zed 等)完全装载不到总线规则,开工护栏与状态分写在那些会话里**静默失效**——而并行多会话正是本方法论的核心场景,厂商锁在这里杀伤面比单会话大一个量级
304
- - **`CLAUDE.md` 降级为一行指针**(兼容只认此名的工具):🔴 不复制内容(复制 = 自造 lessons 第 1 条 SSOT 腐烂);🔴 不用符号链接(Windows 上 git 默认 `core.symlinks=false`,clone 出来静默退化成文本文件)
305
- - **`Agent.md` → `ARCHITECTURE.md`**:原名与标准 `AGENTS.md` 仅差一个 S、语义却相反(前者按需读 / 后者自动装载),是长期的人机双向误判源
306
- - **白捡标准的层叠语义**:向上收集沿途所有 `AGENTS.md` 合并、就近优先 → §8.5「分层 `AGENTS.md`」不必自己定义优先级,根写全局 / 子仓写局部,根文件因此能保持精简
307
- - **明确拒绝 `AGENTS.override.md` 类本地覆盖**(SKILL §3):装载入口装的是红线与护栏,允许不进 git 的覆盖 = 给绕过护栏开后门,reviewer 与 pre-commit 都看不见
308
- - 顺手修一处既有漂移:SKILL §7 原写「红线……写进 `Agent.md`」,而红线实际单点在装载入口 §3,改为「单点写进根 `AGENTS.md` §3」
309
- - 同步范围:SKILL(§3 布局图 + 装载约定段 / §4 / §7 / §8.1 / §8.2 / §8.5 / §9 模板索引)、双语 README 文件树、`templates/` 与 `example/` 全部交叉引用;**5 个脚本零改动**(本来就不引用这两个文件名)
310
-
311
- ## v1.10 — 2026-08-08
312
-
313
- > 主题:协调层布局可搬迁(治 §8.5 接管存量项目的 `scripts/` 撞车)。**非 breaking:默认布局路径一字未改,已落地项目只换脚本即可。**
314
- > **拷出项目升级**:`scripts/` 下 5 个 `.sh` 整文件替换;`SOLOBATON.md` 加「协调层布局」一行。
315
-
316
- - **5 个脚本改为自定位协调层根**:此前一律写死 `ROOT=$(dirname $0)/..`(= 假设"脚本必须在根下一层"),现改为**向上最近的含 `pm/NOW.md` 的目录**(上探 4 层,探不到退回旧假设)。于是 `scripts/` 整树可以原样搬到 `pm/scripts/`,脚本零改动
317
- - **脚本间互调改走 `SDIR`(本脚本目录)**:`verify-status.sh` / `live-status.sh` / `drift-check.sh` / `live-config.sh` 的调用与"未配置"提示、`bus-baseline.json` 与 `.last-green-*` 的落点,全部随脚本目录走——不再写死 `scripts/`。同伴脚本约定为"与 bus-check 同目录"
318
- - **pre-commit 闸② 两种布局都认**:`scripts/bus-check.sh` 与 `pm/scripts/bus-check.sh` 依次探测,提示里回显实际路径;子仓仍按"无 `pm/NOW.md` 即跳过"自动放过
319
- - bus-check 表头加打 `(协调层脚本: <SDIR>/)`:根解析错了(嵌套项目 / 骨架没建)一眼看得见,不静默假绿
320
- - **SKILL §3 新增「布局二选一」表**:默认(根上 `scripts/`,§8 从零起项目用)/ 紧凑(`pm/scripts/` + `pm/指挥台.md` + `pm/SOLOBATON.md`,项目根只多 `pm/` 一个目录,§8.5 接管存量项目用);🔴 一个项目只选一种、路径统一填实,混写 = 自造 SSOT 腐烂;并点明 `CLAUDE.md` 与 `.claude/agents/` 是工具装载约定、永远在根、与布局无关
321
- - **§8.5 增第 5 步**:接管存量项目默认走紧凑布局,列出需改调用路径的 6 个文档 + `grep` 复核命令(存量项目根几乎必有自己的 `scripts/`,协调层混进去会和它的构建/部署脚本搅在一起)
322
- - `SOLOBATON.md` 增「协调层布局」标记行(规则⑨ 单点事实:布局是哪种,单点可查);README 双语同步接管段
323
- - 实测覆盖:两种布局各跑 bus-check(工作区根解析 / 子仓自动发现 / 提示路径回显)、pre-commit 闸②(干净放行 + 腐烂拦截)、`verify-status --run` 标记落点、从子仓 cwd 调用、无骨架兜底
324
-
325
- ## v1.9 — 2026-08-01
326
-
327
- > 评估(第三版)回灌:消灭「常驻红字」(D2)——红字 = 真有事,是腐烂检测全部价值所在;太吵会瞎,和太松会漏同罪。
328
- > **拷出项目升级**:`scripts/pre-commit.sh`、`scripts/bus-check.sh` 整文件替换;新增 `scripts/verify-status.sh`;`.gitignore` 加 `.last-green-*`;`pm/NOW.md` 换期 checklist ① 加 `BUS_ALLOW_BULK` 提示。
329
-
330
- - **收窄闸⑤(D2 源头一,真实仓回放 59% 提交误响)**:只看契约**提供方**(controller/endpoint/schema/.proto/routes),排除**消费方**(src/api/ 等客户端调用层、前端页面 router)——消费方是跟随契约不是改契约;匹配/排除模式可用 `BUS_CONTRACT_HINT` / `BUS_CONTRACT_SKIP` 按项目调
331
- - **新增 verify-status.sh 参考实现(D2 源头二,此前是空插座)**:SUITES 表(npm/mvn 样例)+ `--run` 真跑并把「上次全绿时间」记进本地标记文件(`.last-green-*`,不入 git——新机器显示"从未全绿"是诚实的);还是占位符时如实 ⚠️
332
- - **修 D1 残留**:反引号段同时含链接与 hash 时,改为从段内**抠掉** URL/digest 而非整段丢弃,真 hash 不再陪葬
333
- - 换期 checklist ① 注明:归档超 40 文件会触发闸④,该单用 `BUS_ALLOW_BULK=1` 提交(评估指出的人机工程缺口)
334
-
335
- ## v1.8 — 2026-08-01
336
-
337
- > 工业化差距评估(第二版)回灌:修 D1 误报、补齐规则机器化、存量项目入口、版本/回灌通道、证据分级。
338
- > **拷出项目升级**:`scripts/bus-check.sh`、`scripts/pre-commit.sh` 整文件替换;`CLAUDE.md` 规则⑥/⑩ 补丁;新增根 `SOLOBATON.md`;`pm/NOW.md` 换期 checklist 第 4 条;`pm/status/README.md` 反引号约定。
339
-
340
- - **修 D1 幽灵 hash 误报**(评估指出,实测确认):提取只认**反引号内** token(status 约定即解析规则)+ 排除 URL/digest 串 + 须同含字母与数字——`defaced`、URL 片段不再误拦提交;代价:纯字母/纯数字 7 位真 hash 良性漏检(约 0.1% / 3.7%)
341
- - bus-check 新增**机器闸自检**:meta 仓与各子仓查 `.git/hooks/pre-commit`(或 core.hooksPath),未装红字——用在跑的闸守新闸
342
- - bus-check 新增**工程层验证能力**段:接 `scripts/verify-status.sh`(每行「套件 命令 上次全绿」),未配置红字提醒「L3 证据无从谈起」
343
- - pre-commit 补三道闸:**多域 status 同 commit 即拦**(规则⑦;换期仪式连同 archive/ 提交或 `BUS_RITUAL=1` 放行)、**暂存 >40 文件即拦**(红线2,像 add -A;`BUS_ALLOW_BULK=1` 放行)、**疑似接口文件未动 PROTOCOL 只提醒不拦**(规则②,契约在 meta 仓、代码在子仓,跨仓无法原子核验);修中文文件名被 git quotepath 转义导致规则匹配不上的 bug
344
- - **证据分五级 L0–L4** 写进规则⑥(标准轨最低 L3=自动化测试过,重轨/上线必须 L4=线上实测;L1 `文件:行` 只作定位不单独作数)
345
- - 新增 **§8.5 接管存量项目**(10→N 入口):摸底(全自查)→ 划绞杀者边界(新地盘全套总线 / 老地盘只维护走重轨)→ **第 0 期强制补最小验证套件** → 分层 CLAUDE.md
346
- - 新增 **templates/SOLOBATON.md 版本标记**:项目根记录所用版本;升级对照 CHANGELOG 各版的「拷出项目升级」行;回灌通道挂进换期仪式(「回灌一问」)
347
- - 元原则「**能实查的不问人**」入 §4 正文与模板 CLAUDE.md(规则⑨/②的推广,与 Bootstrap 提问三原则同源)
348
- - README 双语同步:接管仪式入口、文件树、白话表新增「证据分级 / 接管仪式 / SOLOBATON.md」
349
-
350
- ## v1.7 — 2026-07-31
351
-
352
- > 主题:规则从「靠自觉」到「有机器闸」(外部工业化差距评估回灌第一步:每条规则问一句「违反了会怎样」,答案是「靠自觉」的就机器化)。
353
-
354
- - bus-check 新增 **`--strict` 机器闸模式**:确凿检出「协调层腐烂 / 幽灵 hash / 生产漂移」任一即 exit 1;「无法判定/未配置/跳过」不拦,不给流水线添堵;不带参仍恒 exit 0 只当仪表盘
355
- - bus-check 新增**幽灵 hash 核验**:pm/status 里每个 commit hash 逐个对 meta 仓 + 全部子仓 `git cat-file -t`,查无此号红字报警(lessons 第 11 条机器化;此前只能靠接手会话自觉核)
356
- - drift-check 退出码语义化:确凿检出漂移 exit 2(供 --strict 拦截);无漂移/跳过/无法判定仍 exit 0,`--update-baseline` 失败仍 exit 1
357
- - 新增 `templates/scripts/pre-commit.sh` **红线机器闸**:gitleaks 扫暂存区拦凭据(v8.19+ `git` 子命令与旧版 `protect` 自适应)+ meta 仓 bus-check --strict 拦腐烂/幽灵 hash;红线3 已禁 `--no-verify`,闸绕不过
358
- - **gitleaks 从"可选"转默认**:Bootstrap checklist 第 7 步改为默认装机器闸(此前 gitleaks 只作为可选 Stop hook 的前置出现,不装 hook 就整个不出现——正是 lessons 第 10 条的坑);Stop hook 自动 push 顺延为可选第 8 步
359
- - decisions.md 增「**拍板人**」列:单人项目固定写自己;Gate3 合并与 Gate4 上线未必同一人批,审计与将来多人由此可查(模板与 example 沙盘同步)
360
- - README(中英)同步:§2 手动路径补装闸命令、§4 示例输出补幽灵 hash 核验段与拍板人列、§5 机制、§6 文件树、§8 规则④、§9 白话表新增「机器闸 / gitleaks / pre-commit hook」
361
-
362
- ## v1.6 — 2026-07-28
363
-
364
- > 全项目 review 回灌(3 个独立审查代理交叉核查 + 脚本沙盘实测)。
365
-
366
- - **修沙盘时间线硬伤**:Gate3 拍板改 06-19(此前 06-18,早于 P1 发现日,因果倒置);回写落点 ④→⑤;P1 归属统一为"走查发现";README 双语示例块同步
367
- - **修 drift-check 基线保护**:`--update-baseline` 任一应用查询失败即拒绝落盘并 exit 1(此前平台 CLI 全失败会用空基线**覆盖好基线**,漂移信号永久丢失);检测模式全失败改报"无法判定"而非谎报"无漂移";APPS 数组清空不再 unbound variable 崩
368
- - **bus-check 检测诚实化**:NOW 缺失/占位符时如实报"无法判定/跳过"而非打假 ✅;新增当期看板坏指针告警;meta 仓仅本地领先时提示 git push(此前误导性提示 pull)
369
- - 中文 README:去掉作者本机路径前缀 `<试点工作区>/`;首句"活塞"歧义改"活儿都塞";示例块与脚本实际输出逐字对齐;§6 树补 gitignore.template(中英同)
370
- - 英文版:SSOT 统一为 single source of truth 并展开缩写;补漏译(开工四步行/P1 bug 名/或无上游/若干从句);5 处措辞修正(主语错位/It.2 等)
371
- - 口径统一:SKILL"两个后端"改"多个"(与 README 一致);SKILL §6 归档清单补"需求";lessons 第 4 条解药行随域改名;模板/沙盘内 lessons 引用注明"solobaton lessons"出处(拷入新项目后不再悬空)
372
-
373
- ## v1.5 — 2026-07-28
374
-
375
- - bus-check 新增**协调层腐烂检测**:NOW 长肥(>40 行)/ 非当期看板滞留 pm/ / status 超长(>60 行),开工红字报警;阈值 `BUS_NOW_MAX` / `BUS_STATUS_MAX` 可调(仪式没有护栏 = 没有仪式)
376
- - 新增期产物归档约定:走查图 / E2E 报告等证据**生成时即写** `pm/archive/<期>/evidence/`,换期零搬运;换期 checklist 增第 ④ 条(核对证据归位、无散落临时文件)
377
- - README 双语同步机制说明与 bus-check 示例;README 底部不再写"当前 vX"(版本这个事实也只留 CHANGELOG 一处)
378
-
379
- ## v1.4 — 2026-07-26
380
-
381
- - 新增 `example/` 教学沙盘:虚构「简账」记账应用跑完一期的全套总线文件快照(内容全部虚构脱敏,hash 为示意值)
382
- - 新增英文版 README(`README.en.md`),中英 README 顶部互链
383
- - README §4 新增 bus-check 示例输出(节选);版本史迁出至本文件
384
- - templates 新增 `gitignore.template`(meta 仓排除子仓与 `*.env`;文件名不带点,避开 cp 丢点文件的坑)
385
- - Bootstrap 第 7 步补 secret 扫描示例命令(gitleaks)
386
- - bus-check.sh 健壮性:无 perl 时降级为不截断输出;新增 `BUS_CHECK_NO_FETCH=1` 离线/弱网跳过 fetch
387
- - GitHub 仓库补 topics(claude-code / ai-agents / multi-agent 等)
388
-
389
- ## v1.3 — 2026-07-26
390
-
391
- - Bootstrap 改引导式:先自查代码(仓数/平台/UI/契约边界),只问 3–4 个非技术问题,一屏确认再生成,占位符全部填好
392
- - 三域默认名改为 产品 / 全栈(含运维)/ 测试;访谈新增「分工用默认还是自定义」一问
393
- - README 简介重构:先说解决什么问题(含单会话困局),再说怎么用,附记账应用实例(含首次对话设定角色);新增 §9 名词白话表
394
- - 修复:快速上手 cp 命令 `*` 不匹配点文件会丢 `.claude/agents/reviewer.md`,改为 `cp -R templates/.`
395
- - 修复:README mermaid 在 GitHub 渲染失败(标签全加引号 + `<br/>` 闭合)
396
- - drift-check 指纹注释补诚实边界:低熵值可被字典猜出,基线按半敏感文件对待
397
-
398
- ## v1.2 — 2026-07-04
399
-
400
- - 回灌教训 14(UI 元注释复发);新增 CLAUDE.md §1.5「界面零元注释」红线;reviewer 审查清单第 6 条
401
-
402
- ## v1.1 — 2026-07-02
403
-
404
- - 回灌三周实战:生产漂移检测机制(drift-check.sh:env 指纹基线 + 镜像 tag↔git 锚定)+ 教训 11–13
405
-
406
- ## v1 — 2026-06-10
129
+ ## v1 系列(2026-06-10 ~ 2026-08-25)
407
130
 
408
- - 首次蒸馏:方法论主体(四支柱 / 域模型 / 十条规则 / 四 Gate + 三轨 / 三仪式 / 红线)+ 模板脚手架 + 教训 1–10
131
+ v1 ~ v1.21.0 的条目原文见 [`CHANGELOG-v1.md`](https://github.com/HaiYangBG1/BuildBeat/blob/main/CHANGELOG-v1.md)(仅仓库内,不随 npm 包分发)。
package/README.en.md CHANGED
@@ -66,7 +66,7 @@ These are available AI perspectives, not mandatory human-role handoffs or a requ
66
66
 
67
67
  ## Put the work in a Loop
68
68
 
69
- After the required plan acceptance, `buildbeat-v2` calls configured Workers in an isolated Git worktree to implement, verify, review, and fix the change. Review is performed by a fresh-context, read-only reviewer worker; any write to the worktree is caught by a before/after snapshot comparison and recorded as a failure.
69
+ After the required plan acceptance, `buildbeat` calls configured Workers in an isolated Git worktree to implement, verify, review, and fix the change. Review is performed by a fresh-context, read-only reviewer worker; any write to the worktree is caught by a before/after snapshot comparison and recorded as a failure.
70
70
 
71
71
  ```mermaid
72
72
  flowchart LR
@@ -92,20 +92,20 @@ The merge decision means the candidate is ready for a merge. A human or a separa
92
92
 
93
93
  You need Node.js ≥ 20, Git, Bash, and an installed, authenticated AI coding tool.
94
94
 
95
- **1. Install the runtime.** Stable packages use `@latest`. The package includes the `buildbeat-v2` runtime and the `buildbeat` v1 lifecycle commands.
95
+ **1. Install the runtime.** Stable packages use `@latest`. The package ships one executable: `buildbeat`.
96
96
 
97
97
  ```bash
98
98
  npm view @haiyangbg/buildbeat@latest version
99
99
  npm install --global @haiyangbg/buildbeat@latest
100
100
  ```
101
101
 
102
- > The envelope templates the quickstart uses (`templates/v2/envelope/`) ship with the package since 2.0.1; see the [CHANGELOG](CHANGELOG.md) for what each version contains.
102
+ > The envelope templates the quickstart uses (`templates/v2/envelope/`) ship with the package; see the [CHANGELOG](CHANGELOG.md) for what each version contains.
103
103
 
104
104
  **2. Load the entry point.** Download or clone this repository, ask your AI tool to read its [`SKILL.md`](SKILL.md), and say this in the target project:
105
105
 
106
- > Set up BuildBeat for this project. Inspect the code and existing constraints first, then prepare v2 context and execution configuration for the first piece of work.
106
+ > Set up BuildBeat for this project. Inspect the code and existing constraints first, then prepare context and execution configuration for the first piece of work.
107
107
 
108
- The session inspects the project and prepares a goal, plan, verification commands, and Worker configuration. Execution starts after your acceptance. See the [quickstart](docs/v2/guide/01-quickstart.md), or the [migration guide](docs/v2/guide/08-migration-v1.md) for an existing v1 project (Chinese).
108
+ The session inspects the project and prepares a goal, plan, verification commands, and Worker configuration. Execution starts after your acceptance. See the [quickstart](docs/v2/guide/01-quickstart.md) (Chinese).
109
109
 
110
110
  **3. Try a handoff.** Once work records are saved, close the old session and open one without its chat history. Or synchronize the records and candidate so another authorized teammate can take over with their own tool:
111
111
 
@@ -128,19 +128,6 @@ To install from source, replace the marketplace address with this checkout's abs
128
128
 
129
129
  </details>
130
130
 
131
- <details>
132
- <summary>v1 lifecycle and former names</summary>
133
-
134
- `buildbeat doctor` checks a v1 scaffold; `init/adopt/upgrade` manage its lifecycle. They do not generate or migrate a complete v2 Work.
135
-
136
- ```bash
137
- npx --yes --package=@haiyangbg/buildbeat@latest buildbeat doctor /path/to/project
138
- ```
139
-
140
- See the [CLI reference](docs/CLI.md). BuildBeat was formerly Solobaton; the `solobaton` executable remains a compatibility alias. The historical example is in [example/](example/README.md) (Chinese).
141
-
142
- </details>
143
-
144
131
  ## Everyday use and applicability
145
132
 
146
133
  Once configured, talk to the session directly:
@@ -160,7 +147,7 @@ Teams collaborate through a shared Git repository and project agreements. BuildB
160
147
  ## Learn more and contribute
161
148
 
162
149
  - [Documentation index](docs/README.md): current guides, specifications, and historical records (Chinese).
163
- - [Capability matrix](docs/CAPABILITY-MATRIX.md): manual protocol, v1 CLI, v2 runtime, plugin, and verification scope (Chinese).
150
+ - [Capability matrix](docs/CAPABILITY-MATRIX.md): manual protocol, runtime, plugin, and verification scope (Chinese).
164
151
  - [Session handoffs](docs/v2/guide/11-session-handoff.en.md) · [Run recovery](docs/v2/guide/10-recovery.md) · [Approval and triage](docs/v2/guide/07-approval-guide.md) (last two in Chinese).
165
152
  - [Skill](SKILL.md): how a session uses BuildBeat; [lessons](lessons.md): the real incidents behind its mechanisms (Chinese).
166
153
  - [CHANGELOG](CHANGELOG.md) (Chinese) · [Contributing](CONTRIBUTING.md) · [MIT license](LICENSE).
package/README.md CHANGED
@@ -66,7 +66,7 @@ Git 管理需要长期保留的项目事实;本机文件保存运行中的状
66
66
 
67
67
  ## 让工作进入 Loop
68
68
 
69
- 接受所需计划后,`buildbeat-v2` 在隔离 Git worktree 中调用配置好的 Worker,推进实现、验证、审查与修复。审查由一个不带上下文、只读的 reviewer worker 执行,任何工作树写入都会被前后快照比对捕获并按失败落账。
69
+ 接受所需计划后,`buildbeat` 在隔离 Git worktree 中调用配置好的 Worker,推进实现、验证、审查与修复。审查由一个不带上下文、只读的 reviewer worker 执行,任何工作树写入都会被前后快照比对捕获并按失败落账。
70
70
 
71
71
  ```mermaid
72
72
  flowchart LR
@@ -92,20 +92,20 @@ flowchart LR
92
92
 
93
93
  需要 Node.js ≥ 20、Git、Bash,以及已安装并完成鉴权的 AI 编程工具。
94
94
 
95
- **1. 安装运行时。** 稳定发布包使用 `@latest`,同包包含 `buildbeat-v2` 运行时与 `buildbeat` v1 生命周期命令。
95
+ **1. 安装运行时。** 稳定发布包使用 `@latest`,可执行文件只有一个:`buildbeat`。
96
96
 
97
97
  ```bash
98
98
  npm view @haiyangbg/buildbeat@latest version
99
99
  npm install --global @haiyangbg/buildbeat@latest
100
100
  ```
101
101
 
102
- > 快速开始用到的信封模板(`templates/v2/envelope/`)自 2.0.1 起随包分发;版本与内容对照见 [CHANGELOG](CHANGELOG.md)。
102
+ > 快速开始用到的信封模板(`templates/v2/envelope/`)随包分发;版本与内容对照见 [CHANGELOG](CHANGELOG.md)。
103
103
 
104
104
  **2. 让会话加载入口。** 下载或检出本仓,让你的 AI 工具读取其中的 [`SKILL.md`](SKILL.md),然后在目标项目中说:
105
105
 
106
- > 用 BuildBeat 接管这个项目。先检查代码和现有约束,为第一项工作准备 v2 上下文与运行配置。
106
+ > 用 BuildBeat 接管这个项目。先检查代码和现有约束,为第一项工作准备上下文与运行配置。
107
107
 
108
- 会话先检查项目,补齐目标、计划、验证命令和执行配置;你接受后再启动。完整步骤见 [快速开始](docs/v2/guide/01-quickstart.md),已有 v1 项目见 [迁移指南](docs/v2/guide/08-migration-v1.md)。
108
+ 会话先检查项目,补齐目标、计划、验证命令和执行配置;你接受后再启动。完整步骤见 [快速开始](docs/v2/guide/01-quickstart.md)。
109
109
 
110
110
  **3. 试一次接力。** 在工作记录落盘后关闭旧会话,打开一个没有旧聊天历史的新会话;也可以同步记录与候选,让另一位有权限的成员用自己的工具接手:
111
111
 
@@ -128,19 +128,6 @@ npm install --global @haiyangbg/buildbeat@latest
128
128
 
129
129
  </details>
130
130
 
131
- <details>
132
- <summary>v1 生命周期与旧名称</summary>
133
-
134
- `buildbeat doctor` 检查 v1 骨架,`init/adopt/upgrade` 管理其生命周期;它们不会生成或迁移完整的 v2 Work。
135
-
136
- ```bash
137
- npx --yes --package=@haiyangbg/buildbeat@latest buildbeat doctor /path/to/project
138
- ```
139
-
140
- 完整合同见 [CLI 参考](docs/CLI.md)。BuildBeat 旧称 Solobaton,`solobaton` 可执行文件保留兼容别名;历史示例在 [example/](example/README.md)。
141
-
142
- </details>
143
-
144
131
  ## 日常使用与适用范围
145
132
 
146
133
  完成配置后,直接在会话里说:
@@ -160,7 +147,7 @@ BuildBeat 适合持续迭代、经常切换 AI 上下文、需要多角色协作
160
147
  ## 深入了解与贡献
161
148
 
162
149
  - [文档总入口](docs/README.md):当前指南、规范与历史记录。
163
- - [能力矩阵](docs/CAPABILITY-MATRIX.md):手工协议、v1 CLI、v2 运行时与插件的能力和验证范围。
150
+ - [能力矩阵](docs/CAPABILITY-MATRIX.md):手工协议、运行时与插件的能力和验证范围。
164
151
  - [跨会话接续](docs/v2/guide/11-session-handoff.md) · [运行恢复](docs/v2/guide/10-recovery.md) · [批准与分诊](docs/v2/guide/07-approval-guide.md)。
165
152
  - [Skill](SKILL.md):会话如何使用 BuildBeat;[lessons](lessons.md):机制背后的真实事故。
166
153
  - [CHANGELOG](CHANGELOG.md) · [贡献指南](CONTRIBUTING.md) · [MIT 许可](LICENSE)。