@haiyangbg/buildbeat 1.21.0 → 2.0.0-beta.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 +14 -0
- package/README.en.md +4 -4
- package/README.md +4 -4
- package/bin/buildbeat-v2.js +6 -0
- 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" +2053 -0
- package/docs/CAPABILITY-MATRIX.md +4 -4
- package/docs/CLI.md +4 -4
- package/docs/EXECUTION-PLAN.md +1 -1
- package/docs/RELEASING.md +5 -5
- package/docs/ROADMAP.md +4 -1
- package/docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md +55 -0
- package/docs/V2-D2-DECISION-CARD.md +37 -0
- package/docs/V2-DECISIONS.md +11 -0
- package/docs/V2-ITERATION-01.md +60 -0
- package/docs/V2-ITERATION-02.md +32 -0
- package/docs/V2-ITERATION-03.md +30 -0
- package/docs/V2-ITERATION-04.md +29 -0
- package/docs/V2-ITERATION-05.md +20 -0
- package/docs/V2-ITERATION-06.md +18 -0
- package/docs/V2-ITERATION-07.md +36 -0
- package/docs/V2-PLAN.md +333 -0
- package/docs/V2-PROPOSAL.md +319 -0
- package/docs/v2/M1-ACCEPTANCE-2026-08-28.md +38 -0
- package/docs/v2/M2-DOD-2026-08-28.md +34 -0
- package/docs/v2/M4-CHICKAI-PILOT-2026-08-28.md +44 -0
- package/docs/v2/M4-EXTERNAL-PILOT-2026-08-28.md +46 -0
- package/docs/v2/M4-SELFHOST-2026-08-28.md +53 -0
- package/docs/v2/RFC-0001-product-definition.md +92 -0
- package/docs/v2/RFC-0002-domain-model.md +149 -0
- package/docs/v2/RFC-0003-workflow-policy.md +204 -0
- package/docs/v2/SPEC-0001-events-v1.md +98 -0
- package/docs/v2/guide/01-quickstart.md +92 -0
- package/docs/v2/guide/02-workflow-guide.md +42 -0
- package/docs/v2/guide/03-policy-guide.md +53 -0
- package/docs/v2/guide/04-adapter-guide.md +45 -0
- package/docs/v2/guide/05-worker-contract.md +37 -0
- package/docs/v2/guide/06-evidence-guide.md +38 -0
- package/docs/v2/guide/07-approval-guide.md +34 -0
- package/docs/v2/guide/08-migration-v1.md +68 -0
- package/docs/v2/guide/09-security-boundaries.md +28 -0
- package/docs/v2/guide/10-recovery.md +55 -0
- package/docs/v2/guide/README.md +18 -0
- package/example/.buildbeat/manifest.json +2 -2
- package/example/BUILDBEAT.md +1 -1
- package/package.json +4 -2
- package/src/constants.js +4 -1
- package/src/project.js +6 -1
- package/src/v2/adapters/mock.js +67 -0
- package/src/v2/adapters/shell.js +78 -0
- package/src/v2/cli/run.js +494 -0
- package/src/v2/domain/event-registry.js +100 -0
- package/src/v2/domain/model.js +61 -0
- package/src/v2/engine/reducer.js +253 -0
- package/src/v2/engine/risk-preset.js +48 -0
- package/src/v2/engine/workflow.js +201 -0
- package/src/v2/engine/yaml-subset.js +194 -0
- package/src/v2/evidence/collector.js +63 -0
- package/src/v2/observe/observe-config.js +194 -0
- package/src/v2/observe/observe-reducer.js +117 -0
- package/src/v2/observe/observe.js +420 -0
- package/src/v2/policy/policy.js +302 -0
- package/src/v2/presets/observe.yaml +45 -0
- package/src/v2/presets/policies/ui-render-gate.yaml +13 -0
- package/src/v2/presets/risk/controlled.yaml +39 -0
- package/src/v2/presets/risk/fast.yaml +19 -0
- package/src/v2/presets/risk/legacy-four-gates.yaml +44 -0
- package/src/v2/presets/risk/standard.yaml +28 -0
- package/src/v2/presets/software-delivery.yaml +39 -0
- package/src/v2/runtime/decisions.js +288 -0
- package/src/v2/runtime/metrics.js +140 -0
- package/src/v2/runtime/orchestrator.js +754 -0
- package/src/v2/runtime/run-record.js +55 -0
- package/src/v2/storage/event-ledger.js +154 -0
- package/src/v2/workspace/workspace-manager.js +137 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
> 本项目吃自己的狗粮(红线④:必更 CHANGELOG)。格式循 Keep a Changelog,倒序。
|
|
4
4
|
|
|
5
|
+
## v2.0.0-beta.1 — 未发布(beta-ready,等待所有者发布授权)
|
|
6
|
+
|
|
7
|
+
> 主题:BuildBeat v2 首个 Beta——确定性内核 + Agent Loop Runtime。事件溯源台账(hash 链、损坏截断、终态压实进 Git 面)、Policy 门(8 算子三值逻辑、`UNVERIFIED` 永不当 PASS)、隔离 Workspace(push 物理封禁、`allowedPaths` 越界即停、Reviewer 只读快照强制)、Shell Adapter 厂商中立接任意 CLI Agent(codex 实证)、digest 绑定人批与 `APPROVAL_STALE`。MVP 承诺兑现:Build–Verify–Fix–Review 自动闭环,停在合并决定,带证据交人。
|
|
8
|
+
> **发布口径**:`dist-tag: next`;`latest` 仍指向 v1.21.0,v1 CLI 与文件原样冻结随包分发。v2 入口为独立 bin `buildbeat-v2`。
|
|
9
|
+
> **试点证据**:self-host(RUN-SELF-001)+ 两个外部真实项目(ruoyi-ai RUN-CLI-DW-01 全自动 5.2 分钟到合并决定;chickAI 看板积压含完整 reviewer 阻断→fixer 修复闭环),六退出指标全达标;见 `docs/v2/M4-*.md`。
|
|
10
|
+
|
|
11
|
+
- **observe v0**(RFC-0003 §8 冻结契约的实现):drift-check/live-status 类探针接为 Evidence Provider(采不到即 `unverified`,同一 Evidence Contract 与链校验台账);bands log→只读诊断→Intent 草稿三层分层响应;草稿只入队 Git 面绝不自动执行;`observe triage` 人分诊,`dismiss` 回调阈值防告警疲劳;分诊记忆活在 Git 面,runtime 可删(不变量 23 有测试)
|
|
12
|
+
- **文档十件套**(`docs/v2/guide/`):快速开始 / Workflow / Policy / Adapter / Worker 合同 / Evidence / Approval / v1 迁移半天手工 runbook / 安全边界 / 故障恢复
|
|
13
|
+
- **`buildbeat-v2 metrics`**:本地只读六指标;行为 evals 九场景卡进 `npm test` 单入口
|
|
14
|
+
- **v1 迁移**:半天手工 runbook(不猜旧状态、单向迁移、禁止双写);`legacy-four-gates` 风险预设保留 v1 四 Gate 完整形态
|
|
15
|
+
- **v1 冻结的两处诚实修正**(prepublish 门抓出):manifest `cliVersion` 校验接受 prerelease(否则 v1 CLI 装在 beta 包里自坏);`SCAFFOLD_VERSION` 钉死 `v1.21` 字面量、与包版本解耦——脚手架内容束未变,存量安装不应看到虚构的跨大版本升级
|
|
16
|
+
- **发布道**:publish workflow 增加 prerelease 通道(prerelease tag 只能从其发布分支的 origin tip 发、强制 dist-tag `next`、verify 回读 dist-tag 路由;stable 通道 main-only 原样),配对契约进 `tests/publish-workflow.test.js` 永久回归
|
|
17
|
+
|
|
5
18
|
## v1.21.0 — 2026-08-25
|
|
6
19
|
|
|
7
20
|
> 主题:统一各域的收口回复,让人一眼看清做成了什么、证据在哪、还有什么没做,以及下一棒或真实求助。
|
|
8
21
|
> **拷出项目升级**:在根 `AGENTS.md` 的任务包规则后补入「域回复格式」;未改过的 `指挥台.md` 可随后续版本机械替换。历史 status、看板和证据不回改,`pm/status/**` 持久口径不变。
|
|
22
|
+
> **发布状态**:`@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)。
|
|
9
23
|
|
|
10
24
|
- **域回复契约**:产品/全栈/测试等 AI 视角面向人收口时统一按「已做 → 未做 → 下一步」输出;已做只写功能/业务结果,证据紧跟对应事项,未做必须写原因,下一步明确交棒对象或真实求助
|
|
11
25
|
- **发挥边界**:回复契约只约束收口/交接,不要求中间进展和探索讨论套模板;本域仍能安全推进时继续做,不伪造求助或固定域流水线
|
package/README.en.md
CHANGED
|
@@ -79,7 +79,7 @@ npm uninstall --global @haiyangbg/buildbeat # remove only the global CLI p
|
|
|
79
79
|
|
|
80
80
|
Package-manager install, update, and removal operations manage only the **CLI package and executables**; they never create, upgrade, or delete a project's scaffold. `doctor` is read-only. `init/adopt` show the complete plan and write only after clean-Git, collision, blocker, and confirmation checks. `upgrade` accepts only a canonical schema 2 baseline and performs manifest/hash-based mechanical changes with zero writes on unresolved conflict. `diff/uninstall` and workflow-command expansion remain frozen. `buildbeat` is canonical; the `solobaton` executable remains only as a compatibility alias. See [`docs/CLI.md`](docs/CLI.md) for the complete contract.
|
|
81
81
|
|
|
82
|
-
`1.21.0` adds a standard domain-response format on top of the
|
|
82
|
+
`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).
|
|
83
83
|
|
|
84
84
|
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.
|
|
85
85
|
|
|
@@ -238,9 +238,9 @@ The compact brownfield layout moves the scripts, operator card, and version mark
|
|
|
238
238
|
| Production-config drift | `jq`, a SHA tool, project `live-config.sh` | Explicitly skipped; no production-state conclusion |
|
|
239
239
|
| Live-version query | project `live-status.sh` and platform CLI | Explicitly unconfigured; documentation is not treated as live truth |
|
|
240
240
|
| L3 test evidence | real `SUITES` in project `verify-status.sh` | Reports unconfigured; cannot claim automation is green |
|
|
241
|
-
| CLI inspection/scaffolding/mechanical upgrade | Node.js 20+, the npm registry, or this source checkout | Legacy npm v0 remains read-only; scoped BuildBeat 1.
|
|
241
|
+
| 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 |
|
|
242
242
|
|
|
243
|
-
Skill-only, legacy npm v0, and scoped BuildBeat 1.
|
|
243
|
+
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).
|
|
244
244
|
|
|
245
245
|
## Continue reading
|
|
246
246
|
|
|
@@ -252,7 +252,7 @@ Skill-only, legacy npm v0, and scoped BuildBeat 1.20 are distinct availability s
|
|
|
252
252
|
- [`docs/CLI-STRATEGY-2026-08.md`](docs/CLI-STRATEGY-2026-08.md): the official-source CLI comparison and its evidence limits;
|
|
253
253
|
- [`docs/CHECKS.md`](docs/CHECKS.md): file-bus invariants, Gate/evidence tokens, finding codes, and strict-mode semantics;
|
|
254
254
|
- [`docs/CLI.md`](docs/CLI.md): command boundaries, file ownership, manifest, mechanical upgrade, and manual-removal contract;
|
|
255
|
-
- [`docs/CAPABILITY-MATRIX.md`](docs/CAPABILITY-MATRIX.md): bilingual capability and interoperability mapping across Skill-only, legacy npm v0, and scoped BuildBeat 1.
|
|
255
|
+
- [`docs/CAPABILITY-MATRIX.md`](docs/CAPABILITY-MATRIX.md): bilingual capability and interoperability mapping across Skill-only, legacy npm v0, and scoped BuildBeat 1.21;
|
|
256
256
|
- [`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);
|
|
257
257
|
- [`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;
|
|
258
258
|
- [`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;
|
package/README.md
CHANGED
|
@@ -77,7 +77,7 @@ npm uninstall --global @haiyangbg/buildbeat # 只移除全局 CLI 包
|
|
|
77
77
|
|
|
78
78
|
包管理器的安装、更新、移除只管理 **CLI 包和可执行文件**,不会创建、升级或删除项目里的协作骨架。`doctor` 只读检查;`init/adopt` 必须先看完整计划,并在无 blocker、干净 Git 和明确确认后才写入;`upgrade` 只接受 canonical schema 2 基线,按 manifest/hash 做机械升级,冲突时零写。`diff/uninstall` 与工作流命令扩张继续冻结。canonical 命令是 `buildbeat`;`solobaton` executable 只保留兼容别名。完整契约见 [`docs/CLI.md`](docs/CLI.md)。
|
|
79
79
|
|
|
80
|
-
`1.21.0`
|
|
80
|
+
`1.21.0` 已独立验证发布,并在 `1.20.0` 生命周期上新增统一域回复格式:收口时按「已做 → 未做 → 下一步」输出,证据紧跟对应的已做事项;CLI 命令和安全边界不扩张。`--force` 仍永不覆盖 project-owned 内容或不安全路径,跨 major 另需 `--major`。源码 checkout、Git tag 和 npm artifact 是不同证据面,精确发布证据见 [`docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md`](docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md)。
|
|
81
81
|
|
|
82
82
|
已拷出的 v1.16 legacy 项目不得手写、复制或重命名 manifest 来伪造 schema 2 所有权。默认继续按 CHANGELOG 手工维护;如果确需进入机械升级,按 [v1.16 legacy 迁移指南](docs/LEGACY-V1.16-MIGRATION.md) 在专用 Git 分支受控重建基线。
|
|
83
83
|
|
|
@@ -236,9 +236,9 @@ flowchart LR
|
|
|
236
236
|
| 生产配置漂移 | `jq`、SHA 工具、项目 `live-config.sh` | 明确跳过,不能外推生产状态 |
|
|
237
237
|
| 线上版本查询 | 项目 `live-status.sh` 和平台 CLI | 明确未配置,不引用文档版本冒充线上事实 |
|
|
238
238
|
| L3 测试证据 | 项目填写 `verify-status.sh` 的 `SUITES` | 只能报告未配置,不能声称自动化测试已绿 |
|
|
239
|
-
| CLI 检查/脚手架/机械升级 | Node.js 20+、npm registry 或本仓库源码 | legacy npm v0 仍只读;scoped BuildBeat 1.
|
|
239
|
+
| CLI 检查/脚手架/机械升级 | Node.js 20+、npm registry 或本仓库源码 | legacy npm v0 仍只读;scoped BuildBeat 1.21 已独立验证,真实 schema 2 版本增量试点仍由 v1.20 证据支撑;项目 uninstall 继续冻结,Skill/手动等价路径始终保留 |
|
|
240
240
|
|
|
241
|
-
Skill-only、legacy npm v0 和 scoped BuildBeat 1.
|
|
241
|
+
Skill-only、legacy npm v0 和 scoped BuildBeat 1.21 是三个不同可用面;源码 checkout、registry artifact 与真实项目也必须分别核验。`doctor`、`init/adopt`、`upgrade` 不承担相同责任。完整对照见 [BuildBeat 能力矩阵](docs/CAPABILITY-MATRIX.md),真实版本增量证据见 [v1.20 试点记录](docs/PHASE4-V1.20-PILOT-2026-08-25.md)。
|
|
242
242
|
|
|
243
243
|
## 继续阅读
|
|
244
244
|
|
|
@@ -250,7 +250,7 @@ Skill-only、legacy npm v0 和 scoped BuildBeat 1.20 是三个不同可用面;
|
|
|
250
250
|
- [`docs/CLI-STRATEGY-2026-08.md`](docs/CLI-STRATEGY-2026-08.md):基于官方来源的 CLI 策略对照与证据边界;
|
|
251
251
|
- [`docs/CHECKS.md`](docs/CHECKS.md):文件总线不变量、Gate/证据令牌、finding code 与严格模式规格;
|
|
252
252
|
- [`docs/CLI.md`](docs/CLI.md):CLI 命令边界、文件所有权、manifest、机械升级和手动移除合同;
|
|
253
|
-
- [`docs/CAPABILITY-MATRIX.md`](docs/CAPABILITY-MATRIX.md):Skill-only、legacy npm v0 与 scoped BuildBeat 1.
|
|
253
|
+
- [`docs/CAPABILITY-MATRIX.md`](docs/CAPABILITY-MATRIX.md):Skill-only、legacy npm v0 与 scoped BuildBeat 1.21 的双语能力/互操作对照;
|
|
254
254
|
- [`docs/LEGACY-V1.16-MIGRATION.md`](docs/LEGACY-V1.16-MIGRATION.md):v1.16 拷出项目继续手工维护或受控重建 schema 2 基线的安全路径;
|
|
255
255
|
- [`docs/CLI-PILOT-2026-08-23.md`](docs/CLI-PILOT-2026-08-23.md):三个真实存量项目的 CLI v0 只读试点与写入边界决策;
|
|
256
256
|
- [`docs/PHASE1-PILOT-2026-08-24.md`](docs/PHASE1-PILOT-2026-08-24.md):Phase 1 文件总线在 example、活跃多仓投影和真实单仓代码树上的只读试点;
|