@haiyangbg/buildbeat 2.0.0 → 2.0.1
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 +22 -1
- package/README.en.md +100 -243
- package/README.md +100 -241
- package/SKILL.md +95 -27
- package/docs/CAPABILITY-MATRIX.md +37 -6
- package/docs/CLI.md +13 -3
- package/docs/README.md +37 -0
- package/docs/RELEASING.md +27 -3
- package/docs/V2-PLAN.md +2 -0
- package/docs/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md +11 -0
- package/docs/v2/RFC-0001-product-definition.md +2 -0
- package/docs/v2/guide/00-how-to-talk.md +3 -1
- package/docs/v2/guide/01-quickstart.md +92 -29
- package/docs/v2/guide/02-workflow-guide.md +4 -2
- package/docs/v2/guide/04-adapter-guide.md +17 -2
- package/docs/v2/guide/05-worker-contract.md +17 -6
- package/docs/v2/guide/06-evidence-guide.md +2 -1
- package/docs/v2/guide/07-approval-guide.md +22 -7
- package/docs/v2/guide/08-migration-v1.md +8 -4
- package/docs/v2/guide/09-security-boundaries.md +22 -11
- package/docs/v2/guide/10-recovery.md +4 -2
- package/docs/v2/guide/11-session-handoff.en.md +84 -0
- package/docs/v2/guide/11-session-handoff.md +84 -0
- package/docs/v2/guide/README.md +40 -21
- package/example/.buildbeat/manifest.json +1 -1
- package/package.json +10 -8
- package/src/v2/cli/run.js +26 -0
- package/templates/v2/AGENTS.md +6 -6
- package/templates/v2/BUILDBEAT.md +15 -0
- package/templates/v2/CLAUDE.md +7 -0
- package/templates/v2/envelope/prompts/builder.md +8 -0
- package/templates/v2/envelope/prompts/fixer.md +8 -0
- package/templates/v2/envelope/prompts/reviewer.md +13 -0
- package/templates/v2/envelope/worker.sh +70 -0
- package/templates/v2/run-config.example.yaml +74 -0
- package/templates/v2//346/214/207/346/214/245/345/217/260.md +7 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,9 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
> 本项目吃自己的狗粮(红线④:必更 CHANGELOG)。格式循 Keep a Changelog,倒序。
|
|
4
4
|
|
|
5
|
+
## v2.0.1 — 2026-09-06(补丁:合同与文档同步、`env:` 透传修复、v2 模板与首跑回归、首页重写)
|
|
6
|
+
|
|
7
|
+
- **首页与简介(C 批次)**:中英文 README 围绕项目上下文与持续交付重写,暂用“会话随时换,项目接着干”标语;突出 Git 与文件上下文、跨模型/工具/会话/人员接续、多角色协作和交付 Loop,个人使用与团队接力均为适用场景;包与插件简介同步(插件版本 0.2.1 → 0.2.2)。新增中英文跨会话与团队接续指南,区分聊天删除、跨成员交接、运行恢复和跨机器同步;场景示意不冒充实测。README 与快速开始说明新模板随下一个补丁版发布(不再教源码全局安装);角色表收回 SKILL 的产品/全栈/测试三视角,审查归入 Run 内置只读 reviewer;首段补"进度与证据由内核回读";标语改为 H1 下的加粗行。README 检查改为必要入口和中英结构一致性,不再固定旧标题。
|
|
8
|
+
|
|
9
|
+
> 2.0.0 之后的对外说明同步(A 事实与合同 → B 使用路径 → D 防回退 → C 首页),四批各一个 PR(#24、#27、#26、#28)合入 `main`;运行时只有一处行为修复(`env:` 透传),v1 生命周期命令与骨架 `v1.21` 不变;插件 manifest 描述随首页同步,版本升 0.2.2。
|
|
10
|
+
|
|
11
|
+
- **修复:run 配置的 `workers.<角色>.inheritEnv` 与 `env:` 在 CLI 加载路径被丢弃**。`doctor` 按配置报告 env 姿态,`start` / `resume` 却总按默认白名单起 worker,`env:` 点名注入的变量到不了子进程(Adapter 指南承诺的能力在 CLI 侧从未生效;直接调用 `createShellAdapter` 的 API 用户不受影响)。现在两字段透传到 Shell Adapter,`env:` 值必须是标量、变量名必须合法,否则加载配置时报错。回归:`tests/v2-run-cli.test.js` 新增"env 姿态经 CLI 到达 worker"(allowlist 下宿主变量不泄漏且 `env:` 可达;`inheritEnv: true` 下宿主变量可见;非法变量名被拒)
|
|
12
|
+
- **Worker 合同文档与解析器对齐**:finding 每条要求 `severity`(`P0`–`P3`)与字符串 `summary`(此前文档写 `title` 与 `P1|P2|P3`);阻断的是 P0/P1(此前写 P1/P2);格式错误 = `invalid-output` 判 `infra` 停人、不派 fixer、不扣预算(此前写"按失败处理");没配 `fixer` 时到 fix 步停人等接手,不是自动修。快速开始与 Skill 的 run-config 样板补 `fixer`,改成解析器可直接读的块列表,reviewer prompt 写明信封形状
|
|
13
|
+
- **安装通道统一稳定版**:快速开始、迁移指南、Skill §0.5 的 `@next` 全部改为 `@latest`(2.0.0 起 `latest` 即 v2);快速开始按"安装 → 工作项 → run 配置 → accept → doctor → start → 看证据 → 失败分支 → 恢复"重排,workflow 预设改为复制进工作项目录(digest 随项目进 Git),耗时不再写"5 分钟"
|
|
14
|
+
- **批准语义统一**:Approval 指南新增"接受 / 批准某转换 / 合并决定 / Run SUCCEEDED / 拒绝"五词对照表;Skill、指挥台、v2 AGENTS 模板、how-to-talk 中"批准=merge-ready"改为按 transition 说清批的是哪一步,非终态批准后需 `resume`,`SUCCEEDED` ≠ 已合并
|
|
15
|
+
- **安全边界分层**:安全指南每条边界分"内核实际做到的(检测或移除)"与"不能由此推出的"两栏;无人值守前置条件分内核 / 宿主 / 服务端三层,内核不再被描述为保证宿主层
|
|
16
|
+
- **发布手册与 RFC 历史口径**:`docs/RELEASING.md` 不再同时写"2.0.0 是 latest"与"latest stable 是 1.21.0",旧回读标注日期;RFC-0001 §6 加生效修订说明"`latest` 留 v1"已于 2026-09-05 结束,原文保留
|
|
17
|
+
- **模板**:指挥台"每个 session 自动读 AGENTS.md"改为按工具装载方式;开工示意先 `doctor` 再 `start`;迁移指南分清"升级 CLI"与"迁移项目状态",时间改为估算并给出迁移前后可核对目录
|
|
18
|
+
- **防回退(D 批次)**:`tests/check_docs.py` 新增"现行文档时效"检查——把 README、SKILL、CONTRIBUTING、CLI、能力矩阵、RELEASING、十件套指南、`templates/v2/*.md`、插件 README 列为现行文档,禁止再出现 `@next` 安装行、"latest 仍是 v1"、`title`/P1–P3 的旧信封形状、"P1/P2 阻断"、"任意会话自动装载"、"批准=merge-ready"这类本轮实际发现过的失效说法;SKILL frontmatter 描述限长 1024 且必须提到 `buildbeat-v2`;README 形状约束放宽(最终按 C 批次检查中英结构、命令与必要入口),README 不再被要求保留六句 v1 分发史文案(事实改由能力矩阵与 CLI.md 守卫);package.json description 改为形状校验(以 BuildBeat 开头、40–300 字、必须提到人的决定点、不得含 solo 类受众词),不再要求整句旧文案;RELEASING 必须含"Channels and branches"与"Post-release synchronization checklist"两节
|
|
19
|
+
- **修复:`tests/pack-firstrun.test.sh` 在 `npm publish --dry-run` 触发的 `prepublishOnly` 下失败**(父 npm 把 `npm_config_dry_run` 传给嵌套 npm,`npm pack` 不产 tarball):脚本先清掉该变量。真实发布走 pack 后 publish tarball,不经 `prepublishOnly`,不受影响;发布手册的候选检查恢复可用
|
|
20
|
+
- **打包首跑回归 `npm run test:pack-firstrun`**(`tests/pack-firstrun.test.sh`,已进 CI 的 CLI 矩阵与 `prepublishOnly`):`npm pack` → 隔离 `--prefix` 全局安装 → 用**安装后的** `bin/`、预设与 `templates/v2/envelope/` 按快速开始的顺序 accept → doctor → start,脚本 worker 走到合并决定(含 verify 失败→fixer)。源码树测试抓不到 `files` 漏文件,这条能
|
|
21
|
+
- **维护文档**:`CONTRIBUTING.md` 重写——文档权威分层(Skill = 使用路由与行为;RFC/SPEC = 规范;代码与测试 = 现状;冲突即 bug)、分支与发布策略(main 保护、七项必需检查、日常在 v2、稳定版从 main 顶端出、预发布到 next)、全部测试命令、lessons / evals 只收真实事故且先红后绿;`docs/RELEASING.md` 新增通道与分支表、发布后同步清单(CHANGELOG、证据、README、Skill、CLI/矩阵状态行、RFC 修订注、GitHub About、Release Latest 标记、插件版本、docs 检查);`tests/README.md` 重写为分层表(每层证明什么、不证明什么),插件身份改 0.2.1;新增 `docs/README.md` 总入口,现行与历史分开;`V2-PLAN.md` 顶部加"已交付、此后为历史基线"状态更新
|
|
22
|
+
- **v2 成为 Skill 的默认入口(B 批次)**:SKILL §8.0 按目录形态路由——已有 `delivery/` 继续 v2、有 `pm/NOW.md` 的 v1 项目给出继续或迁移两条路、什么都没有的项目默认 v2;§8.2 明确为 v1 文件总线路径,新增 §8.3 v2 生成 checklist(装载入口 → 台账 → 信封 → 第一个 Work → 通知 → 机器闸 → 首跑验收 → 收尾);§8.5 接管存量项目骨架默认 v2,`adopt` 只在选 v1 时跑
|
|
23
|
+
- **`templates/v2/` 补齐**:`CLAUDE.md`(一行指针)、`BUILDBEAT.md`(运行时版本标记,升级 = 升级 CLI)、`run-config.example.yaml`(可原样解析,含 fixer / reviewTriage / budgets / cache / envelope / redact)、`envelope/worker.sh`(工具缺失 exit 75、喂 `$BUILDBEAT_PROMPT`、写入步机械 commit、只读步落信封)与 builder / reviewer / fixer 三份 prompt。回归 `tests/v2-templates-firstrun.test.js`:脚本 worker 从这套模板走到合并决定(含 verify 失败→fixer→重验),并验证 SKILL 与快速开始里的每个 run-config 样板都能被严格 YAML 子集解析——顺带发现并修正了样板里三处会让 `doctor` / `start` 直接报错的写法:解析器不支持的行尾注释、内联 prompt 中的冒号、JS RegExp 不支持的 `(?i)` 内联标志(`redact` 样板)
|
|
24
|
+
- **文档口径**:快速开始与 Skill 样板改用 `delivery/envelope/`;Worker 合同的 fixer 行改为实际输入(review `findings[]` 含裁决状态;verify 失败时输入无失败摘要,日志在 `.buildbeat/runtime/runs/<RUN>/logs/`);十件套索引按"第一次使用 / 日常使用 / 配置参考 / 迁移"重排;指南各节标题去掉"(迭代 08)"类内部编号,改为"自 2.0.0-beta.x 起"出处行;能力矩阵新增"四个可用面"与 v2 运行时能力表,v1.21 条目原样保留;`docs/CLI.md` 明确本页只是 v1 生命周期 CLI 合同并加"两个可执行文件各管什么";v2 AGENTS 模板改为按工具装载、开工护栏改 `overview`(只有 v1 迁来的仓才跑 `bus-check`)、信封目录约定
|
|
25
|
+
|
|
5
26
|
## v2.0.0 — 2026-09-05(正式版:v2 成为 `latest`)
|
|
6
27
|
|
|
7
|
-
>
|
|
28
|
+
> **发布状态**:`@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)。
|
|
8
29
|
|
|
9
30
|
- **内容与 `2.0.0-beta.5` 同源**(迭代 01~09 的全部 v2 运行时、Skill §0.5 驾驶手册、`templates/v2/`、十件套指南、lessons #1–#25),外加 README 中英文的「当前主线是 v2」段与 `docs/CLI.md` 的 2.0.0 状态行。
|
|
10
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/`。
|
package/README.en.md
CHANGED
|
@@ -2,308 +2,165 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](README.md) | **English**
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**Switch sessions. Keep building.**
|
|
6
|
+
Context in files. Collaboration through Git. Work keeps moving.
|
|
6
7
|
|
|
7
|
-
BuildBeat
|
|
8
|
+
BuildBeat is a Git-based AI delivery workflow for humans and AI sessions. Goals, plans, decisions, and delivery records stay in the project, providing a basis for continuing when models, tools, sessions, or the person doing the work change. A build, verify, review, and fix loop moves execution forward; progress and evidence are read back by the kernel from Git and real commands, never taken from a session's own account; key decisions remain human.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
[User guides (Chinese)](docs/v2/guide/README.md) · [Session handoffs](docs/v2/guide/11-session-handoff.en.md) · [npm](https://www.npmjs.com/package/@haiyangbg/buildbeat) · [CI](https://github.com/HaiYangBG1/BuildBeat/actions/workflows/ci.yml) · [MIT](LICENSE)
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
## Let go of that irreplaceable chat
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
You should not have to preserve an ever-growing chat because it holds the only working context for your project. Open a fresh session when context fills up. Switch models or tools when you need to. Hand work to a teammate who can read the progress and next step from project files. Goals, constraints, plans, decisions, and delivery records belong in the filesystem, where the next session can find them without the old conversation.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
This is an **illustrative interaction** in a configured project, not a recorded test run:
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
| Moment | What you say | What the session does |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Session A: begin | “Add date filtering to exports. Plan it first.” | Reads project constraints and writes the goal and plan into a Work; starts execution after acceptance |
|
|
21
|
+
| Before leaving | “Save decisions and unfinished work; I am closing this session.” | Updates project records, checks run state and uncommitted changes, and identifies the next step |
|
|
22
|
+
| A new session takes over | “Read the project's BuildBeat entry point and continue date filtering.” | Reads the Work, Git, and run ledger to identify completed work, unverified results, decisions, and blockers |
|
|
23
|
+
| Continue | “Continue under the accepted plan.” | Proceeds, handles recovery, or waits for a decision according to the actual state; brings evidence to the merge decision |
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
- The builder copy-pastes context between sessions and becomes the message bus.
|
|
25
|
-
- An agent says “done” without a test, commit, or live evidence.
|
|
26
|
-
- A session hands work back after one document or commit and waits to be told “continue.”
|
|
27
|
-
- Every reversible draft choice interrupts the builder until real stage Gates disappear in confirmation noise.
|
|
28
|
-
- Current progress, production version, and decisions are copied into several documents and begin to contradict one another.
|
|
25
|
+
You can open the next session yourself or hand work to someone else with project access. When changing people or machines, synchronize records and candidates and check the original Run environment.
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
**Once the necessary context is saved, you can close or delete the old chat.** Unsaved discussion does not become project memory automatically. Keep the project, candidate branches, and required runtime files when removing chats. See [session handoffs](docs/v2/guide/11-session-handoff.en.md).
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
2. **File bus:** `NOW → board → contracts → status`; handoffs do not depend on chat memory.
|
|
34
|
-
3. **Human at the Gate:** specification, design, merge, and release cannot be crossed automatically.
|
|
35
|
-
4. **Evidence-based done:** completion requires a commit hash and verifiable evidence. No evidence means not done.
|
|
29
|
+
## Context lives in the project
|
|
36
30
|
|
|
37
|
-
|
|
31
|
+
Git manages project facts that need to last. Local files hold execution state. BuildBeat reads those facts to report progress, instead of asking every session to maintain another estimate of what happened.
|
|
38
32
|
|
|
39
|
-
|
|
33
|
+
| Files and directories | What they hold | How they are used |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| `AGENTS.md`, project standards, and contracts | Entry points, constraints, perspectives, and write boundaries | A new session starts here, then reads the files relevant to its task |
|
|
36
|
+
| `delivery/work/<ID>/` | Goals, plans, configuration, decisions, review adjudications, and terminal run records | Version in Git as the basis for continuing the same work |
|
|
37
|
+
| `.buildbeat/runtime/` | In-flight events, checkpoints, locks, and raw logs | Local and excluded from Git; needed to recover an active Run |
|
|
38
|
+
| `.buildbeat/worktrees/` | Each Run's isolated working tree | Preserves candidate code and the working state; keep it when clearing chats |
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
Filesystem storage does not mean every file belongs in Git. Secrets stay in a protected local environment. Terminal records retain evidence digests and references; retain raw logs separately when the project requires them. See the [evidence guide (Chinese)](docs/v2/guide/06-evidence-guide.md).
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
## Different ways to continue the same work
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
The project files carry the context needed to continue. A fresh session with BuildBeat loaded can read the same goals, decisions, and current state. Execution Workers connect through commands; model selection and authentication belong to the chosen AI tool.
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
- **Across sessions:** close an old chat and continue the same Work with a fresh context.
|
|
47
|
+
- **Across tools and models:** load the Skill in the target tool, configure its command and output contract, and reuse project records.
|
|
48
|
+
- **Across people:** someone with project access can synchronize context, candidates, and required evidence, then continue within their responsibility and authorization. Existing valid decisions remain in effect.
|
|
49
|
+
- **Across time and place:** sync committed project files and prepare another machine to take over. An ordinary Git clone does not migrate an active Run's runtime state or worktree.
|
|
48
50
|
|
|
49
|
-
|
|
51
|
+
**Taking over anytime and anywhere starts with accessible records, a working environment, and appropriate permissions.** Whether you continue yourself or hand work to someone else, start from project files without carrying the old chat transcript. Git supplies version control and collaboration; repository hosting and execution platforms control access.
|
|
50
52
|
|
|
51
|
-
|
|
53
|
+
Different tools can read and write the protocol. Running the Loop also requires a compatible adapter, permissions, and environment. Existing real Worker evidence covers `codex exec`, with deterministic tests for script Workers. Having a CLI alone does not establish that another tool is verified. See the [capability matrix](docs/CAPABILITY-MATRIX.md) and [adapter guide](docs/v2/guide/04-adapter-guide.md) (Chinese).
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
/plugin marketplace add /absolute/path/to/BuildBeat
|
|
55
|
-
/plugin install buildbeat@buildbeat-plugins
|
|
56
|
-
/buildbeat:buildbeat
|
|
57
|
-
```
|
|
55
|
+
## Multiple perspectives, one shared objective
|
|
58
56
|
|
|
59
|
-
|
|
57
|
+
**End-to-end work packages** are the unit of collaboration. One Builder owns a user-level outcome and calls on three AI perspectives — product, full-stack, and testing — as needed. Several Builders can own separate work packages or hand over the same package. Record who is currently taking it forward, what is done, and the next step to avoid duplicate execution.
|
|
60
58
|
|
|
61
|
-
|
|
59
|
+
| Perspective | Reads when taking over | Produces |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| Product | Goals, constraints, and existing decisions | Scope, a plan, and acceptance criteria |
|
|
62
|
+
| Full-stack (incl. operations) | The accepted plan, contracts, and environment facts | Candidate code and implementation records |
|
|
63
|
+
| Testing | Acceptance criteria and the candidate | Actual test results, coverage, and gaps |
|
|
62
64
|
|
|
63
|
-
|
|
65
|
+
These are available AI perspectives, not mandatory human-role handoffs or a requirement to open three chats. Review is not a session perspective: it is the read-only reviewer built into the Run, described in the next section. One person or several people can use these perspectives as needed. Shared facts move through project files, and each perspective respects its write boundaries. The current single-repository active-Run lock is local. Multiple perspectives or Git clones do not provide cross-machine execution coordination. Check the original execution environment before handing over the same Work to avoid duplicate starts.
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
npm view @haiyangbg/buildbeat@latest version
|
|
67
|
-
npx --yes --package=@haiyangbg/buildbeat@latest buildbeat doctor /path/to/project
|
|
68
|
-
npx --yes --package=@haiyangbg/buildbeat@latest buildbeat init /path/to/project --dry-run
|
|
69
|
-
npx --yes --package=@haiyangbg/buildbeat@latest buildbeat adopt /path/to/project --dry-run --json
|
|
70
|
-
npx --yes --package=@haiyangbg/buildbeat@latest buildbeat upgrade /path/to/project --dry-run --json
|
|
71
|
-
```
|
|
67
|
+
## Put the work in a Loop
|
|
72
68
|
|
|
73
|
-
|
|
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.
|
|
74
70
|
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
```mermaid
|
|
72
|
+
flowchart LR
|
|
73
|
+
P[Accept plan] --> B[Build]
|
|
74
|
+
B --> V[Verify]
|
|
75
|
+
V -->|Pass| R[Review]
|
|
76
|
+
V -->|Fail| F[Fix]
|
|
77
|
+
R -->|Blocking findings| F
|
|
78
|
+
F --> V
|
|
79
|
+
R -->|Pass| H[Human merge decision]
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
`1.21.0` is now independently verified and adds a standard domain-response format on top of the `1.20.0` lifecycle: close out with Done → Not done → Next, and keep evidence directly under the completed outcome it supports. CLI commands and safety boundaries do not expand. `--force` still cannot overwrite project-owned content or unsafe paths, and a major transition separately requires `--major`. A source checkout, Git tag, and npm artifact remain different evidence surfaces; exact release evidence is archived in [`docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md`](docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md).
|
|
85
|
-
|
|
86
|
-
Copied v1.16 legacy projects must not hand-author, copy, or rename a manifest to fabricate schema 2 ownership. Continue with manual CHANGELOG-based maintenance by default; if mechanical upgrades are genuinely required, use the [v1.16 legacy migration guide](docs/LEGACY-V1.16-MIGRATION.md) to rebuild the baseline under review on a dedicated Git branch.
|
|
87
|
-
|
|
88
|
-
The old `solobaton@latest` package stays on the legacy read-only v0 capability and points users to this scoped package; it does not gain project writes or upgrades. A write-enabled first-screen command must use `@haiyangbg/buildbeat`, still shows its plan first, and remains subject to Git, collision, ownership, and human-Gate boundaries.
|
|
89
|
-
|
|
90
|
-
### The v2 runtime: `buildbeat-v2` (current line)
|
|
91
|
-
|
|
92
|
-
v2 turns "how a work package goes from accepted to merged to released" into a machine-verifiable Run: once the intent / plan under `delivery/work/<ID>/` are accepted by digest, `buildbeat-v2 start` drives Build → Verify → Review → Fix in an isolated git worktree under the official preset. The candidate is what git reads back, never what a worker claims; the read-only reviewer is enforced by the kernel; exhausted budgets, repeated identical failures and worker-infrastructure failures all stop for a human; merge, push and deploy remain human actions after approval (the kernel has no call path for them). Go-live uses the `release-readback` lane to ledger "read back before → human acts → read back after → observe → human closes the window" as L4 evidence; `observe` runs read-only production health checks; `gc` cleans up; `.buildbeat/notify.yaml` pushes waits to DingTalk or a webhook.
|
|
82
|
+
The diagram shows normal and repair paths. Risk presets, finding triage, infrastructure failures, and budgets can introduce additional waits.
|
|
93
83
|
|
|
94
|
-
|
|
84
|
+
- **Completion has evidence:** candidates are read back from Git, and test conclusions come from actual commands. An AI's “done” does not replace verification.
|
|
85
|
+
- **Approval has a subject:** decisions bind to a candidate, plan, and evidence. Changes can make an earlier approval stale.
|
|
86
|
+
- **Interruption has a recovery path:** the Runner can resume from its ledger. An interrupted step may run again; a dirty worktree requires a decision first.
|
|
87
|
+
- **Loops have limits:** budgets, repeated failures, and infrastructure problems become explicit pending actions. Notifications are configurable.
|
|
95
88
|
|
|
96
|
-
|
|
97
|
-
npm install --global @haiyangbg/buildbeat@latest # since 2.0.0 latest is v2; pre-releases use @next
|
|
98
|
-
buildbeat-v2 overview --repo . # where each work is, what it has cost, who moves next
|
|
99
|
-
buildbeat-v2 inbox --repo . # what is waiting on you, and the exact reply
|
|
100
|
-
buildbeat-v2 start --config delivery/work/WORK-X/run-config.yaml --attempt new
|
|
101
|
-
buildbeat-v2 status --repo . --run RUN-X-01 # which step, for how long, typical duration, stalled or not
|
|
102
|
-
```
|
|
89
|
+
The merge decision means the candidate is ready for a merge. A human or a separately authorized tool performs merge, push, and deployment outside the Runner. The `release-readback` workflow can record release checks and observations. Runtime checks and host isolation have distinct scopes; see [security and permission boundaries (Chinese)](docs/v2/guide/09-security-boundaries.md).
|
|
103
90
|
|
|
104
|
-
|
|
91
|
+
## Start your first handoff
|
|
105
92
|
|
|
106
|
-
|
|
93
|
+
You need Node.js ≥ 20, Git, Bash, and an installed, authenticated AI coding tool.
|
|
107
94
|
|
|
108
|
-
|
|
95
|
+
**1. Install the runtime.** Stable packages use `@latest`. The package includes the `buildbeat-v2` runtime and the `buildbeat` v1 lifecycle commands.
|
|
109
96
|
|
|
110
97
|
```bash
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
cd /path/to/new-project
|
|
98
|
+
npm view @haiyangbg/buildbeat@latest version
|
|
99
|
+
npm install --global @haiyangbg/buildbeat@latest
|
|
114
100
|
```
|
|
115
101
|
|
|
116
|
-
|
|
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.
|
|
117
103
|
|
|
118
|
-
|
|
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:
|
|
119
105
|
|
|
120
|
-
|
|
121
|
-
2. merge `gitignore.template` into the project's `.gitignore`;
|
|
122
|
-
3. configure real test commands in `verify-status.sh`;
|
|
123
|
-
4. run `bash scripts/bus-check.sh` and inspect every capability boundary;
|
|
124
|
-
5. install the pre-commit guard in the meta repo and in each code sub-repo:
|
|
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.
|
|
125
107
|
|
|
126
|
-
|
|
127
|
-
cp scripts/pre-commit.sh .git/hooks/pre-commit
|
|
128
|
-
chmod +x .git/hooks/pre-commit
|
|
129
|
-
```
|
|
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).
|
|
130
109
|
|
|
131
|
-
|
|
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:
|
|
132
111
|
|
|
133
|
-
|
|
112
|
+
> Read the project's BuildBeat entry point, inspect progress and pending decisions, explain the next step, and continue within the existing authorization.
|
|
134
113
|
|
|
135
|
-
|
|
114
|
+
Check the goal, candidate, verification results, and next step it reads back. Follow the [session handoff guide](docs/v2/guide/11-session-handoff.en.md).
|
|
136
115
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
```
|
|
116
|
+
<details>
|
|
117
|
+
<summary>Claude Code plugin installation</summary>
|
|
140
118
|
|
|
141
|
-
|
|
142
|
-
You are the Fullstack perspective for the current work package. Own implementation, contracts, and the deployment candidate. Start.
|
|
143
|
-
```
|
|
119
|
+
The plugin loads the Skill and reference material. Install the runtime separately.
|
|
144
120
|
|
|
145
121
|
```text
|
|
146
|
-
|
|
122
|
+
/plugin marketplace add HaiYangBG1/BuildBeat
|
|
123
|
+
/plugin install buildbeat@buildbeat-plugins
|
|
124
|
+
/buildbeat:buildbeat
|
|
147
125
|
```
|
|
148
126
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
At the start of every session, synchronize the repository and run the guardrail:
|
|
127
|
+
To install from source, replace the marketplace address with this checkout's absolute path. See the [plugin guide](plugins/buildbeat/README.md) for cache boundaries and installation checks.
|
|
152
128
|
|
|
153
|
-
|
|
154
|
-
git pull
|
|
155
|
-
bash scripts/bus-check.sh
|
|
156
|
-
```
|
|
129
|
+
</details>
|
|
157
130
|
|
|
158
|
-
|
|
131
|
+
<details>
|
|
132
|
+
<summary>v1 lifecycle and former names</summary>
|
|
159
133
|
|
|
160
|
-
|
|
134
|
+
`buildbeat doctor` checks a v1 scaffold; `init/adopt/upgrade` manage its lifecycle. They do not generate or migrate a complete v2 Work.
|
|
161
135
|
|
|
162
136
|
```bash
|
|
163
|
-
|
|
164
|
-
bash scripts/bus-check.sh --strict # exits non-zero on any conflict/error finding
|
|
165
|
-
bash scripts/verify-status.sh --run # runs configured project suites and records the latest green result
|
|
166
|
-
bash scripts/design-preview.sh 1 # opens the real clickable prototype before Gate 2 for UI work
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## Core mechanisms
|
|
170
|
-
|
|
171
|
-
- **Work packages:** keep moving toward one independently acceptable user outcome instead of handing back after one file, commit, or reviewer result.
|
|
172
|
-
- **Three approval levels:** `STOP_NOW` for authorization, frozen semantics, and irreversible actions; `BATCH_AT_GATE` for reversible choices; `NO_APPROVAL` for derived in-scope work.
|
|
173
|
-
- **Three tracks:** fast, standard, and heavy tracks select process weight by risk rather than applying every ceremony to every change.
|
|
174
|
-
- **Single sources of truth:** `NOW.md` stays a thin pointer, while contracts, decisions, status, and live queries each have one authoritative entry point.
|
|
175
|
-
- **Review-ready gate:** launch one independent milestone reviewer only after the candidate is stable, worktrees are clean, L3 evidence is green, and there are no known pending fixes.
|
|
176
|
-
- **Machine guardrails:** `bus-check --strict`, pre-commit, gitleaks, and project tests turn deterministic rules into executable checks.
|
|
177
|
-
- **Multi-repository drift:** a multi-repo project explicitly joins each sub-repository CHANGELOG, contract-version source, and local deployment-baseline app at the contract entry point. Definite mismatches block; missing repositories or sources stay unverified instead of being inferred from prose.
|
|
178
|
-
- **Optional standards and ADRs:** STACK/CODE/REVIEW/DESIGN are not generated by default. When present, their declarations, Rule IDs, and Draft/Confirmed state are checked. A Confirmed STACK also gets a read-only comparison between its explicit baseline and observed Node, lockfile, and Docker FROM facts; incomplete scope stays unverified. Only durable, hard-to-reverse decisions need ADRs, whose Status and Superseded chain are validated.
|
|
179
|
-
- **Production-state evidence:** after a project supplies `live-status.sh` and `live-config.sh`, BuildBeat can compare deployment-platform configuration with a baseline. It does not automatically prove that a running container loaded the latest configuration.
|
|
180
|
-
- **Brownfield takeover:** establish system boundaries and minimum verification before applying the full bus to new territory; do not rewrite unknown legacy behavior.
|
|
181
|
-
|
|
182
|
-
The complete rules, bootstrap, and takeover procedure live in [`SKILL.md`](SKILL.md). Real failure modes and their design rationale live in [`lessons.md`](lessons.md).
|
|
183
|
-
|
|
184
|
-
## Operating model
|
|
185
|
-
|
|
186
|
-
```mermaid
|
|
187
|
-
flowchart LR
|
|
188
|
-
Views["AI specialist perspectives<br/>Product · Fullstack · Testing"] --> WPA["Builder / work package A<br/>judgment → implementation → test → merge/release evidence"]
|
|
189
|
-
Views --> WPB["Builder / work package B<br/>judgment → implementation → test → merge/release evidence"]
|
|
190
|
-
Human["Human Gates<br/>specification · design · merge · release"] --> WPA
|
|
191
|
-
Human --> WPB
|
|
192
|
-
WPA --> Bus["Git file bus<br/>NOW · contracts · decisions · status · evidence"]
|
|
193
|
-
WPB --> Bus
|
|
137
|
+
npx --yes --package=@haiyangbg/buildbeat@latest buildbeat doctor /path/to/project
|
|
194
138
|
```
|
|
195
139
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
## Applicability
|
|
199
|
-
|
|
200
|
-
Recommended for projects that:
|
|
201
|
-
|
|
202
|
-
- have at least two repositories or deploy units;
|
|
203
|
-
- will evolve for several weeks or longer;
|
|
204
|
-
- have one or more Builders coordinating multiple AI contexts and closing separate work packages end to end;
|
|
205
|
-
- need stable handoffs between several AI coding sessions;
|
|
206
|
-
- value verifiable delivery records without introducing a complex agent runtime.
|
|
207
|
-
|
|
208
|
-
Not recommended for:
|
|
209
|
-
|
|
210
|
-
- small single-repo changes;
|
|
211
|
-
- one-off scripts;
|
|
212
|
-
- work expected to finish within a week;
|
|
213
|
-
- projects with no verification capability and no intent to establish a minimum test suite first.
|
|
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).
|
|
214
141
|
|
|
215
|
-
|
|
142
|
+
</details>
|
|
216
143
|
|
|
217
|
-
|
|
144
|
+
## Everyday use and applicability
|
|
218
145
|
|
|
219
|
-
|
|
146
|
+
Once configured, talk to the session directly:
|
|
220
147
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
│ ├── NOW.md # thin pointer to the current iteration
|
|
229
|
-
│ ├── <iteration>-board.md
|
|
230
|
-
│ ├── decisions.md
|
|
231
|
-
│ ├── status/
|
|
232
|
-
│ ├── changes/
|
|
233
|
-
│ ├── adr/ # optional durable technical decisions and supersession links
|
|
234
|
-
│ └── archive/<iteration>/evidence/
|
|
235
|
-
├── standards/ # optional STACK/CODE/REVIEW; DESIGN for UI projects
|
|
236
|
-
├── scripts/
|
|
237
|
-
│ ├── bus-check.sh
|
|
238
|
-
│ ├── verify-status.sh
|
|
239
|
-
│ ├── drift-check.sh
|
|
240
|
-
│ ├── design-preview.sh
|
|
241
|
-
│ └── pre-commit.sh
|
|
242
|
-
├── .claude/agents/reviewer.md # read-only milestone / risk-delta / closure review
|
|
243
|
-
├── 指挥台.md # one-page operator card
|
|
244
|
-
└── BUILDBEAT.md # installed BuildBeat version and upgrade record
|
|
245
|
-
```
|
|
148
|
+
| What you need | What you can say |
|
|
149
|
+
|---|---|
|
|
150
|
+
| A new session or teammate to take over | “Sync project records, read the entry point, and continue this work.” |
|
|
151
|
+
| Progress | “What is done, what remains, and who moves next?” |
|
|
152
|
+
| A decision | “What needs my decision? Show the evidence with it.” |
|
|
153
|
+
| Recovery | “Is this run stuck? Inspect the state and handle recovery.” |
|
|
154
|
+
| A fresh session | “Save the necessary context and check which work is still running.” |
|
|
246
155
|
|
|
247
|
-
|
|
156
|
+
BuildBeat fits ongoing projects with frequent AI context changes, specialist collaboration, and a need for verifiable delivery records. Individuals can keep their own work moving; teams can hand work over through shared records. One-off scripts and very small changes usually do not need the full workflow. The project should have real verification commands, or establish minimum verification first.
|
|
248
157
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
| Capability | Dependency | When missing |
|
|
252
|
-
|---|---|---|
|
|
253
|
-
| File bus and basic checks | Git, Bash | The core workflow cannot run |
|
|
254
|
-
| Real-render design preview | Python 3 | The bundled preview script cannot run |
|
|
255
|
-
| Blocking secret scan | gitleaks | Degrades to a warning; do not claim a secret gate exists |
|
|
256
|
-
| Production-config drift | `jq`, a SHA tool, project `live-config.sh` | Explicitly skipped; no production-state conclusion |
|
|
257
|
-
| Live-version query | project `live-status.sh` and platform CLI | Explicitly unconfigured; documentation is not treated as live truth |
|
|
258
|
-
| L3 test evidence | real `SUITES` in project `verify-status.sh` | Reports unconfigured; cannot claim automation is green |
|
|
259
|
-
| CLI inspection/scaffolding/mechanical upgrade | Node.js 20+, the npm registry, or this source checkout | Legacy npm v0 remains read-only; scoped BuildBeat 1.21 is independently verified, while the genuine schema 2 version-increment pilot remains the v1.20 real-project evidence; project uninstall remains frozen, and the Skill/manual equivalent stays supported |
|
|
260
|
-
|
|
261
|
-
Skill-only, legacy npm v0, and scoped BuildBeat 1.21 are distinct availability surfaces; the source checkout, registry artifact, and real project must also be verified separately. `doctor`, `init/adopt`, and `upgrade` own different responsibilities. See the bilingual [BuildBeat capability matrix](docs/CAPABILITY-MATRIX.md) and the [v1.20 real-project pilot](docs/PHASE4-V1.20-PILOT-2026-08-25.md).
|
|
262
|
-
|
|
263
|
-
## Continue reading
|
|
264
|
-
|
|
265
|
-
- [`SKILL.md`](SKILL.md): the single complete entry point for the methodology and bootstrap; §0.5 is the v2 driving manual;
|
|
266
|
-
- [`docs/v2/guide/README.md`](docs/v2/guide/README.md): the ten v2 runtime guides (how to talk to a session, quickstart, workflow / policy / adapter / worker contract / evidence / approval / migration from v1 / security boundaries / recovery);
|
|
267
|
-
- [`example/`](example/): the protocol teaching snapshot of a fictional project after one completed iteration (executable scripts still reference the template SSOT);
|
|
268
|
-
- [`lessons.md`](lessons.md): real anti-patterns, root causes, and fixes;
|
|
269
|
-
- [`docs/ROADMAP.md`](docs/ROADMAP.md): the new product direction, design principles, and the CLI execution amendment effective on 2026-08-24;
|
|
270
|
-
- [`docs/EXECUTION-PLAN.md`](docs/EXECUTION-PLAN.md): the current phased work packages, dependencies, acceptance criteria, and frozen boundaries;
|
|
271
|
-
- [`docs/CLI-STRATEGY-2026-08.md`](docs/CLI-STRATEGY-2026-08.md): the official-source CLI comparison and its evidence limits;
|
|
272
|
-
- [`docs/CHECKS.md`](docs/CHECKS.md): file-bus invariants, Gate/evidence tokens, finding codes, and strict-mode semantics;
|
|
273
|
-
- [`docs/CLI.md`](docs/CLI.md): command boundaries, file ownership, manifest, mechanical upgrade, and manual-removal contract;
|
|
274
|
-
- [`docs/CAPABILITY-MATRIX.md`](docs/CAPABILITY-MATRIX.md): bilingual capability and interoperability mapping across Skill-only, legacy npm v0, and scoped BuildBeat 1.21;
|
|
275
|
-
- [`docs/LEGACY-V1.16-MIGRATION.md`](docs/LEGACY-V1.16-MIGRATION.md): safe paths for a copied v1.16 project to remain manually managed or rebuild a schema 2 baseline under review (Chinese);
|
|
276
|
-
- [`docs/CLI-PILOT-2026-08-23.md`](docs/CLI-PILOT-2026-08-23.md): read-only CLI v0 evidence from three real brownfield projects and the write-boundary decision;
|
|
277
|
-
- [`docs/PHASE1-PILOT-2026-08-24.md`](docs/PHASE1-PILOT-2026-08-24.md): the read-only Phase 1 file-bus pilot across the example, an active multi-repo projection, and a real single-repo code tree;
|
|
278
|
-
- [`docs/PHASE2-PILOT-2026-08-25.md`](docs/PHASE2-PILOT-2026-08-25.md): the three real-directory Wave 1 write paths, Tide preservation hashes, UI-detection feedback, and final local Git/hook/hash evidence;
|
|
279
|
-
- [`docs/PHASE2-BUILDBEAT-PILOT-2026-08-25.md`](docs/PHASE2-BUILDBEAT-PILOT-2026-08-25.md): the fresh BuildBeat canonical namespace regression, Tide preservation recheck, and Gate3 closure evidence;
|
|
280
|
-
- [`docs/PHASE4-V1.20-PILOT-2026-08-25.md`](docs/PHASE4-V1.20-PILOT-2026-08-25.md): the genuine schema 2 version-increment upgrade, project-ownership preservation, and read-only real multi-repository refresh;
|
|
281
|
-
- [`docs/PHASE4-STABILITY-AUDIT-2026-08-25.md`](docs/PHASE4-STABILITY-AUDIT-2026-08-25.md): the status, evidence boundary, and still-open release blocker for all 12 roadmap §15 hard gates (Chinese);
|
|
282
|
-
- [`docs/RELEASING.md`](docs/RELEASING.md): npm release Gates, verification, and the Trusted Publishing migration;
|
|
283
|
-
- [`CONTRIBUTING.md`](CONTRIBUTING.md): contribution, verification, and pull-request boundaries;
|
|
284
|
-
- [`SECURITY.md`](SECURITY.md): supported versions and the private vulnerability-reporting channel;
|
|
285
|
-
- [`CHANGELOG.md`](CHANGELOG.md): version history and upgrade instructions for copied projects.
|
|
286
|
-
|
|
287
|
-
## Contributing
|
|
288
|
-
|
|
289
|
-
Issues and pull requests are welcome. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the complete submission rules. Do not open a public issue for an undisclosed vulnerability; report it privately through [`SECURITY.md`](SECURITY.md). A change to workflow semantics should update `SKILL.md`, affected templates, both READMEs, the example, and the changelog. Explain:
|
|
290
|
-
|
|
291
|
-
1. which real failure mode the change addresses;
|
|
292
|
-
2. how to reproduce it;
|
|
293
|
-
3. which automated checks show that it did not regress existing behavior.
|
|
294
|
-
|
|
295
|
-
Run at least:
|
|
296
|
-
|
|
297
|
-
```bash
|
|
298
|
-
bash -n templates/scripts/*.sh tests/*.sh
|
|
299
|
-
npm test
|
|
300
|
-
npm run test:scripts
|
|
301
|
-
npm run test:skill-only
|
|
302
|
-
npm run check:docs
|
|
303
|
-
npm run pack:check
|
|
304
|
-
git diff --check
|
|
305
|
-
```
|
|
158
|
+
Teams collaborate through a shared Git repository and project agreements. BuildBeat does not provide multi-user accounts, roles and permissions. It does not collect or upload project usage data and has no telemetry collection. Configured AI tools and notification services have their own data practices. More examples are in the [conversation guide (Chinese)](docs/v2/guide/00-how-to-talk.md).
|
|
306
159
|
|
|
307
|
-
##
|
|
160
|
+
## Learn more and contribute
|
|
308
161
|
|
|
309
|
-
[
|
|
162
|
+
- [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).
|
|
164
|
+
- [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
|
+
- [Skill](SKILL.md): how a session uses BuildBeat; [lessons](lessons.md): the real incidents behind its mechanisms (Chinese).
|
|
166
|
+
- [CHANGELOG](CHANGELOG.md) (Chinese) · [Contributing](CONTRIBUTING.md) · [MIT license](LICENSE).
|