@haiyangbg/buildbeat 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/docs/CAPABILITY-MATRIX.md +2 -2
  3. package/docs/CLI.md +3 -2
  4. package/docs/README.md +3 -1
  5. package/docs/RELEASING.md +1 -1
  6. package/example/.buildbeat/manifest.json +1 -1
  7. package/package.json +14 -1
  8. package/docs/BuildBeat v2/357/274/232AI /345/216/237/347/224/237/350/275/257/344/273/266/344/272/244/344/273/230/346/216/247/345/210/266/345/271/263/351/235/242.md" +0 -2053
  9. package/docs/CLI-PILOT-2026-08-23.md +0 -25
  10. package/docs/CLI-STRATEGY-2026-08.md +0 -55
  11. package/docs/EXECUTION-PLAN.md +0 -487
  12. package/docs/PHASE1-PILOT-2026-08-24.md +0 -32
  13. package/docs/PHASE2-BUILDBEAT-PILOT-2026-08-25.md +0 -75
  14. package/docs/PHASE2-PILOT-2026-08-25.md +0 -88
  15. package/docs/PHASE2-PILOT-PREFLIGHT-2026-08-25.md +0 -42
  16. package/docs/PHASE4-STABILITY-AUDIT-2026-08-25.md +0 -35
  17. package/docs/PHASE4-V1.20-PILOT-2026-08-25.md +0 -56
  18. package/docs/ROADMAP.md +0 -875
  19. package/docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md +0 -55
  20. package/docs/V2-D2-DECISION-CARD.md +0 -37
  21. package/docs/V2-DECISIONS.md +0 -11
  22. package/docs/V2-ITERATION-01.md +0 -60
  23. package/docs/V2-ITERATION-02.md +0 -32
  24. package/docs/V2-ITERATION-03.md +0 -30
  25. package/docs/V2-ITERATION-04.md +0 -29
  26. package/docs/V2-ITERATION-05.md +0 -20
  27. package/docs/V2-ITERATION-06.md +0 -18
  28. package/docs/V2-ITERATION-07.md +0 -36
  29. package/docs/V2-ITERATION-08.md +0 -62
  30. package/docs/V2-PLAN.md +0 -335
  31. package/docs/V2-PROPOSAL.md +0 -319
  32. package/docs/V2.0.0-BETA.1-RELEASE-EVIDENCE-2026-08-28.md +0 -41
  33. package/docs/V2.0.0-BETA.2-RELEASE-EVIDENCE-2026-08-28.md +0 -8
  34. package/docs/V2.0.0-BETA.3-RELEASE-EVIDENCE-2026-09-01.md +0 -8
  35. package/docs/V2.0.0-BETA.4-RELEASE-EVIDENCE-2026-09-03.md +0 -9
  36. package/docs/V2.0.0-BETA.5-RELEASE-EVIDENCE-2026-09-05.md +0 -10
  37. package/docs/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md +0 -11
  38. package/docs/WP4.3-RELEASE-EVIDENCE-2026-08-25.md +0 -73
  39. package/docs/v2/M1-ACCEPTANCE-2026-08-28.md +0 -38
  40. package/docs/v2/M2-DOD-2026-08-28.md +0 -34
  41. package/docs/v2/M4-EXTERNAL-PILOT-2026-08-28.md +0 -46
  42. package/docs/v2/M4-PILOT-APP-2026-08-28.md +0 -44
  43. package/docs/v2/M4-SELFHOST-2026-08-28.md +0 -53
@@ -1,32 +0,0 @@
1
- # Phase 1 file-bus pilot — 2026-08-24
2
-
3
- > 历史证据:本报告早于 2026-08-25 BuildBeat 改名。文件总线 finding 结论仍可复用,但其中旧产品名或旧 namespace 不构成 BuildBeat canonical 路径的验证。
4
-
5
- ## 目的与边界
6
-
7
- 本试点验证 Phase 1 工作区候选的 Gate、完成证据、引用、L3、coverage、JSON 与 strict 语义。全部运行都发生在 `mktemp` 临时副本或本地共享 clone 中;真实项目只被读取。试点没有修改源项目、安装脚本、提交、push、合并、发布、部署、访问生产或打开常态流量。
8
-
9
- 所有命令均设置 `BUS_CHECK_NO_FETCH=1` 与 `BUS_CHECK_NO_LIVE=1`,因此 `coverage.complete=false` 是预期边界,不能被解释为项目全绿。三个源目标在试点命令前后的 `HEAD + git status --porcelain=v1 -z` 摘要完全一致,机器断言为 `source_state_unchanged=true`;多仓目标同时核对 meta 与四个子仓。
10
-
11
- ## 结果
12
-
13
- | 目标 | 试点形态 | 结果 | 可外推边界 |
14
- |---|---|---|---|
15
- | 教学 `example/` | 复制沙盘、注入当前模板脚本 | strict exit 1;11 个示意 commit 全部命中 `sync.ghost_hash`;另保留 L3/离线/线上/漂移 `unverified` | 证明教学假 hash 不会被当真;不证明任何真实项目或部署状态 |
16
- | 活跃多仓协调项目 | 复制当前协调层文件;只读复用 meta/四子仓 Git 对象;保留项目自有旧版 `verify-status.sh` | strict exit 1;4 个 NOW 引用命中 `ref.broken`,四条 legacy Gate 命中 `gate.line_missing`;旧 verify 机器协议、离线、线上与漂移边界均显式 `unverified`;没有幽灵 hash 误报 | 这是旧项目迁移清单,不是对业务候选、L3/L4、Gate3 或生产健康的裁决;真实项目未执行迁移 |
17
- | 真实单仓代码树投影 | 从现有单仓做本地共享 clone,叠加 canonical 单仓协调骨架 | 基线 strict exit 0,只有 4 个预期 `unverified`;依次注入三种不一致后,分别且仅新增 `evidence.missing`、`gate.na_without_reason`、`sync.ghost_hash`,三次均 strict exit 1 | 证明检查在真实 Git/代码树规模上仍保持稳定;投影骨架不等于该项目已安装或已接管 Solobaton |
18
-
19
- ## 试点反馈回灌
20
-
21
- 真实多仓投影把第一版扫描器的高噪声暴露出来,候选已同步收敛:
22
-
23
- 1. `pm/decisions.md` 只检查最新三条 dated row,避免历史文件按换期归档后反向阻断当前工作;全仓 Markdown 链接完整性仍由 `tests/check_docs.py` 负责。
24
- 2. wildcard、占位符、超长表格残片和纯 prose 不再冒充 regular-file reference;存在的 source-relative/root-relative/core contract 路径可安全解析。
25
- 3. canonical Gate/证据路径继续要求仓库根相对路径;绝对路径、`../`、越界 symlink 与真实缺文件仍是 `ref.broken` conflict。NOW 模板的契约指针已改成 `contracts/PROTOCOL.md`。
26
- 4. 旧版 project-owned `verify-status.sh` 即使忽略 `--format=machine` 并 exit 0,也会被识别为协议未接入的 `sync.unverified`,不会静默冒充 fresh L3。
27
-
28
- ## 结论
29
-
30
- WP1.6 的只读试点通过:三类目标均按预期产生稳定 JSON、coverage 和 strict 结果;三个人工不一致各自命中唯一目标 conflict;真实源项目 Git 可见状态不变。Phase 1 因此可以形成稳定源码候选。
31
-
32
- 这不是 v1.18 发布、已安装项目迁移、外部 adapter 验收或生产签字。tag、GitHub Release、npm publish 与任何真实项目写入仍需单独人工授权;活跃多仓项目列出的 Gate/引用/verify 迁移债务也必须在它自己的工作包与写边界内处理。
@@ -1,75 +0,0 @@
1
- # Phase 2-B WP2.8 BuildBeat namespace real-directory pilot — 2026-08-25
2
-
3
- > 本报告记录 BuildBeat canonical namespace 的新真实目录试点。它与旧名 WP2.7 证据分开,不把 legacy Solobaton 路径或 hash 改写成 BuildBeat 证据。
4
-
5
- ## 结论
6
-
7
- WP2.8 已在三个全新的隔离目录完成并关闭:CLI default `init`、Tide 隔离副本的 compact `adopt`、Skill-only 手动 Bootstrap 均只生成 BuildBeat canonical namespace,项目级占位符清零,Git/Hook/本地提交与可复跑门禁闭合。两套 CLI 安装的 `doctor` 为 0 error / 0 warning;Skill-only 为 0 error,只保留预期的 `manifest.missing` warning。用户于 2026-08-25 明确确认关闭 WP2.8,但不提交源仓。
8
-
9
- 这组证据证明当前源码候选能在真实目录落下 `BUILDBEAT.md`、`.buildbeat/manifest.json`、BuildBeat managed marker 与相应布局;WP2.8 Gate3 已由用户确认。该确认只关闭本地 namespace 工作包,不证明 npm 已发布、GitHub 远端已改名、浏览器 UI 已验收或生产已上线,也不授权源仓 commit。
10
-
11
- ## 授权、目标与非目标
12
-
13
- 用户在确认产品名为 BuildBeat 后要求继续执行,并在候选 review-ready 后明确确认关闭 WP2.8、但不提交源仓。授权覆盖以下新隔离目录内的 dry-run、apply、语义渲染、本地 Git、规范 Hook、验证、evidence commit 与关闭证据提交;不覆盖源仓库 commit、push、tag、GitHub Release、GitHub 仓库改名、npm package 决策、npm publish、部署或生产访问。
14
-
15
- | 路径 | 入口 | 试点边界 |
16
- |---|---|---|
17
- | `~/Downloads/buildbeat测试/init` | `buildbeat init` | 新项目 default layout;先 dry-run,后 `--yes` apply |
18
- | `~/Downloads/buildbeat测试/adopt-tide` | `buildbeat adopt` | 从原始 `~/Downloads/tide` 只读复制出的隔离副本;compact layout |
19
- | `~/Downloads/buildbeat测试/skill-only` | Skill-only | 从当前模板手动安装必需骨架;不生成 CLI manifest |
20
-
21
- 没有写入旧名目标 `~/Downloads/solobaton测试`、`~/Downloads/tide_副本` 或 `~/Downloads/solobaton-skill测试`。复核时,旧 init 的 `1`、`2` 仍为空,三个旧 apply 目标 HEAD 仍分别为 `eb27a88663701ea03de776e32b6a23c2d1e3ac28`、`5b6aa726a1722226f9651a14bf0fb8fa36a5f9f6`、`b63383db9e56f17495a8ccc8edcb81e7c9cf24f0`,均 clean、无 remote,与旧报告一致。
22
-
23
- ## 写入与 namespace 证据
24
-
25
- 两套 CLI dry-run 均返回 exit 0、`ready=true`、`writesPerformed=false`、零 blocker;apply 后再由 Skill 完成项目语义渲染。三目标扫描旧 namespace 的 `SOLOBATON.md`、`.solobaton/`、旧 managed marker 与 `Solobaton` 文本均为 0 命中。
26
-
27
- | 检查 | default init | compact adopt | Skill-only |
28
- |---|---|---|---|
29
- | canonical marker | `BUILDBEAT.md` | `pm/BUILDBEAT.md` | `BUILDBEAT.md` |
30
- | canonical manifest | `.buildbeat/manifest.json`,schema 2 | `.buildbeat/manifest.json`,schema 2 | 按入口边界缺失 |
31
- | layout / namespace | `default` / `buildbeat` | `compact` / `buildbeat` | `default` / `buildbeat` |
32
- | optional standards / ADR | 未生成 | 未生成 | 未生成 |
33
- | 项目级占位符 | 0 | 0 | 0 |
34
- | 旧 namespace 引用 | 0 | 0 | 0 |
35
-
36
- Skill-only 共有 18 个 tracked 骨架文件,`gitignore.template` 已变为 `.gitignore`;没有伪造 `.buildbeat/manifest.json`,因此不宣称 CLI ownership、机械 upgrade 或 uninstall 能力。
37
-
38
- ## Tide protect-and-adopt
39
-
40
- 原始 `~/Downloads/tide` 仅作为只读复制源;复制时排除 `.git/`、`node_modules/` 与 `.DS_Store`。源与目标复制基线均为 76 个普通文件,聚合 SHA-256 均为:
41
-
42
- `a1a23c1e1abbd23ff248a1f782c9b5e7c1ddefa251bef7ff1da617014894e827`
43
-
44
- 原 `.gitignore` 为 173 字节,SHA-256 为:
45
-
46
- `31bd73f175152a312f56c77a0d9bcd61b597a9a4ac07c75a3d747f32aa19e91c`
47
-
48
- adopt 与语义渲染完成后,以原始 76 个路径逐文件回查:除 `.gitignore` 只校验 managed fragment 之前的原始 173 字节前缀外,其余文件均做完整字节比较,结果 `MISMATCHES=0`。没有执行 build、修改扩展构建产物、加载 Chrome、访问发布渠道或部署。
49
-
50
- ## Git、Hook 与验证矩阵
51
-
52
- 本地候选提交用于固定可复核代码树;随后单独提交 NOW/看板/协议证据,避免候选自引用。三个仓库均为 `main`,最终 clean、无 remote,`.git/hooks/pre-commit` 与各自仓内规范脚本逐字节一致。
53
-
54
- | 目标 | 基线 / candidate | review-ready evidence | Gate3 关闭 HEAD | commit 数 |
55
- |---|---|---|---|---|
56
- | default init | candidate `bb5cf55a2f099ce96f941473af3bd7d452fe1aad` | `f181e3e5759ac692eed96f055111f05d49f7dd3d` | `4ea29a94a3a29fa905ae99662359ec561298135d` | 3 |
57
- | compact adopt | baseline `1159a4a5f702469c2fff4df01ddbdcc305e6d6af`;candidate `84261c935eb6cda724e9840888e02fcce51a1b84` | `9cfda12cc3225db2e75ccd5990bb7d1df7f0359b` | `69d6e8358f7fda03225c090d99b5647cae152183` | 4 |
58
- | Skill-only | candidate `8ed14e83b43b8d960faad343d13b7aa8ea56dced` | `bd7fb59f9a99c4428377081cba25b294e30f685c` | `6b32c53e4fd750770690a0bbe796638314cb792a` | 3 |
59
-
60
- | 检查 | default init | compact adopt | Skill-only |
61
- |---|---|---|---|
62
- | `doctor` | `ok=true`,0/0 | `ok=true`,0/0 | `ok=true`,0 error,预期 1 warning |
63
- | `verify-status.sh --run` | coordination 全绿 | metadata 全绿 | coordination 全绿 |
64
- | 离线 `bus-check --strict` | exit 0 | exit 0 | exit 0 |
65
- | Hook 与仓内脚本 | 一致 | 一致 | 一致 |
66
- | 最终工作区 / remote | clean / 无 | clean / 无 | clean / 无 |
67
-
68
- 离线 strict 仍明确保留三类 `unverified`:远端 fetch 被 `BUS_CHECK_NO_FETCH=1` 跳过、live-status 被 `BUS_CHECK_NO_LIVE=1` 跳过、生产 drift adapter 未配置。它只证明本地文件总线没有 conflict/error。
69
-
70
- ## 当前 Gate 与下一步
71
-
72
- - default init 与 Skill-only:Gate1/Gate3 passed,Gate2/Gate4 因本地无 UI/部署而有明确 n/a 理由;WP2.8 已关闭。
73
- - Tide adopt:namespace 候选 Gate3 passed,WP2.8 已关闭;Chrome 真机/UI 走查的 Gate2 与发布 Gate4 仍分别 pending,不被本次确认替代。
74
- - 上游源仓:保持未提交 worktree;本报告写入后完整 `prepublishOnly` 已通过 Node `41/41`、Shell `176/176`、Skill-only、plugin `7/7`、99 份 Markdown 检查与 73 文件 pack dry-run,ShellCheck、Bash/Node 语法、actionlint、gitleaks 与 `git diff --check` 也全部通过。这仍不会自动形成 source commit。
75
- - 外部迁移:GitHub 仓库改名、scoped npm package、tag、Release、publish 与 registry 回读继续等待独立决策和授权。
@@ -1,88 +0,0 @@
1
- # Phase 2-B WP2.7 real-directory write pilot — 2026-08-25
2
-
3
- > 历史证据:本报告记录的是 BuildBeat 改名之前的 legacy Solobaton namespace 试点。路径、hash、提交和当时的门禁计数保持原样,不回写成新品牌证据;`BUILDBEAT.md` / `.buildbeat` / `buildbeat` canonical 路径仍需新的真实目录回归。
4
-
5
- ## 结论
6
-
7
- WP2.7 的三条真实目录写路径已完成**本地写入、Skill 语义渲染、Git/Hook 与本地 evidence commit 验收**:CLI `init`、CLI `adopt` 和 Skill-only Bootstrap 都按各自边界落盘;两个零写入分支仍为空;Tide 的 83 个既有文件与原 `.gitignore` 可还原内容逐字节未变;三个实际骨架的项目级占位符均清零,验证套件和离线 `bus-check --strict` 均 exit 0。
8
-
9
- 用户随后明确授权三个 apply 目标初始化根 Git、安装 pre-commit Hook,并分别创建仅本地 evidence commit。三个目标现均位于 `main`、各有 2 个提交、工作区干净、无 remote,Hook 与各自仓内规范脚本逐字节一致;`doctor` 均返回 `ok=true`,Skill-only 只保留预期的 `manifest.missing` warning。授权前 `doctor` 曾诚实返回 `git.not_initialized`,该阶段性结果没有被改写成已完成证据。没有执行 push、merge、tag、GitHub Release、npm publish、部署、生产访问或常态流量。
10
-
11
- ## 授权与目标
12
-
13
- 用户先明确点名以下本地目标并授权骨架写入与验收,随后又以“执行”明确授权三个 apply 目标的 Git 初始化、Hook 安装与仅本地 evidence commit;两次授权都不外推到 remote、push 或发布动作:
14
-
15
- | 试点 | 目标 | 执行边界 |
16
- |---|---|---|
17
- | init 零写入 | `~/Downloads/solobaton测试/1` | 只运行 `init --dry-run --json` |
18
- | init 人工拒绝 | `~/Downloads/solobaton测试/2` | 交互确认回答 `n` |
19
- | init 真写 | `~/Downloads/solobaton测试/3` | `init --yes --json` + Skill 语义渲染 |
20
- | adopt 真写 | `~/Downloads/tide_副本` | `adopt --yes --json` + 保护式语义渲染 |
21
- | Skill-only | `~/Downloads/solobaton-skill测试` | 手动拷贝必需模板、排除 optional 前缀并语义渲染 |
22
-
23
- 三个 apply 目标写前均无根 Git;`1`、`2`、Skill-only 目标为空,Tide 是既有 Chrome 扩展。CLI 写路径均先跑 dry-run;Tide 写前计划为 compact layout、零目标碰撞、零 blocker、`ready=true`。Git 授权只覆盖目录 `3`、Tide 与 Skill-only;目录 `1`、`2` 继续保持零条目。
24
-
25
- ## 分路径证据
26
-
27
- ### 1. init 三分支
28
-
29
- | 分支 | 结果 | 写后证据 |
30
- |---|---|---|
31
- | dry-run | exit 0,`writesPerformed=false` | 目录 `1` 仍为 0 条目 |
32
- | 人工拒绝 | exit 0,明确返回 `Cancelled. No files changed.` | 目录 `2` 仍为 0 条目 |
33
- | `--yes` apply | exit 0,default layout,manifest schema 2 最后写入 | 目录 `3` 有 19 个非本地验证标记文件;无 standards/ADR,项目占位符清零 |
34
-
35
- 目录 `3` 的 Gate2/Gate4 只在“本地协议试点无 UI、无部署”这一已限定范围内记为 `n/a | 理由:`;Git 闭环后 Gate1/Gate3 已分别以决策记录和 baseline commit 通过,工作包状态更新为完成。
36
-
37
- ### 2. Tide protect-and-adopt
38
-
39
- Tide 采用 compact layout,协调脚本写入 `pm/scripts/`。既有根源码、`js/**`、构建目录 `tide/**`、`tide.zip`、依赖目录和项目数据均未作为语义渲染写入目标;没有运行可能重写构建产物的 build 命令。
40
-
41
- 写前/写后以同一算法扫描所有非 symlink 普通文件,排除 `node_modules`、新增 Solobaton 路径和 `.gitignore`:
42
-
43
- | 保护项 | 写前 | 写后 | 结论 |
44
- |---|---|---|---|
45
- | 既有文件数 | 83 | 83 | 一致 |
46
- | 聚合 SHA-256 | `5aef3e87290068388e8b8f218daa1d4abaed3e2d9d7251a8c37b6defb8b0cb18` | 同左 | 逐字节保护闭合 |
47
- | 原 `.gitignore` 字节 | 173 | managed fragment 前缀还原为 173 | 一致 |
48
- | 原 `.gitignore` SHA-256 | `31bd73f175152a312f56c77a0d9bcd61b597a9a4ac07c75a3d747f32aa19e91c` | 同左 | 原所有权未覆盖 |
49
- | managed marker | 无 | begin/end 各 1 | 没有重复追加 |
50
-
51
- 静态项目事实显示 Tide 是 Manifest V3 Chrome 扩展,存在 action、content scripts 与 background service worker;但写前 CLI 报告 `hasUi=false`。根因是探测器只认 `index.html` 或常见前端依赖。源码候选已增加浏览器扩展 manifest 信号,新增回归后 CLI 测试 `34/34`;对同一 Tide 目录重跑只读检测得到 `hasUi=true`。因此 Tide 的 Gate2 继续 pending,不能因旧探测结果跳过真机/UI 走查。
52
-
53
- ### 3. Skill-only Bootstrap
54
-
55
- Skill-only 目标有 18 个非本地验证标记文件;`gitignore.template` 已渲染为 `.gitignore`,没有 `.solobaton/manifest.json`、`standards/` 或 `pm/adr/`。这证明手动入口能形成可运行骨架,但不具备 CLI manifest ownership 与未来机械 upgrade 保证;`doctor` 的 `manifest.missing` 是预期能力边界,不应被消音或伪装成受管安装。
56
-
57
- ## 验证矩阵
58
-
59
- | 检查 | init 真写 | Tide adopt | Skill-only |
60
- |---|---|---|---|
61
- | 项目级占位符 | 清零 | 清零 | 清零 |
62
- | optional standards / ADR | 均缺失,合法 | 均缺失,合法 | 均缺失,合法 |
63
- | `verify-status --run` | exit 0,协调脚本语法 | exit 0,package/manifest JSON 解析 | exit 0,协调脚本语法 |
64
- | 离线 `bus-check --strict` | exit 0 | exit 0 | exit 0 |
65
- | doctor 安装识别 | installed/default,manifest valid | installed/compact,manifest valid | installed/default,manifest missing |
66
- | doctor 最终结果 | `ok=true`,0 error / 0 warning | `ok=true`,0 error / 0 warning | `ok=true`,0 error;预期 warning: `manifest.missing` |
67
- | 根 Git / Hook / commit | `main` / 匹配规范脚本 / 2 个 | 同左 | 同左 |
68
- | 最终工作区 / remote | clean / 无 | clean / 无 | clean / 无 |
69
-
70
- 本地提交证据如下。工作包/看板中的 Gate3 使用 baseline commit,避免提交自引用;evidence HEAD 则包含最终 NOW、看板、协议与决策记录。
71
-
72
- | 目标 | baseline commit | evidence HEAD |
73
- |---|---|---|
74
- | init 真写 | `ab3b75b541a710ad2784964001f193a56d5ff90e` | `eb27a88663701ea03de776e32b6a23c2d1e3ac28` |
75
- | Tide adopt | `bb3c681b4deb1123d6e6901b845dc58f2dbdd73b` | `5b6aa726a1722226f9651a14bf0fb8fa36a5f9f6` |
76
- | Skill-only | `fb656c1967d1105c9003c8ee3a4369a7c5623657` | `b63383db9e56f17495a8ccc8edcb81e7c9cf24f0` |
77
-
78
- 离线 strict 的 exit 0 仍包含 `sync.unverified`:远端 fetch 与 live-status 被显式跳过,生产 drift adapter 未配置。它只证明当前本地文件总线没有 conflict/error,不证明远端同步、线上版本、部署或生产健康。
79
-
80
- `upgrade --dry-run --json` 仍返回 exit 2 / `command_not_available`;本试点没有机械升级证据,也没有试图用手工覆盖模拟 Wave 2。
81
-
82
- ## 上游候选门禁
83
-
84
- 真实试点反馈回灌后,Solobaton 工作区完整门禁通过:Node `39/39`、Shell `176/176`、Skill-only、Claude plugin 隔离安装 `7/7`、98 份 Markdown 检查、71 文件 `npm pack --dry-run`,以及 ShellCheck、Bash/Node 语法、actionlint、`git diff --check`。这些结果验证当前未提交源码候选,不是 commit、tag、Release、npm registry 或生产证据。
85
-
86
- ## 剩余发布边界
87
-
88
- WP2.7 的真实目录 Git/Hook/hash 证据闸已经完成。剩余事项属于**上游源码候选与发布序列**:当前 Solobaton 源仓差异仍未提交;任何 source commit、tag、GitHub Release、npm publish,以及首屏 `@latest init` 激活都需要独立授权和相应 registry 回读,不能由本地试点完成状态自动推出。
@@ -1,42 +0,0 @@
1
- # Phase 2-B WP2.7 write-pilot preflight — 2026-08-25
2
-
3
- > 后续状态:用户已点名真实目录,并在后续独立授权下完成本地写入、Git/Hook 与 evidence commits;最终实测结果见 [`PHASE2-PILOT-2026-08-25.md`](PHASE2-PILOT-2026-08-25.md)。本文件保留写前候选排除与授权合同,不回写成事后记录。
4
- >
5
- > 品牌迁移边界:本预检和后续 WP2.7 试点发生在 BuildBeat 改名之前,只证明 legacy Solobaton namespace 的行为。它们不替代 `BUILDBEAT.md` / `.buildbeat` / `buildbeat` canonical 路径的新试点。
6
-
7
- ## 目的与权限边界
8
-
9
- 本预检只为 WP2.7 的三条真实写路径选择合法目标。它运行工作区源码候选的 `doctor --json` 与 `adopt --dry-run --json`,并读取目标根 Git 的 HEAD 与可见变更数量;没有运行 `init/adopt --yes`、手动拷贝、Git 初始化、Hook 安装、commit、push、发布或部署。
10
-
11
- `dry-run` 的结构化结果均为 `writesPerformed=false`。命令前后再次读取的 HEAD 和可见变更数量一致;这证明本次只读命令没有产生 Git 可见变化,不代表目标原有内容、测试、部署或生产状态已验收。
12
-
13
- ## 已检查的相邻候选
14
-
15
- | 候选 | 只读事实 | WP2.7 结论 |
16
- |---|---|---|
17
- | `../pilot-app` | 根 Git 干净,HEAD `8c7d3f322fb0`;doctor 判为 partial default layout、无 version marker/manifest;adopt 发现 9 个目标碰撞并返回 `ready=false` | 不能作为当前 Wave 1 adopt 写试点。须另立人工接管/所有权对账工作包,不能让 CLI 猜已有文件归属 |
18
- | `../试点工作区` | 根 Git 有 15 个可见变更,HEAD `8e1b32db4885`;doctor 判为已安装 legacy v1.14、manifest 缺失;adopt 发现 9 个目标碰撞,并同时返回 already-installed、dirty、collision blockers | 不能作为 Wave 1 adopt 目标;它属于未来 legacy migration/upgrade 路径。当前脏工作区也不满足任何写前条件 |
19
-
20
- 未读取或记录两仓的变更文件名、源码内容、配置值、凭据、远端状态或生产事实。上表是 2026-08-25 的点时只读结果,执行前必须重新预检。
21
-
22
- ## 仍需点名并授权的三个目标
23
-
24
- WP2.7 不能用一次性 `mktemp` 回归冒充真实试点。开始写入前,用户须明确给出三个绝对路径,并逐项授权允许的副作用:
25
-
26
- 1. **CLI init 新项目**:一个不存在或空目录;授权创建骨架、按 Skill 渲染项目事实、按需初始化 Git/安装 Hook,以及是否允许创建本地证据 commit。
27
- 2. **CLI adopt 存量项目**:一个根 Git 干净、未安装/未部分安装 Solobaton、planned path 零碰撞的长期项目;先以新的 `adopt --dry-run --json` 证明 `ready=true`,再单独批准 apply。
28
- 3. **Skill-only 项目**:一个不存在、空或明确允许写入的目标;授权手动等价 Bootstrap、可选 Git/Hook 和本地证据 commit。该路径不得生成 CLI manifest。
29
-
30
- 默认不授权 push、merge、tag、GitHub Release、npm publish、部署、生产访问或常态流量。任何目标在执行前变脏、出现碰撞、符号链接边界或已有安装迹象,试点立即 fail-closed 并回到重新选址,不使用 `--force` 或手工覆盖绕过。
31
-
32
- ## 验收合同
33
-
34
- 每个获批目标都保存写前/写后 Git 可见状态摘要,记录实际命令和 exit code,并分别证明:
35
-
36
- - CLI `init/adopt` 先 dry-run,再经同一确认包执行;写入结果与 manifest schema 2 对齐;
37
- - Skill 完成所有项目语义渲染,`pendingPlaceholders` 清零或对不可适用项给出合法项目事实;
38
- - optional standards/ADR 仍由项目选择,缺失合法,不能为了“全绿”批量生成;
39
- - `doctor` 无 error;`bus-check --strict` 的 conflict/error 为零,warning/unverified 保持诚实;
40
- - Skill-only 目标无 `.solobaton/manifest.json`;CLI 目标 manifest 最后写入;
41
- - 原项目内容、既有 Hook 链和 `.gitignore` 所有权没有被未授权覆盖;
42
- - 证据只支持各目标的本地试点结论,不外推为 npm 发布、远端基线、线上部署或生产健康。
@@ -1,35 +0,0 @@
1
- # Phase 4 / WP4.3 稳定性硬门槛刷新(2026-08-25)
2
-
3
- > 审计对象:以本地提交 `1887cf2` 为已保全输入,叠加 scoped `1.20.0` 迁移候选、真实版本增量 upgrade、多仓刷新与根内 legacy link 兼容修复。
4
- > 证据等级:本地源码/文档静态闭合 + disposable 沙箱 + Wave 1/2 真实 Git 项目 + 真实多仓只读投影。下表保留发布前审计口径,不倒改当时尚未执行 push、tag、Release、publish 或远端改名的边界;后续外部分发另由 [`WP4.3-RELEASE-EVIDENCE-2026-08-25.md`](WP4.3-RELEASE-EVIDENCE-2026-08-25.md) 关闭。
5
- > 结论:**12 条源码/真实试点候选口径与后续 scoped 外部分发证据均已闭合;两类证据继续分开,不以发布成功外推业务项目 Gate、部署或生产状态。**
6
-
7
- ## 逐条审计
8
-
9
- | # | 状态 | `ROADMAP.md` §15 门槛 | 当前证据 | 不可外推 / 待办 |
10
- |---:|:---:|---|---|---|
11
- | 1 | `[x]` | 执行同步不变量有明确文档和自动检查 | [`CHECKS.md`](CHECKS.md) INV-1–INV-8;`test-scripts.sh` human/JSON 同源回归 | 只证明已登记不变量和本地观测范围 |
12
- | 2 | `[x]` | 完成状态不能在无 evidence 时静默通过 strict | `board-done-no-evidence`、`evidence-valid`、`evidence-outside-archive` fixtures | symlink/权限未读证据诚实保留 unverified,不误报缺失 |
13
- | 3 | `[x]` | Gate `N/A` 必须有理由 | `gate-na-no-reason` strict 冲突;`gate-na-ui-inconsistent` 显式 warning | 机器只核语法/正向 UI 矛盾,不代替人工判定理由正确 |
14
- | 4 | `[x]` | standards 缺失不报错,存在时能检查可观测部分 | missing/partial/valid/Draft/invalid + STACK 三态 fixtures | 不观测自然语言宣言的语义正确性 |
15
- | 5 | `[x]` | `STACK.md` 冲突不会触发自动改栈或改代码 | `bus-check` 只读 finding;`stack-conflict` 对项目文件零写 | 修复责任仍在项目 Builder + 人工决策/ADR |
16
- | 6 | `[x]` | CLI 所有写入可预览,冲突时 fail-closed | Node `init/adopt/upgrade` 用例覆盖 dry-run、碰撞、dirty Git、hash、force、major、回滚与 manifest-last;真实 upgrade 默认 dry-run 对四个已改文件零写阻断 | scoped registry artifact 尚未回读;legacy npm v0 仍只读 |
17
- | 7 | `[x]` | 不安装 CLI 时 Skill 保留完整能力 | `skill-only.test.sh` 在屏蔽 Node 后运行项目本地 strict 检查;无 manifest/optional 仍合法 | AI 工具如何自动加载 Skill 需按对应工具另验 |
18
- | 8 | `[x]` | CLI 创建或升级的项目可由 Skill-only 环境继续维护 | 真实 CLI `init` 后屏蔽 Node 仍 strict 0;真实 `v1.16 → v1.20` upgrade 后项目仍使用同一文件协议,项目自有事实回灌后 strict 0 | strict 0 的项目仍有 `coverage.complete=false`,不得外推线上状态 |
19
- | 9 | `[x]` | 项目本地脚本仍可独立运行 | Skill-only/CLI-created 两个一次性项目均在 Node 失效时运行 `scripts/bus-check.sh --strict` | live adapters/项目真实测试未配置时仍必须报告降级 |
20
- | 10 | `[x]` | 不引入账号、遥测、远程数据库、团队模型或 `emit` | package 零 runtime dependencies;CLI 生命周期仅本地 Git/文件系统;产品非目标中英契约 + 关键文件检查 | npm 下载本身是包管理器行为,不是项目遥测/远程运行时 |
21
- | 11 | `[x]` | 真实项目试点通过,而不仅是模板测试 | [`PHASE4-V1.20-PILOT-2026-08-25.md`](PHASE4-V1.20-PILOT-2026-08-25.md):真实 schema 2 `v1.16 → v1.20` upgrade、project-owned 零 diff、doctor 0/0、项目 strict 0;另对真实四子仓协调层完成只读刷新 | 多仓刷新正确暴露业务仓 `lessons.md` 断链和 map/适配器未验证,不把目标业务仓冒充全绿 |
22
- | 12 | `[x]` | README、SKILL、AGENTS、示例和 CLI 帮助不存在相互矛盾的定位 | 中英 README 终校;[`CAPABILITY-MATRIX.md`](CAPABILITY-MATRIX.md) 三面区分;`check_docs.py` 锁定定位/能力/发布边界 | 远端 npm README 是不可变已发布产物,须在真实发布后独立 registry 回读 |
23
-
24
- ## 发布前外部分发清单(后续已关闭)
25
-
26
- 1. [x] 候选提交保全,GitHub 仓库改名、remote 更新、push、默认分支 CI、规则集和 `npm-publish` Environment 回读。
27
- 2. [x] `@haiyangbg/buildbeat` 最小 bootstrap 与 GitHub Actions Trusted Publisher 绑定。
28
- 3. [x] 受保护 `v1.20.0` tag 驱动 publish,registry version、integrity、provenance attestation、signature、隔离安装与 npm README 回读。
29
- 4. [x] GitHub Release、旧 URL 重定向与 legacy `solobaton` deprecation 回读;未 unpublish。
30
-
31
- 首包实际出现过 `latest=0.0.0` 的短暂偏差,正式 OIDC 发布后已收敛为 `bootstrap=0.0.0`、`latest=1.20.0`;精确证据和处理边界见外部分发关闭文档。
32
-
33
- ## WP4.3 当前口径
34
-
35
- WP4.2、真实升级、多仓刷新和 WP4.3 外部分发均已关闭。`@haiyangbg/buildbeat@1.20.0` 可称为已独立验证发布;该结论仅覆盖 BuildBeat 分发,不替任何业务项目批准 Gate。
@@ -1,56 +0,0 @@
1
- # Phase 4 / BuildBeat v1.20 真实升级与多仓刷新证据(2026-08-25)
2
-
3
- > 证据等级:本机真实 Git 项目 + 当前 `1.20.0` 源码 checkout + 只读多仓投影。本文证明机械升级的真实版本增量路径和检查器在真实协调层上的行为,不证明 npm/GitHub 发布、部署、生产状态或人工 Gate。
4
-
5
- ## A. schema 2 真实版本增量升级
6
-
7
- | 项 | 观测值 |
8
- |---|---|
9
- | 目标 | `<本机路径>/buildbeat测试/init` |
10
- | 升级前基线 | `main@4ea29a94a3a29fa905ae99662359ec561298135d`,schema `2`,scaffold `v1.16`,CLI `1.16.3` |
11
- | 专用分支 | `buildbeat-v1.20-upgrade` |
12
- | 升级来源 | 当前源码 `@haiyangbg/buildbeat@1.20.0`,scaffold `v1.20` |
13
- | 关闭提交 | `a136ff6f33d5814d36593f85a3b9ec2f1e223827`(`chore: pilot BuildBeat v1.20 upgrade`) |
14
- | 远端边界 | 目标仓无 remote;未 push、未部署 |
15
-
16
- 执行与结果:
17
-
18
- 1. 默认 `upgrade --dry-run --json` 正确判定同 major 的 `v1.16 → v1.20` 可升级,并对 `.gitignore`、`AGENTS.md`、`scripts/drift-check.sh`、`指挥台.md` 四个已改文件 fail-closed;`contracts/PROTOCOL.md` 与 `pm/当期看板.md` 只报告 project-owned 迁移提醒。
19
- 2. `--force --dry-run` 只把四个 replace/merge 冲突转为可执行计划,没有把 project-owned 文件纳入写入。
20
- 3. `--force` apply 后立即按 Git diff 逐项回灌项目事实:无子仓、真实测试范围、规则 9、部署不适用、`drift-check` 的空应用列表和指挥台项目状态。manifest 最后写入并升为 scaffold `v1.20` / CLI `1.20.0`。
21
- 4. `contracts/PROTOCOL.md` 与 `pm/当期看板.md` 在 `main...HEAD` 的 diff 行数为 `0`;最终提交只含 manifest、`AGENTS.md`、`BUILDBEAT.md`、两个脚本和`指挥台.md`。
22
- 5. `buildbeat doctor --json`:`ok=true`,`errors=0`,`warnings=0`,namespace=`buildbeat`,manifest validation issues=`[]`。
23
- 6. 项目 `bus-check --format=json --strict`:exit `0`,`conflict=0`,`error=0`,`warning=2`,`unverified=3`,`coverage.complete=false`。两个 warning 是 legacy Gate 决策行引用不够精确;三个 unverified 来自显式跳过远端、live 与生产漂移读取,均未被伪装成全绿。
24
- 7. 提交后再次 dry-run:版本门为 `up-to-date`,`ready=true`,`writesPerformed=false`,operations/conflicts/blockers 均为空。目标分支 clean、无 remote。
25
-
26
- 因此,“只有 disposable fixture、没有真实旧 schema 2 → 新 bundle 版本增量”的证据缺口已经关闭。该结论不把 `coverage.complete=false` 外推为完整业务或线上验收。
27
-
28
- ## B. 真实多仓 / 扫描边界刷新
29
-
30
- 刷新对象为 `<本机路径>/<试点工作区>`。为避免改动一个约 `4.6G` 且带本地在途工作的真实协调仓,本次建立只读投影:复制 meta/subrepo Git object、`pm/`、`contracts/`、项目脚本及四个已发现子仓 `ai-admin`、`pilot-web`、`pilot-cli`、`pilot-backend` 的顶层版本来源;只用当前候选 `bus-check.sh` 替换投影中的检查器。原仓零写入、零 stage、零 commit。
31
-
32
- 首轮刷新发现当前检查器把 legacy prose 中实际留在根内的 `../contracts/...` 链接误判为 traversal。源码随后收窄为:canonical Gate/evidence 仍只接受仓根相对路径;只有 scoped legacy prose 可以解析 `../` / `./`,且 realpath 必须留在协调根内,symlink/权限边界仍不跟随。新增“根内 parent link 通过、根外逃逸阻断”回归后,Shell 套件为 `222/222`。
33
-
34
- 修复后最终只读刷新结果:
35
-
36
- | 维度 | 结果 |
37
- |---|---|
38
- | strict | exit `1`,`blocked=true` |
39
- | findings | warning `4`、unverified `8`、conflict `1`、error `0` |
40
- | coverage | `complete=false`,reason=`sync.unverified` |
41
- | 唯一 conflict | `pm/NOW.md` 引用根内不存在的 `lessons.md` |
42
- | canonical Gate | 当期 legacy 看板缺少四条机器态行,精确报告为 4 个 warning |
43
- | 多仓 join | 四个真实子仓均被发现,但项目尚无 `buildbeat-multirepo-map:v1`,逐仓保留 unverified |
44
- | 适配器 | 项目旧 `verify-status.sh` 尚未返回当前机器协议;live/remote/生产读取按本次只读边界显式跳过 |
45
-
46
- 最终剩余的 strict 冲突来自目标项目真实断链,而不是投影漏拷或检查器误判。刷新完成的含义是“当前候选能在真实异构协调层上给出精确、非冒进结果”,不是“该业务仓已全绿”;修复业务仓的 `lessons.md` 指针、补多仓 map 或升级项目适配器不属于 BuildBeat 分发迁移的写入授权。
47
-
48
- ## 结论边界
49
-
50
- - 已验证:真实 schema 2 项目从 `v1.16 / 1.16.3` 机械升级到 `v1.20 / 1.20.0`,项目所有权和 Git 边界成立;真实多仓刷新能诚实阻断真实断链并显式暴露未验证范围。
51
- - 未验证:`@haiyangbg/buildbeat@1.20.0` registry artifact、Trusted Publisher、provenance、签名、隔离安装、GitHub tag/Release 与旧包 deprecation。它们须在外部分发 Gate 中逐项回读。
52
- - 不可外推:本文不证明任何业务仓 Gate、部署、生产健康或常态流量。
53
-
54
- ## 后续状态
55
-
56
- 上述“未验证”是本试点关闭时的证据边界,未被倒改。后续 WP4.3 外部分发已逐项完成并独立读回,见 [`WP4.3-RELEASE-EVIDENCE-2026-08-25.md`](WP4.3-RELEASE-EVIDENCE-2026-08-25.md);发布结果仍不能反向扩大本页对业务仓 Gate、部署或生产状态的结论。