@haiyangbg/buildbeat 3.3.1 → 4.1.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.
- package/CHANGELOG.md +26 -0
- package/README.en.md +20 -124
- package/README.md +20 -124
- package/SKILL.md +73 -84
- package/docs/CAPABILITY-MATRIX.md +30 -39
- package/docs/MIGRATION.md +93 -0
- package/docs/README.md +8 -37
- package/docs/RELEASING.md +4 -3
- package/docs/v2/RFC-0001-product-definition.md +3 -0
- package/docs/v2/RFC-0002-domain-model.md +3 -0
- package/docs/v2/RFC-0003-workflow-policy.md +3 -0
- package/docs/v2/SPEC-0001-events-v1.md +3 -0
- package/docs/v2/guide/00-how-to-talk.en.md +12 -56
- package/docs/v2/guide/00-how-to-talk.md +12 -56
- package/docs/v2/guide/01-quickstart.en.md +42 -111
- package/docs/v2/guide/01-quickstart.md +42 -111
- package/docs/v2/guide/02-workflow-guide.en.md +13 -123
- package/docs/v2/guide/02-workflow-guide.md +14 -122
- package/docs/v2/guide/03-policy-guide.en.md +6 -50
- package/docs/v2/guide/03-policy-guide.md +6 -50
- package/docs/v2/guide/04-adapter-guide.en.md +7 -60
- package/docs/v2/guide/04-adapter-guide.md +7 -60
- package/docs/v2/guide/05-worker-contract.en.md +6 -53
- package/docs/v2/guide/05-worker-contract.md +7 -52
- package/docs/v2/guide/06-evidence-guide.en.md +8 -44
- package/docs/v2/guide/06-evidence-guide.md +9 -43
- package/docs/v2/guide/07-approval-guide.en.md +8 -110
- package/docs/v2/guide/07-approval-guide.md +8 -121
- package/docs/v2/guide/09-security-boundaries.en.md +13 -37
- package/docs/v2/guide/09-security-boundaries.md +13 -37
- package/docs/v2/guide/10-recovery.en.md +12 -96
- package/docs/v2/guide/10-recovery.md +12 -96
- package/docs/v2/guide/11-session-handoff.en.md +10 -75
- package/docs/v2/guide/11-session-handoff.md +10 -75
- package/docs/v2/guide/12-without-runtime.en.md +46 -0
- package/docs/v2/guide/12-without-runtime.md +46 -0
- package/docs/v2/guide/README.en.md +16 -36
- package/docs/v2/guide/README.md +16 -36
- package/example/AGENTS.md +15 -69
- package/example/README.md +8 -23
- package/example/delivery/envelope/prompts/builder.md +3 -1
- package/example/delivery/envelope/prompts/fixer.md +3 -1
- package/example/delivery/envelope/prompts/reviewer.md +3 -1
- package/example/delivery/work/WORK-EXPORT-DATE-FILTER/run-config.yaml +1 -1
- package/example//346/214/207/346/214/245/345/217/260.md +8 -40
- package/package.json +2 -1
- package/src/v2/adapters/notification-payload.js +40 -0
- package/src/v2/adapters/shell.js +3 -1
- package/src/v2/cli/run-config-check.js +129 -45
- package/src/v2/cli/run.js +853 -254
- package/src/v2/engine/reducer.js +2 -0
- package/src/v2/engine/risk-preset.js +14 -47
- package/src/v2/engine/workflow.js +177 -185
- package/src/v2/evidence/collector.js +12 -1
- package/src/v2/evidence/image.js +346 -0
- package/src/v2/policy/policy.js +219 -286
- package/src/v2/presets/software-delivery.yaml +1 -16
- package/src/v2/runtime/cache.js +22 -1
- package/src/v2/runtime/decisions.js +185 -31
- package/src/v2/runtime/findings.js +4 -1
- package/src/v2/runtime/notify.js +42 -36
- package/src/v2/runtime/orchestrator.js +811 -297
- package/src/v2/runtime/overview-repos.js +79 -0
- package/src/v2/runtime/overview.js +279 -47
- package/src/v2/runtime/release.js +233 -0
- package/src/v2/runtime/run-record.js +1 -0
- package/src/v2/workspace/workspace-manager.js +8 -0
- package/templates/v2/AGENTS.md +20 -73
- package/templates/v2/BUILDBEAT.md +2 -13
- package/templates/v2/envelope/prompts/builder.md +3 -1
- package/templates/v2/envelope/prompts/fixer.md +3 -1
- package/templates/v2/envelope/prompts/reviewer.md +3 -1
- package/templates/v2/run-config.example.yaml +9 -7
- package/templates/v2/work.example.md +16 -0
- package/templates/v2//346/214/207/346/214/245/345/217/260.md +8 -40
- package/docs/v2/skill/01-principles.md +0 -26
- package/docs/v2/skill/02-project-layout.md +0 -31
- package/docs/v2/skill/03-collaboration-rules.md +0 -45
- package/docs/v2/skill/04-rhythm-and-rituals.md +0 -104
- package/docs/v2/skill/05-red-lines.md +0 -13
- package/docs/v2/skill/06-bootstrap-and-takeover.md +0 -84
- package/docs/v2/skill/07-templates-and-lessons.md +0 -24
- package/example/.buildbeat/observe.yaml +0 -31
- package/src/v2/observe/observe-config.js +0 -194
- package/src/v2/observe/observe-reducer.js +0 -117
- package/src/v2/observe/observe.js +0 -427
- package/src/v2/presets/observe.yaml +0 -45
- package/src/v2/presets/policies/ui-render-gate.yaml +0 -13
- package/src/v2/presets/release-readback.yaml +0 -36
- package/src/v2/presets/risk/controlled.yaml +0 -39
- package/src/v2/presets/risk/fast.yaml +0 -19
- package/src/v2/presets/risk/release.yaml +0 -21
- package/src/v2/presets/risk/standard.yaml +0 -28
- package/templates/ARCHITECTURE.md +0 -50
- package/templates/contracts/PROTOCOL.md +0 -28
- package/templates/pm/adr/ADR-0000-template.md +0 -25
- package/templates/pm/adr/README.md +0 -15
- package/templates/pm/decisions.md +0 -11
- package/templates/standards/CODE.md +0 -23
- package/templates/standards/DESIGN.md +0 -36
- package/templates/standards/REVIEW.md +0 -20
- package/templates/standards/STACK.md +0 -31
package/SKILL.md
CHANGED
|
@@ -1,92 +1,97 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: buildbeat
|
|
3
|
-
description: BuildBeat
|
|
3
|
+
description: BuildBeat 用项目文件接续上下文,在隔离工作树内自动实现、验证、审查和修复,带证据停在人的合并决定。用于持续迭代、换会话或工具接手、查看进度、执行工作、处理决定和恢复中断。运行时 `buildbeat` 负责推进,Skill 负责使用路由。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# BuildBeat
|
|
6
|
+
# BuildBeat
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
承诺:换会话能接着干,AI 自动推进工作,交付有证据。入口是 Skill,执行需要本地 `buildbeat` 运行时;文件始终可读,手工接管时必须如实说明哪些自动机制没有执行。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## 运行时版本
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
先跑 `buildbeat --version`,按结果选命令:
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
14
|
+
- 4.x:按下文操作。
|
|
15
|
+
- 3.x:下文的 `run`、`status --work`、`decide`、`check`、`history` 和 `work.md` 在 3.x 不存在,沿用项目现有的 3.x 写法:`intent.md` + `plan.md`,分别 `accept --artifact intent` 与 `accept --artifact plan`;`start --config <config> --attempt new` 开工,`resume --config <config> [--run <RUN>] [--adopt <sha> --by <name>]` 续跑;`overview`、`inbox`、`status --run <RUN>` 看进度;`approve --transition <t>` / `reject --reason <why>` 决定;`findings adjudicate` 裁决问题;`doctor` 检查配置;run-config 保留 `workflow:` 与 `riskPreset:`。
|
|
16
|
+
- 3.x 的活动 Run 只能用 3.x 运行时完成或取消。升级到 4.x 前先问用户,并按[迁移说明](docs/MIGRATION.md)处理。
|
|
17
|
+
- 没有运行时:按[不装运行时也能参与](docs/v2/guide/12-without-runtime.md)只读状态、写 `work.md` 和规定格式的决定行;不得代批 Run,不得声称验证、审查或回读已通过。
|
|
16
18
|
|
|
17
|
-
##
|
|
19
|
+
## 会话操作
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
| 用户意图 | 操作 |
|
|
22
|
+
|---|---|
|
|
23
|
+
| 接手、查看进度、有什么待批 | `buildbeat status --repo .`;主仓的 run 配置中 `repo:` 指向其他仓时,查看全部代码仓加 `--all-repos`(运行时 4.1 起;可加 `--work`、`--json`);单仓指定 `--work` 或 `--run` 查看细节 |
|
|
24
|
+
| 准备一项工作 | 写 `delivery/work/<ID>/work.md`,包含目标、范围、验收、实施计划;复制 run-config 样板并填真实命令 |
|
|
25
|
+
| 接受工作说明 | `buildbeat accept --repo . --work <ID> --by <owner>`;用户已有明确授权时直接记录,不重复问同一个决定 |
|
|
26
|
+
| 开工、继续 | `buildbeat run --config <config>`;首次编号,已有运行则恢复;明确新一轮时加 `--new` |
|
|
27
|
+
| 批准、拒绝 | 读取状态卡,再 `buildbeat decide --repo . --run <RUN> --action approve|reject --transition <t> --by <owner>`;非终态决定后续跑 |
|
|
28
|
+
| 问题接受、驳回 | `buildbeat decide --repo . --work <ID> --action accept|dismiss --fingerprint <fp> --by <owner> --note <reason>` |
|
|
29
|
+
| 已手修并提交 | `buildbeat run --config <config> --run <RUN> --adopt <sha> --by <name>`;检查干净工作树与实际 HEAD 后从 verify 继续 |
|
|
30
|
+
| 配置或环境有问题 | `buildbeat check --config <config>`;显式 `--step <step>` 会在主检出执行 worker,只有用户任务需要才调用,结果不是正式证据 |
|
|
31
|
+
| 上线后回读、关窗 | 人完成上线后 `buildbeat release --config <config> [--note <text>]`;最近一次回读通过再 `buildbeat decide --repo . --work <ID> --action close --result <text> --by <owner>`。回读失败不能关窗 |
|
|
32
|
+
| 结束一轮 | `buildbeat stop --repo . --run <RUN> --reason <reason>`;活动驱动持锁时先处理进程,不能把 stop 当作进程杀手 |
|
|
33
|
+
| 清理 | `buildbeat gc --repo .` 查看计划,授权范围内再加 `--apply`;不得丢唯一候选或脏工作树 |
|
|
21
34
|
|
|
22
|
-
|
|
35
|
+
## 执行规则
|
|
23
36
|
|
|
24
|
-
|
|
37
|
+
- 用户只需理解工作、进度和决定;命令与 Run 编号由会话处理。
|
|
38
|
+
- 一个端到端 Work 对一个可验收结果负责。范围内继续推进,不能因单个文件或步骤完成就结束任务。
|
|
39
|
+
- 默认固定 build → verify → review → wait-merge,失败经 fix → verify。配置全部检查后才启动;不要生成 workflow.yaml 或 Policy 文件。
|
|
40
|
+
- Reviewer 独立、只读;任何自述不能代替 Git 和真实命令的证据。提供 builder/verifier/reviewer/fixer,缺 worker 时明确停下接管。
|
|
41
|
+
- 只在目标确认、真正例外和最终决定处请求用户。review 默认不分诊;不收敛、环境故障、预算耗尽照常停人,不能由驾驶会话冒充人批准。
|
|
42
|
+
- Work review 预算默认 6 轮,跨所有 Run 累计;保留缓存、增量审查、人工修复接管和环境故障分类。
|
|
43
|
+
- 长运行脱离宿主短超时启动。状态、最近输出、耗时和通知用于发现停顿;STALLED 不等于进程已终止。
|
|
44
|
+
- 新会话先读项目入口、work.md、Git 与状态。旧的 intent/plan 和历史记录继续读取;活动运行不能随意删除或重复启动。
|
|
45
|
+
- 既有项目规范由项目所有者维护,不覆盖;项目治理模板不在 BuildBeat 范围内。生产监控与部署放在项目工具中。有 UI 的交付在 run-config 写 `requireScreenshot: true`,verify 把真渲染截图以 PNG 写进 `BUILDBEAT_SCREENSHOT_DIR`。
|
|
46
|
+
- merge、push、发布、部署需要对应授权;最终批准只表示候选具备合并条件。不要用 `git add -A`,只提交本次具体文件。
|
|
47
|
+
- 保留范围检查、环境变量白名单、批准绑定、台账校验。它们不替代宿主沙箱和服务端保护。
|
|
48
|
+
- 新项目配置通知时确认用户希望使用的通道;已有决定直接沿用,URL 只来自环境变量。无通知时如实说明。
|
|
25
49
|
|
|
26
|
-
|
|
27
|
-
|---|---|---|
|
|
28
|
-
| 「换会话」「删旧会话」「继续这个项目」「同事接手」 | 按 [接续指南](docs/v2/guide/11-session-handoff.md) 核对项目入口、Work、Git、`overview` / `inbox` / `status`;离开前补齐未落盘事实,接手后区分活动 Run / 中断 / 待批 / 终态 | 「已保存哪些上下文、工作停在哪、下一步」;不把删聊天当删工作树,不重启仍活动的 Run,不伪造或代批决定 |
|
|
29
|
-
| 「当前进度」「待办是什么」「X 上线了吗」「离上线还差多远」 | `buildbeat overview --repo .`(每个 Work 的阶段 + 下一步该谁 + `cost:` 已花的 Run/review 轮/等人次数/worker 时长)+ `observe status --repo .` | 每件事一句:走到哪、卡在谁、下一步;**不列命令**;花费超过 intent 止损线的 Work 要主动说「已 N 轮 review / N 小时,继续还是砍」 |
|
|
30
|
-
| 「有什么要我拍板」 | `buildbeat inbox --repo .` | 逐项:等什么、证据在哪、推荐 A/B;用户回「批准/拒绝」后会话调 `approve`/`reject` |
|
|
31
|
-
| 「开个 Work:〔目标〕」 | 写 `delivery/work/<ID>/intent.md`(为什么做 + **止损线**:最多几个 Run / 几轮 review / 几小时,越线先问人)+ `plan.md`(怎么做)+ `run-config.yaml`(`budgets.reviewRoundsPerWork` 对应止损线);给用户看摘要 | 「看完说接受」;用户说一次「接受」→ `accept --artifact intent,plan`(一条命令,两份各自 digest 绑定;不要分两次问) |
|
|
32
|
-
| 「开工」「再来一轮」 | 先 `buildbeat doctor --config <run-config.yaml>`(会报本仓 intent/plan 是否存在且已接受、哪条 policy 会把 start 挡在哪步、每步预算),再 `start --config <run-config.yaml> --attempt new`(自动编号 RUN-X-01/02…,自动作废同 Work 的旧等待;**用 nohup/setsid 脱离启动**) | 「已起 RUN-X-02,停在合并决定时会通知/我会告诉你」 |
|
|
33
|
-
| 「怎么样了」「卡住了吗」「正常吗」 | `buildbeat status --repo . --run <RUN>` | 一句:在跑第几步、跑了多久、历史通常多久、最后一次输出几分钟前;`STALLED` 就说「疑似卡住,建议停/等」;停在 kind `infra` 就说「worker 环境/后端故障,不是代码问题,恢复后我重跑,预算不扣」 |
|
|
34
|
-
| 「批准 RUN-X」「拒绝,原因…」 | 先看 `inbox` 该 Run 等的是哪条 transition,再 `approve --transition <t> --by <用户名>` / `reject --reason`;非终态转换(`enter-fix` / `resume-<step>` / `enter-review`)批准后再 `resume --config <cfg>` 续跑;用 `--attempt new` 自动编号时会选择该家族唯一未终态 Run,也可 `--run <RUN-ID>` 指定;多个候选或没有未终态 Run 时按报错处理 | 说清批的是哪一步:「放行 fixer,续跑中」/「再跑一次,续跑中」/「合并决定已落,候选 <sha> 具备合并条件;合并/push/部署要你另说」。`SUCCEEDED` 不等于已合并 |
|
|
35
|
-
| 会话自己在 Run 的 worktree 里把 finding 修完并提交了(Run 停在 enter-fix / resume-fix) | `resume --config <cfg> --adopt <sha> --by <会话名>`(跳过 fixer,从 verify 续跑;树必须干净、HEAD 必须是该 sha) | 「我已手修并提交 <sha>,验证重跑中」;**不要**为了让 fixer 空跑而 approve enter-fix |
|
|
36
|
-
| 「这条 finding 不算,那条接受」 | `findings list` / `findings adjudicate --action dismiss|accept` → `approve --transition enter-fix` | 裁决结果一句 |
|
|
37
|
-
| 「上线」「做生产动作」 | 用 `release-readback` 预设 + `riskPreset: release` 开 Run:preflight 回读 → 停 `enter-apply-readback` | 「回读全绿,现在轮到你做〔动作〕;做完说一声」→ 用户说「做完了」→ `approve enter-apply-readback` → 回读+观察 → 停关窗 |
|
|
38
|
-
| 「打扫卫生」 | `buildbeat gc --repo .`(先出计划)→ 用户点头 → `--apply true` | 清了几个工作树、留了哪些分支及为什么 |
|
|
39
|
-
| 「生产报警」「体检」 | `observe run --config .buildbeat/observe.yaml` → 看 `delivery/observe/intents/` | 草稿一句 + 「fix_now / schedule / dismiss 你选」 |
|
|
50
|
+
## 配置样板
|
|
40
51
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- **能实查的不问人**:`overview` / `status` / `inbox` / `metrics` / `observe status` 全是只读,先跑再答;不信文档、不信上游转述。
|
|
44
|
-
- **环境故障不是候选缺陷**:超时、崩溃、非 JSON 输出、退出码 75 内核判 `infra` 停人;会话只做两件事——查后端/环境(worker 后端是否 404、端口是否被占、PATH 是否缺工具),恢复后 `approve --transition resume-<step>`;**不要**为了绕过去手写探针循环或起新 Run。verify / 包装脚本发现环境不满足就 `exit 75`。
|
|
45
|
-
- **数字要落地**:`status` 给了耗时和历史中位数,回答「正常吗」必须带对比("verify 已 14 分钟,历史中位 6 分钟,最后输出 2 分钟前,还在动");没数据就说没数据。
|
|
46
|
-
- **输出里的 `next:` 行是给会话的**,会话据此调命令,不把命令原文丢给用户;用户只需要回「批准 / 拒绝 / 接受 / 做完了 / A / B」。
|
|
47
|
-
- **人批三级**(§4.2):`STOP_NOW` 只用于跨发布门 / 扩范围 / 改冻结契约 / 不可逆外部动作 / 接受风险;可逆取舍攒到门前一次批 2~5 个;事实与派生约束自己定。**所有者以后要看见或念出来的名字与参数(域名、服务名、环境名、自停时长、窗口时长)属于门前决策项,不由 worker 顺手定**——真实事故:一个按内部术语起的服务名让所有者连问四轮才改成他听得懂的业务名。
|
|
48
|
-
- **环境事实是交付物**:跑出来的"目标机 Python 3.6 / Redis 必须 ≥7 / 端口 8080 被占"写进 `delivery/work/<ID>/env-facts.md`,并尽量转成 run-config `requires:` 的 `probe:` 条目,下窗直接引用,禁止口口相传。
|
|
49
|
-
- **收口格式**统一「已做 → 未做 → 下一步」,各一句,证据紧跟事项(§6.4);中间探索不套模板。
|
|
50
|
-
|
|
51
|
-
### 0.5.3 写 run-config 时的最小样板(会话代写,用户不用看)
|
|
52
|
+
以下为完整样板。路径相对工作目录,替换 Work 标识、变更范围和真实工具命令。worker.sh 与 prompts 复制到 delivery/envelope/。
|
|
52
53
|
|
|
53
54
|
```yaml
|
|
55
|
+
# BuildBeat v2 run 配置样板。拷到 delivery/work/<WORK-ID>/run-config.yaml 后改 work / run / allowedPaths / workers。
|
|
56
|
+
# 路径相对本文件解析。严格 YAML 子集:只有块列表与块映射(列表项可与键同缩进),行内只允许空的 [] / {},无锚点,注释必须独占一行。
|
|
57
|
+
# 起跑前:buildbeat check --config <本文件>;起跑:buildbeat run --config <本文件>
|
|
54
58
|
repo: ../../..
|
|
55
59
|
work: WORK-X
|
|
56
|
-
#
|
|
60
|
+
# 家族名;run 自动编成 RUN-X-01/02…,--new 开新一轮
|
|
57
61
|
run: RUN-X
|
|
58
|
-
#
|
|
59
|
-
workflow: workflow.yaml
|
|
60
|
-
# fast | standard | controlled | release(配 release-readback 预设)
|
|
61
|
-
riskPreset: standard
|
|
62
|
-
entry: build
|
|
62
|
+
# builder / fixer 只能改这些目录;越界改动不成为候选
|
|
63
63
|
allowedPaths:
|
|
64
64
|
- src
|
|
65
65
|
- tests
|
|
66
|
-
# off = P0/P1 直接派 fixer
|
|
66
|
+
# off = P0/P1 finding 直接派 fixer;高风险项目改成 required,每轮先停人分诊再派 fixer
|
|
67
67
|
reviewTriage: off
|
|
68
|
-
#
|
|
69
|
-
# review
|
|
70
|
-
#
|
|
68
|
+
# 非只读步成功不扣次数;review 按轮计费。review 不收敛(修过的 finding 又出现,或阻断数多于上一轮)才在 enter-fix 停人。
|
|
69
|
+
# reviewRoundsPerWork 是 review 轮数唯一的上限(默认 6),跨本 Work 所有 Run 累计,对应 intent 的止损线;
|
|
70
|
+
# 到顶的阻断 review 在 enter-fix 一次批准修复、重验、再审。总 attempt 超过(配置值 + 人批扩额)的 3 倍前仍兜底停人。
|
|
71
71
|
budgets:
|
|
72
72
|
reviewRoundsPerWork: 6
|
|
73
|
-
#
|
|
73
|
+
# 默认一个仓库同时只驱动一个 Run。确认本项目的测试不抢固定端口、不共用数据库后,
|
|
74
|
+
# 可加 parallel: true,让本 Work 的 Run 与其他同样打开开关的 Work 并行(同一 Work 仍互斥)
|
|
75
|
+
# 同树 + 同命令 + 同信封已通过就复用 verify 证据
|
|
74
76
|
cache:
|
|
75
77
|
verify: tree
|
|
76
|
-
# prompts/<
|
|
78
|
+
# 内核把 prompts/<worker>.md 喂给 worker($BUILDBEAT_PROMPT);模板见 templates/v2/envelope/prompts/
|
|
77
79
|
envelope:
|
|
78
80
|
prompts: ../../envelope/prompts
|
|
79
81
|
vars:
|
|
80
|
-
component:
|
|
81
|
-
|
|
82
|
-
- command: node
|
|
83
|
-
min: "20"
|
|
84
|
-
- probe: "redis-cli -h $REDIS_HOST ping"
|
|
85
|
-
expect: PONG
|
|
86
|
-
name: redis-reachable
|
|
82
|
+
component: app
|
|
83
|
+
# worker 输出落成证据前按这些 JS 正则脱敏(不支持 (?i) 这类内联标志)
|
|
87
84
|
redact:
|
|
88
85
|
- "(token|secret|password|TOKEN|SECRET|PASSWORD)=\\S+"
|
|
89
|
-
#
|
|
86
|
+
# 有 UI 的交付:verify 把真渲染截图以 PNG 写进 $BUILDBEAT_SCREENSHOT_DIR(只收可解码的 PNG),合并检查要求当前候选有截图
|
|
87
|
+
# requireScreenshot: true
|
|
88
|
+
# 合并并上线后由 buildbeat release 在主检出运行的只读回读命令(形状同 worker);回读通过后才能关窗
|
|
89
|
+
# release:
|
|
90
|
+
# command: bash
|
|
91
|
+
# args:
|
|
92
|
+
# - scripts/readback.sh
|
|
93
|
+
# worker 以隔离 worktree 为 cwd 运行;delivery/envelope/worker.sh 已随仓库进 worktree。
|
|
94
|
+
# 换工具只改 `--` 后面的命令:codex exec … / claude -p … / 任意脚本。
|
|
90
95
|
workers:
|
|
91
96
|
builder:
|
|
92
97
|
command: bash
|
|
@@ -98,6 +103,7 @@ workers:
|
|
|
98
103
|
- exec
|
|
99
104
|
- -s
|
|
100
105
|
- workspace-write
|
|
106
|
+
# 真实测试命令;环境不满足就 exit 75(内核当基础设施故障停人)
|
|
101
107
|
verifier:
|
|
102
108
|
command: bash
|
|
103
109
|
args:
|
|
@@ -113,6 +119,7 @@ workers:
|
|
|
113
119
|
- exec
|
|
114
120
|
- -s
|
|
115
121
|
- read-only
|
|
122
|
+
# 不能省:没配它,verify 失败 / review 阻断时 Run 停人等手修
|
|
116
123
|
fixer:
|
|
117
124
|
command: bash
|
|
118
125
|
args:
|
|
@@ -125,32 +132,14 @@ workers:
|
|
|
125
132
|
- workspace-write
|
|
126
133
|
```
|
|
127
134
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
**第一次为一个项目写 run-config 时,会话要多问用户一句**:「Run 停下来等你批、跑完、或疑似卡住时,要不要推到钉钉/webhook?给我一个只放在环境变量里的 URL 就行」——试点一直没启用通知,一张合并卡就绪后隔夜等了 9.5 小时。用户说不要就记一句「通知未启用,等待只在 inbox 里」。
|
|
131
|
-
|
|
132
|
-
worker prompt 里要写清三条环境事实(模板 AGENTS 第 ⑨ 条):沙箱不能监听端口(socket 测试交给 verify)、PATH 只认 POSIX 工具、环境不满足就 `exit 75`。
|
|
133
|
-
|
|
134
|
-
## 红线摘要(全文与理由见 [05-red-lines.md](docs/v2/skill/05-red-lines.md),单点写进项目根 AGENTS.md §3)
|
|
135
|
-
|
|
136
|
-
1. **凭据不入 git、不出本机**:文档只标位置不写值,默认装 gitleaks pre-commit 闸;worker 只拿点名的环境变量,通知 URL 只走环境变量。
|
|
137
|
-
2. **不 `git add -A`**:只 stage 自己工作包的具体文件,多仓按仓分别提交。
|
|
138
|
-
3. **不未授权部署**、不 force-push、不 `--amend` 已推送历史、不 `--no-verify`;合并/push/发布是人的动作,逐项授权。
|
|
139
|
-
4. **每次部署完必更对应仓 CHANGELOG**,部署后 `observe run` 一轮。
|
|
140
|
-
5. **写者≠审者**:Run 内置只读 reviewer 机器强制,写者转述不构成证据。
|
|
141
|
-
6. **事实分层**:已确认 / 待核 / 拟议 / 已实现四类分开,未实查一律写「待核」。
|
|
142
|
-
7. 资源选型 **稳定 > 便宜**;长连接服务部署带优雅下线。
|
|
143
|
-
|
|
144
|
-
## 按需再读:方法论正文(原 §1–§10)
|
|
135
|
+
## 按需阅读
|
|
145
136
|
|
|
146
|
-
|
|
137
|
+
- [快速开始](docs/v2/guide/01-quickstart.md)
|
|
138
|
+
- [固定流程与配置](docs/v2/guide/02-workflow-guide.md)
|
|
139
|
+
- [决定与证据](docs/v2/guide/07-approval-guide.md)
|
|
140
|
+
- [恢复](docs/v2/guide/10-recovery.md)、[接续](docs/v2/guide/11-session-handoff.md)
|
|
141
|
+
- [安全边界](docs/v2/guide/09-security-boundaries.md)
|
|
142
|
+
- [不装运行时也能参与](docs/v2/guide/12-without-runtime.md)
|
|
143
|
+
- [迁移](docs/MIGRATION.md)
|
|
147
144
|
|
|
148
|
-
|
|
149
|
-
|---|---|---|
|
|
150
|
-
| §1 四根支柱、§2 工作包与 AI 视角 | 解释 BuildBeat 为什么这样设计、决定要不要拆视角 | [01-principles.md](docs/v2/skill/01-principles.md) |
|
|
151
|
-
| §3 项目文件布局 | 新建或核对项目目录、`.gitignore`、装载入口 | [02-project-layout.md](docs/v2/skill/02-project-layout.md) |
|
|
152
|
-
| §4 协作规则、§4.1 任务包、§4.2 审批分层、§4.3 决策包 | 判断一件事要不要问人、怎么批量问、会话何时可以结束 | [03-collaboration-rules.md](docs/v2/skill/03-collaboration-rules.md) |
|
|
153
|
-
| §5 风险预设、§6 三个仪式、§6.4 收口格式、§6.5 读数、§6.6 拍板与换期 | 开工 / 收工 / 收口 / 解读 `overview`、`status` 读数 / 换期 | [04-rhythm-and-rituals.md](docs/v2/skill/04-rhythm-and-rituals.md) |
|
|
154
|
-
| §7 红线全文 | 任何涉及凭据、提交、部署、审查边界的动作之前 | [05-red-lines.md](docs/v2/skill/05-red-lines.md) |
|
|
155
|
-
| §8 Bootstrap 新项目、§8.5 接管存量项目 | 用户要「搭骨架 / 给项目套上 BuildBeat / 接管老项目」 | [06-bootstrap-and-takeover.md](docs/v2/skill/06-bootstrap-and-takeover.md) |
|
|
156
|
-
| §9 模板索引、§10 实战教训 | 找模板、查某条机制背后的事故([lessons.md](lessons.md)) | [07-templates-and-lessons.md](docs/v2/skill/07-templates-and-lessons.md) |
|
|
145
|
+
启动前将 work.md 和 worker 脚本提交到所选 base,确保隔离工作树能读到同一份已确认范围;接受记录可以随后提交。
|
|
@@ -1,39 +1,30 @@
|
|
|
1
|
-
# BuildBeat
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
|
18
|
-
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## 2. Distribution status / 分发状态
|
|
33
|
-
|
|
34
|
-
- **Skill-only:** first-class and complete for protocol semantics; it does not need the runtime.
|
|
35
|
-
- **Runtime:** `@haiyangbg/buildbeat@latest` ships one executable, `buildbeat`, with zero third-party runtime dependencies. Each published version is independently read back (registry identity, provenance, signatures, isolated install, packaged first run) before the tag moves; the dated evidence files in this directory are the record, [`RELEASING.md`](RELEASING.md) is the procedure.
|
|
36
|
-
- **Claude Code plugin:** the local marketplace candidate distributes the canonical Skill/templates/docs, not the top-level npm CLI `bin/`; installation evidence does not authorize project writes or npm publication.
|
|
37
|
-
- **Project runtime:** the Git files remain independently usable without the runtime. BuildBeat has no account service, telemetry, remote project database, or hosted agents; the runtime is a local process that orchestrates the commands you configure and never carries a model of its own.
|
|
38
|
-
|
|
39
|
-
The command surface is documented in [`v2/guide/`](v2/guide/README.md) with RFC-0003 as the workflow authority. Removed generations (the file bus, its lifecycle CLI, and the pre-3.0 executable names) live only in the dated history under this directory and in [`CHANGELOG-v1.md`](../CHANGELOG-v1.md).
|
|
1
|
+
# BuildBeat capability matrix / 能力矩阵
|
|
2
|
+
|
|
3
|
+
Current release: 4.1.0. One product path: Skill → local runtime →
|
|
4
|
+
project records. The Claude Code plugin distributes the Skill and references;
|
|
5
|
+
install the runtime separately. Files remain readable without the runtime, but
|
|
6
|
+
manual work has no automatic loop, isolation, budget or approval enforcement;
|
|
7
|
+
[Taking part without the runtime](v2/guide/12-without-runtime.en.md) states what
|
|
8
|
+
may be written by hand.
|
|
9
|
+
|
|
10
|
+
| Capability | Current implementation | Boundary |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| Work context | work.md, accepted digest, decisions, candidate and evidence | Chat discussions must be saved explicitly |
|
|
13
|
+
| Delivery loop | Fixed build/verify/review/fix flow | External CLI tools do the actual work |
|
|
14
|
+
| Recovery | Run/step ledger, resume, manual candidate adoption, stale locks | Active runtime is not transferred by Git clone |
|
|
15
|
+
| Trusted result | Real command evidence, current candidate, read-only review | Script tests do not prove real AI business capability |
|
|
16
|
+
| Decisions | Acceptance, exact approval, frozen checks, budget/convergence stops | No automatic merge, push or deployment |
|
|
17
|
+
| Efficiency | Verify cache, review range hints, parallel Work isolation | External test state must be isolated and stable |
|
|
18
|
+
| Feedback | Unified status/cost/decisions, also across a main repository and its code repositories (`--all-repos`), liveness, webhook/DingTalk | Notifications do not approve |
|
|
19
|
+
| UI evidence | `requireScreenshot`: screenshots from verify, bound to the candidate and required at merge | The project's verify renders and captures |
|
|
20
|
+
| Release closeout | `release` records the project's readback in the Work; `decide --action close` on a passing readback | No deployment; observation stays with project monitoring |
|
|
21
|
+
| Maintenance | Check, history/replay, safe gc | Not a production monitoring service |
|
|
22
|
+
|
|
23
|
+
The runtime has no account service, telemetry, remote project database, hosted
|
|
24
|
+
agents or built-in model. Recorded real AI-worker evidence covers codex exec;
|
|
25
|
+
other CLI integrations require their own validation.
|
|
26
|
+
|
|
27
|
+
Production observation, the release-readback lane, UI policy files, custom rule
|
|
28
|
+
languages and the shipped governance templates are retired; the release
|
|
29
|
+
closeout and the screenshot switch above cover the release and UI cases. [Migration](MIGRATION.md) preserves the old-record and
|
|
30
|
+
active-run boundary. [Guides](v2/guide/README.md) describe current usage.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Product simplification migration / 减法迁移
|
|
2
|
+
|
|
3
|
+
Status: applies to 4.0.0 and later. Installing the runtime changes no project
|
|
4
|
+
file; finish or cancel 3.x runs still in progress with their 3.x runtime first.
|
|
5
|
+
|
|
6
|
+
## Existing work / 存量工作
|
|
7
|
+
|
|
8
|
+
- Keep candidate branches, raw logs, decisions, findings and run-record.json.
|
|
9
|
+
The CLI does not delete or rewrite them during migration. Old event schemas
|
|
10
|
+
remain readable; historical release records still display RELEASED.
|
|
11
|
+
- Finish existing 3.x active runs with their original 3.3.1 runtime: those
|
|
12
|
+
ledgers do not contain frozen deliveryChecks, so this major refuses to resume
|
|
13
|
+
or approve them. They remain readable and cancellable. Official legacy
|
|
14
|
+
software-delivery configurations can start NEW attempts on this version;
|
|
15
|
+
their exact workflow digest and original safeguards are retained. Never edit
|
|
16
|
+
the workflow or switch bound artifacts during a run. Legacy intent/plan/spec
|
|
17
|
+
records remain readable.
|
|
18
|
+
- fast/standard/controlled are compatibility inputs, mapped to the same required
|
|
19
|
+
artifacts and severity floor. controlled cannot silently fall back to standard.
|
|
20
|
+
A legacy config that names a workflow but no riskPreset had no artifact gate
|
|
21
|
+
and keeps none (it runs as fast); the merge evidence floor now always applies.
|
|
22
|
+
- The legacy planner steps (entry intent/spec/plan) cannot be combined with a
|
|
23
|
+
preset that requires acceptance: the accepted artifact is bound and checked in
|
|
24
|
+
base before the run starts. Write, accept and commit it, then use entry: build.
|
|
25
|
+
- Custom workflow graphs, policy files and release/observe execution are retired.
|
|
26
|
+
Their configurations fail before starting workers. Finish/cancel active work
|
|
27
|
+
using its existing 3.3.1 runtime; preserve the records and configure project
|
|
28
|
+
verification/CI scripts explicitly before creating new delivery work.
|
|
29
|
+
- Never run 3.3.1 against a new 4.x run: it does not enforce the new frozen-check
|
|
30
|
+
fields. Roll back the tool only after new runs are stopped and their state is
|
|
31
|
+
retained. Use separate installation prefixes when comparing versions.
|
|
32
|
+
- 旧项目文件不自动删除、不自动改写。先核对活动运行和外部使用,再迁移。
|
|
33
|
+
自定义/生产流程要先完成或停止旧运行、保留证据,随后显式迁入项目工具。
|
|
34
|
+
|
|
35
|
+
## New work / 新工作
|
|
36
|
+
|
|
37
|
+
Write delivery/work/<ID>/work.md with goal, scope, acceptance and implementation
|
|
38
|
+
plan; accept that one file. Omit workflow, riskPreset and policies in new run
|
|
39
|
+
configurations. The fixed build/verify/review/fix graph and acceptance/evidence
|
|
40
|
+
checks are built in. Optional maxReviewSeverity: P3 tightens review; stopAt and
|
|
41
|
+
reviewTriage: required add explicit human boundaries when actually needed.
|
|
42
|
+
|
|
43
|
+
Creation freezes deliveryChecks in the event ledger. Resume cannot weaken them;
|
|
44
|
+
approval derives them from the ledger even without --config. Changing work.md
|
|
45
|
+
invalidates its acceptance and cannot authorize an old candidate implicitly;
|
|
46
|
+
the same holds for a candidate that edits its own copy, and for intent.md under
|
|
47
|
+
the legacy controlled safeguards. Start pins the base to one commit, refuses an
|
|
48
|
+
artifact missing from it, and compares the isolated checkout itself with the
|
|
49
|
+
accepted bytes before the run is recorded.
|
|
50
|
+
Legacy projects may keep their old files; do not add work.md in the middle of an
|
|
51
|
+
active legacy run because that changes the bound artifact.
|
|
52
|
+
|
|
53
|
+
## Command consolidation / 命令合并
|
|
54
|
+
|
|
55
|
+
| Old entry | Current entry |
|
|
56
|
+
|---|---|
|
|
57
|
+
| start / resume / resume --adopt | run; --new explicitly starts another attempt |
|
|
58
|
+
| overview / inbox / status / metrics | status, optionally --work / --run / --json |
|
|
59
|
+
| approve / reject / findings adjudicate | decide --action ... with the exact subject |
|
|
60
|
+
| doctor / preflight | check; explicit --step still executes in the main checkout |
|
|
61
|
+
| events / replay | history / history --verify |
|
|
62
|
+
|
|
63
|
+
Old core spellings remain aliases over shared handlers. accept, stop and gc stay
|
|
64
|
+
explicit. watch is internal feedback plumbing. The old observe command returns a
|
|
65
|
+
migration error; it never runs a probe or changes old records.
|
|
66
|
+
|
|
67
|
+
## Removed scope / 移出范围
|
|
68
|
+
|
|
69
|
+
Production monitoring and diagnosis/intent queues move to project-owned
|
|
70
|
+
monitoring, scripts and CI. A delivery run still stops at the merge decision.
|
|
71
|
+
The release-readback lane is replaced by `buildbeat release` (the project's own
|
|
72
|
+
read-only readback command, recorded in the Work's releases.jsonl) and
|
|
73
|
+
`decide --action close`, which closes the window only on a passing readback.
|
|
74
|
+
UI delivery sets `requireScreenshot: true`: verify writes PNG screenshots of
|
|
75
|
+
the real render to BUILDBEAT_SCREENSHOT_DIR and the merge check requires them.
|
|
76
|
+
|
|
77
|
+
The optional governance templates (standards, ADR, decision log, contracts,
|
|
78
|
+
architecture) were never generated by default. They sit outside the delivery
|
|
79
|
+
loop 4.0 focuses on, are no longer shipped, and stay readable under
|
|
80
|
+
docs/history/retired-templates. Projects keep and maintain their own copies.
|
|
81
|
+
|
|
82
|
+
Without the runtime, people and tools still take part through the files under
|
|
83
|
+
the rules in [Taking part without the runtime](v2/guide/12-without-runtime.en.md):
|
|
84
|
+
they read state, write work.md and append decision lines in the documented
|
|
85
|
+
format, and never approve runs or claim evidence. The archived Skill-only
|
|
86
|
+
manual rulebook is not restored.
|
|
87
|
+
|
|
88
|
+
## Validation / 验证
|
|
89
|
+
|
|
90
|
+
Compare candidate/evidence/decision outcomes, worker attempts and human stops in
|
|
91
|
+
the deterministic first-run, repair, resume and stale-approval scenarios. Run the
|
|
92
|
+
package-installed first-run test, not only source tests. A change in test-suite
|
|
93
|
+
wall time or package size does not establish real-model delivery speed.
|
package/docs/README.md
CHANGED
|
@@ -1,39 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# BuildBeat documentation
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
- [Usage guides](v2/guide/README.md)
|
|
4
|
+
- [Capabilities and boundaries](CAPABILITY-MATRIX.md)
|
|
5
|
+
- [Migration](MIGRATION.md)
|
|
6
|
+
- [Release procedure](RELEASING.md)
|
|
7
|
+
- [Original product RFC](v2/RFC-0001-product-definition.md), [domain RFC](v2/RFC-0002-domain-model.md), [workflow RFC](v2/RFC-0003-workflow-policy.md), [event schema](v2/SPEC-0001-events-v1.md): read their dated revision notes first.
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
| 你要做什么 | 读 |
|
|
8
|
-
|---|---|
|
|
9
|
-
| 第一次用,在 AI 会话里 | [`v2/guide/00-how-to-talk.md`](v2/guide/00-how-to-talk.md) → 会话读 [`SKILL.md`](../SKILL.md) §0.5 |
|
|
10
|
-
| 第一次用,自己敲命令核对 | [`v2/guide/01-quickstart.md`](v2/guide/01-quickstart.md) · [English](v2/guide/01-quickstart.en.md) |
|
|
11
|
-
| 指南索引(日常 / 配置) | [`v2/guide/README.md`](v2/guide/README.md) |
|
|
12
|
-
| 关闭旧会话后继续,或由其他成员/工具接手 | [`跨会话接续`](v2/guide/11-session-handoff.md) · [English](v2/guide/11-session-handoff.en.md) |
|
|
13
|
-
| 三个可用面各能做什么(Skill-only / 运行时 / 插件) | [`CAPABILITY-MATRIX.md`](CAPABILITY-MATRIX.md) |
|
|
14
|
-
| 项目装载入口与信封模板 | [`../templates/v2/`](../templates/v2/AGENTS.md) |
|
|
15
|
-
| 填好之后长什么样:一个 Work 跑到合并决定的快照 | [`../example/`](../example/README.md) |
|
|
16
|
-
|
|
17
|
-
## 现行:规范与维护
|
|
18
|
-
|
|
19
|
-
| 内容 | 读 |
|
|
20
|
-
|---|---|
|
|
21
|
-
| 产品定位 / 域模型 / workflow 与 policy / 事件 schema | [`v2/RFC-0001`](v2/RFC-0001-product-definition.md) / [`RFC-0002`](v2/RFC-0002-domain-model.md) / [`RFC-0003`](v2/RFC-0003-workflow-policy.md) / [`SPEC-0001`](v2/SPEC-0001-events-v1.md)(`FINAL`;带日期的生效修订写在正文顶部) |
|
|
22
|
-
| 发布手册、通道、发布后同步清单 | [`RELEASING.md`](RELEASING.md) |
|
|
23
|
-
| 分支策略、测试分层、文档权威分层 | [`../CONTRIBUTING.md`](../CONTRIBUTING.md)、[`../tests/README.md`](../tests/README.md) |
|
|
24
|
-
| 每条机制背后的真实事故 | [`../lessons.md`](../lessons.md) |
|
|
25
|
-
|
|
26
|
-
## 历史(保存当时事实,不改原文)
|
|
27
|
-
|
|
28
|
-
| 类别 | 文件 |
|
|
29
|
-
|---|---|
|
|
30
|
-
| 发布证据([`releases/`](releases/)) | 每个发布一份 `<版本>-RELEASE-EVIDENCE-<日期>.md`;当前 `latest` 是哪一版以 [`RELEASING.md`](RELEASING.md) 顶部的现状段与 registry 回读为准 |
|
|
31
|
-
| 规划与决策(2026-08) | [`V2-PLAN.md`](history/V2-PLAN.md)(执行基线,已交付)、[`V2-PROPOSAL.md`](history/V2-PROPOSAL.md)、[`V2-DECISIONS.md`](history/V2-DECISIONS.md)、[`V2-D2-DECISION-CARD.md`](history/V2-D2-DECISION-CARD.md)、[《BuildBeat v2:AI 原生软件交付控制平面》](history/BuildBeat%20v2%EF%BC%9AAI%20%E5%8E%9F%E7%94%9F%E8%BD%AF%E4%BB%B6%E4%BA%A4%E4%BB%98%E6%8E%A7%E5%88%B6%E5%B9%B3%E9%9D%A2.md) |
|
|
32
|
-
| 迭代与里程碑记录 | [`history/`](history/) 下的 `V2-ITERATION-01~08.md`、[`v2/`](v2/) 下的 M1/M2/M4 验收与试点记录 |
|
|
33
|
-
| M-1 脚本驱动试点(2026-08,已被运行时取代,不再执行) | [`history/pilot/`](history/pilot/README.md)(`loop.sh`、试点度量与证据) |
|
|
34
|
-
| 早期版本史 | [`../CHANGELOG-v1.md`](../CHANGELOG-v1.md)(2026-06 ~ 2026-08 的条目原文;当前条目在根 [`CHANGELOG.md`](../CHANGELOG.md)) |
|
|
35
|
-
| 早期路线与阶段试点(2026-08,已移除的文件总线时代) | [`ROADMAP.md`](history/ROADMAP.md)、[`EXECUTION-PLAN.md`](history/EXECUTION-PLAN.md)、[`history/`](history/) 下的 `PHASE1/2/4-*.md`、[`CLI-STRATEGY-2026-08.md`](history/CLI-STRATEGY-2026-08.md)、[`CLI-PILOT-2026-08-23.md`](history/CLI-PILOT-2026-08-23.md)、[`PHASE4-STABILITY-AUDIT-2026-08-25.md`](history/PHASE4-STABILITY-AUDIT-2026-08-25.md) |
|
|
36
|
-
|
|
37
|
-
历史文件里的版本号、通道与测试数字是它们日期当天的事实,出现已被移除的旧机制和旧通道策略是正常的;判断现状只看现行文档与 registry 回读(`npm view @haiyangbg/buildbeat dist-tags`)。
|
|
38
|
-
|
|
39
|
-
历史文件放在 [`history/`](history/),发布证据放在 [`releases/`](releases/),都只保存在 GitHub 仓库里、不随 npm 包分发(`package.json` 的 `files` 对 `docs/` 用白名单,只收现行文档);从安装目录点开现行文档里指向历史文件的链接会落空,到 [`HaiYangBG1/BuildBeat`](https://github.com/HaiYangBG1/BuildBeat/tree/main/docs) 看即可。现行文档全部随包分发,`tests/pack-firstrun.test.sh` 守着这两条边界。
|
|
9
|
+
Historical planning, retired methodology/templates, and release evidence remain
|
|
10
|
+
in the repository under history/ and releases/ and are excluded from npm.
|
package/docs/RELEASING.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This runbook governs BuildBeat's public npm distribution. The canonical package is `@haiyangbg/buildbeat` in `HaiYangBG1/BuildBeat`; the only executable is `buildbeat`. No other package name or executable alias receives publications.
|
|
4
4
|
|
|
5
|
-
Release evidence at source package version `@haiyangbg/buildbeat@
|
|
5
|
+
Release evidence at source package version `@haiyangbg/buildbeat@4.1.0`; latest independently verified BuildBeat npm distribution `@haiyangbg/buildbeat@4.0.0` (dist-tags `latest` and `next`; the owner moved `next` from `3.3.1` to `4.0.0` with npm 2FA on 2026-10-05), anchored by annotated tag `v4.0.0` at commit `c15fbe0`, workflow run [37262387333](https://github.com/HaiYangBG1/BuildBeat/actions/runs/37262387333), and archived in [`V4.0.0-RELEASE-EVIDENCE-2026-10-05.md`](releases/V4.0.0-RELEASE-EVIDENCE-2026-10-05.md). The 3.3.1 chain (`latest` from 2026-10-02 until 4.0.0 took over on 2026-10-05; the owner moved `next` from `3.3.0` to `3.3.1` with npm 2FA on 2026-10-02) stays archived in [`V3.3.1-RELEASE-EVIDENCE-2026-10-02.md`](releases/V3.3.1-RELEASE-EVIDENCE-2026-10-02.md). The 3.3.0 chain (`latest` on 2026-10-02 until 3.3.1 took over the same day; the owner moved `next` from `3.2.1` to `3.3.0` with npm 2FA that day) stays archived in [`V3.3.0-RELEASE-EVIDENCE-2026-10-02.md`](releases/V3.3.0-RELEASE-EVIDENCE-2026-10-02.md). The 3.2.1 chain (`latest` from 2026-09-26 until 3.3.0 took over on 2026-10-02; the owner moved `next` from `3.0.1` to `3.2.1` with npm 2FA on 2026-09-26) stays archived in [`V3.2.1-RELEASE-EVIDENCE-2026-09-26.md`](releases/V3.2.1-RELEASE-EVIDENCE-2026-09-26.md). The 3.2.0 chain (`latest` on 2026-09-26 until 3.2.1 took over the same day) stays archived in [`V3.2.0-RELEASE-EVIDENCE-2026-09-26.md`](releases/V3.2.0-RELEASE-EVIDENCE-2026-09-26.md). The 3.1.0 chain (`latest` on 2026-09-26 until 3.2.0 took over the same day) stays archived in [`V3.1.0-RELEASE-EVIDENCE-2026-09-26.md`](releases/V3.1.0-RELEASE-EVIDENCE-2026-09-26.md). The 3.0.1 chain (`latest` from 2026-09-09 until 3.1.0 took over on 2026-09-26) stays archived in [`V3.0.1-RELEASE-EVIDENCE-2026-09-09.md`](releases/V3.0.1-RELEASE-EVIDENCE-2026-09-09.md). The 3.0.0 chain (`latest` from 2026-09-09 until 3.0.1 took over the same day; the first version without the removed generation) stays archived in [`V3.0.0-RELEASE-EVIDENCE-2026-09-09.md`](releases/V3.0.0-RELEASE-EVIDENCE-2026-09-09.md). The 2.0.2 chain (`latest` from 2026-09-09 until 3.0.0 took over the same day; the last version carrying the removed generation) stays archived in [`V2.0.2-RELEASE-EVIDENCE-2026-09-09.md`](releases/V2.0.2-RELEASE-EVIDENCE-2026-09-09.md). The 2.0.1 chain (`latest` from 2026-09-06 until 2.0.2 took over on 2026-09-09) stays archived in [`V2.0.1-RELEASE-EVIDENCE-2026-09-06.md`](releases/V2.0.1-RELEASE-EVIDENCE-2026-09-06.md). The 2.0.0 chain (`latest` from 2026-09-05 until 2.0.1 took over on 2026-09-06) stays archived in [`V2.0.0-RELEASE-EVIDENCE-2026-09-05.md`](releases/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md). The beta.5 chain stays archived in [`V2.0.0-BETA.5-RELEASE-EVIDENCE-2026-09-05.md`](releases/V2.0.0-BETA.5-RELEASE-EVIDENCE-2026-09-05.md). The beta.4 chain stays archived in [`V2.0.0-BETA.4-RELEASE-EVIDENCE-2026-09-03.md`](releases/V2.0.0-BETA.4-RELEASE-EVIDENCE-2026-09-03.md); the beta.3 chain in [`V2.0.0-BETA.3-RELEASE-EVIDENCE-2026-09-01.md`](releases/V2.0.0-BETA.3-RELEASE-EVIDENCE-2026-09-01.md). The beta.2 chain stays archived in [`V2.0.0-BETA.2-RELEASE-EVIDENCE-2026-08-28.md`](releases/V2.0.0-BETA.2-RELEASE-EVIDENCE-2026-08-28.md); the beta.1 chain stays archived in [`V2.0.0-BETA.1-RELEASE-EVIDENCE-2026-08-28.md`](releases/V2.0.0-BETA.1-RELEASE-EVIDENCE-2026-08-28.md). Earlier distributions and the retired legacy package name are archived in the dated evidence files under `docs/releases/`.
|
|
6
6
|
|
|
7
7
|
## Channels and branches
|
|
8
8
|
|
|
@@ -135,8 +135,9 @@ Publishing the artifact is one surface. These are the others; each has drifted a
|
|
|
135
135
|
- [ ] `CHANGELOG.md`: `## Unreleased` renamed to the version with date and the publication paragraph (run id, dist-tag, readback).
|
|
136
136
|
- [ ] `docs/releases/<VERSION>-RELEASE-EVIDENCE-<date>.md` archived; the current-state paragraph at the top of this runbook names the new version and the previous stable moves to a dated past tense — never two "current" versions in one runbook.
|
|
137
137
|
- [ ] `README.md` / `README.en.md`: version and channel claims (`@latest` is what it says it is), no `@next` install line unless a pre-release is being announced as such.
|
|
138
|
-
- [ ] `
|
|
139
|
-
- [ ] `
|
|
138
|
+
- [ ] `README.md` / `README.en.md` getting-started install block and the opening of `docs/v2/guide/01-quickstart.md` / `.en.md`: a stable-channel install line, with no unreleased-candidate wording left behind.
|
|
139
|
+
- [ ] `SKILL.md` runtime-version section: names the runtime majors the released Skill supports, so a plugin refresh never hands an older installed runtime commands it lacks.
|
|
140
|
+
- [ ] `docs/CAPABILITY-MATRIX.md` status line and distribution section.
|
|
140
141
|
- [ ] Active RFC / plan documents whose channel policy the release changed get a dated "生效修订" note; history keeps its original text.
|
|
141
142
|
- [ ] GitHub repository About (description, topics, homepage) still describes the product that was just released — cannot be checked from the repository, do it by hand.
|
|
142
143
|
- [ ] GitHub Release marked Latest for a stable release, not for a pre-release.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# RFC-0001:BuildBeat v2 产品定位
|
|
2
2
|
|
|
3
|
+
> 2026-10-03 revision (unreleased 4.0.0-dev.0): the owner approved product simplification. New work uses work.md, a fixed delivery loop and built-in checks. Observe/release execution, UI-specific policies, custom workflow/Policy authoring and default governance scaffolding are retired. Legacy official delivery files and historical events remain readable; unsupported configurations fail explicitly. RUN_CREATED may carry optional deliveryChecks, frozen for resume/approval. See [migration](../MIGRATION.md). The original dated specification below is preserved as history.
|
|
4
|
+
|
|
5
|
+
|
|
3
6
|
> 状态:`FINAL`(2026-08-28 项目所有者定稿,`V2-D3`;M0 随三份 RFC 与 [`SPEC-0001-events-v1.md`](SPEC-0001-events-v1.md) 定稿退出)
|
|
4
7
|
> 日期:2026-08-28
|
|
5
8
|
> 上游:[`V2-PLAN.md`](../history/V2-PLAN.md)(执行基线,`V2-D0=B`);内核范围:完整内核(`V2-D2=A`,[`V2-DECISIONS.md`](../history/V2-DECISIONS.md))
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# RFC-0002:BuildBeat v2 领域模型
|
|
2
2
|
|
|
3
|
+
> 2026-10-03 revision (unreleased 4.0.0-dev.0): the owner approved product simplification. New work uses work.md, a fixed delivery loop and built-in checks. Observe/release execution, UI-specific policies, custom workflow/Policy authoring and default governance scaffolding are retired. Legacy official delivery files and historical events remain readable; unsupported configurations fail explicitly. RUN_CREATED may carry optional deliveryChecks, frozen for resume/approval. See [migration](../MIGRATION.md). The original dated specification below is preserved as history.
|
|
4
|
+
|
|
5
|
+
|
|
3
6
|
> 状态:`FINAL`(2026-08-28 项目所有者定稿,`V2-D3`)
|
|
4
7
|
> 日期:2026-08-28
|
|
5
8
|
> 上游:[`V2-PLAN.md`](../history/V2-PLAN.md) §3–4;报告 B §6 / §13 / §14(经基线裁决修订)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# RFC-0003:BuildBeat v2 Workflow 与 Policy
|
|
2
2
|
|
|
3
|
+
> 2026-10-03 revision (unreleased 4.0.0-dev.0): the owner approved product simplification. New work uses work.md, a fixed delivery loop and built-in checks. Observe/release execution, UI-specific policies, custom workflow/Policy authoring and default governance scaffolding are retired. Legacy official delivery files and historical events remain readable; unsupported configurations fail explicitly. RUN_CREATED may carry optional deliveryChecks, frozen for resume/approval. See [migration](../MIGRATION.md). The original dated specification below is preserved as history.
|
|
4
|
+
|
|
5
|
+
|
|
3
6
|
> 状态:`FINAL`(2026-08-28 项目所有者定稿,`V2-D3`;§8 observe/bands schema 已随定稿冻结)
|
|
4
7
|
> 日期:2026-08-28
|
|
5
8
|
> 上游:[`V2-PLAN.md`](../history/V2-PLAN.md) §3.2–3.7;报告 B §8–11 / WP1.4–1.5 / WP4.3–4.5
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# SPEC-0001:Event Ledger 格式 v1(冻结)
|
|
2
2
|
|
|
3
|
+
> 2026-10-03 revision (unreleased 4.0.0-dev.0): the owner approved product simplification. New work uses work.md, a fixed delivery loop and built-in checks. Observe/release execution, UI-specific policies, custom workflow/Policy authoring and default governance scaffolding are retired. Legacy official delivery files and historical events remain readable; unsupported configurations fail explicitly. RUN_CREATED may carry optional deliveryChecks, frozen for resume/approval. See [migration](../MIGRATION.md). The original dated specification below is preserved as history.
|
|
4
|
+
|
|
5
|
+
|
|
3
6
|
> 状态:**FROZEN**(2026-08-28 项目所有者定稿,`V2-D3`;[`V2-PLAN.md`](../history/V2-PLAN.md) 裁决 #8:格式 day-1 冻结,此后 additive-only)
|
|
4
7
|
> 日期:2026-08-28
|
|
5
8
|
> 冻结范围:**信封字段、通用规则、损坏处理、reducer 合同、初始事件类型注册表的语义**。文件摆放位置、快照格式、CLI 展示均为非规范内容,可变。
|