@haiyangbg/buildbeat 2.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +24 -301
  2. package/README.en.md +6 -19
  3. package/README.md +6 -19
  4. package/SKILL.md +168 -219
  5. package/bin/buildbeat.js +14 -2
  6. package/docs/CAPABILITY-MATRIX.md +13 -55
  7. package/docs/README.md +14 -14
  8. package/docs/RELEASING.md +8 -9
  9. package/docs/v2/RFC-0001-product-definition.md +2 -0
  10. package/docs/v2/RFC-0003-workflow-policy.md +2 -0
  11. package/docs/v2/guide/00-how-to-talk.md +3 -3
  12. package/docs/v2/guide/01-quickstart.md +12 -12
  13. package/docs/v2/guide/03-policy-guide.md +1 -1
  14. package/docs/v2/guide/06-evidence-guide.md +3 -3
  15. package/docs/v2/guide/07-approval-guide.md +10 -10
  16. package/docs/v2/guide/10-recovery.md +6 -6
  17. package/docs/v2/guide/11-session-handoff.en.md +2 -2
  18. package/docs/v2/guide/11-session-handoff.md +2 -2
  19. package/docs/v2/guide/README.md +0 -6
  20. package/lessons.md +52 -71
  21. package/package.json +16 -8
  22. package/src/v2/cli/run.js +33 -23
  23. package/src/v2/engine/risk-preset.js +1 -1
  24. package/src/v2/runtime/notify.js +5 -5
  25. package/src/v2/runtime/overview.js +7 -7
  26. package/templates/ARCHITECTURE.md +1 -1
  27. package/templates/contracts/PROTOCOL.md +2 -10
  28. package/templates/gitignore.template +0 -3
  29. package/templates/pm/adr/README.md +1 -1
  30. package/templates/pm/decisions.md +4 -5
  31. package/templates/standards/CODE.md +1 -1
  32. package/templates/standards/DESIGN.md +1 -1
  33. package/templates/standards/REVIEW.md +2 -2
  34. package/templates/standards/STACK.md +2 -8
  35. package/templates/v2/AGENTS.md +18 -18
  36. package/templates/v2/BUILDBEAT.md +2 -3
  37. package/templates/v2/CLAUDE.md +1 -1
  38. package/templates/v2/run-config.example.yaml +1 -1
  39. package/templates/v2//346/214/207/346/214/245/345/217/260.md +6 -6
  40. package/bin/buildbeat-v2.js +0 -18
  41. package/bin/solobaton.js +0 -6
  42. package/docs/BuildBeat v2/357/274/232AI /345/216/237/347/224/237/350/275/257/344/273/266/344/272/244/344/273/230/346/216/247/345/210/266/345/271/263/351/235/242.md" +0 -2053
  43. package/docs/CHECKS.md +0 -326
  44. package/docs/CLI-PILOT-2026-08-23.md +0 -25
  45. package/docs/CLI-STRATEGY-2026-08.md +0 -55
  46. package/docs/CLI.md +0 -244
  47. package/docs/EXECUTION-PLAN.md +0 -487
  48. package/docs/LEGACY-V1.16-MIGRATION.md +0 -54
  49. package/docs/PHASE1-PILOT-2026-08-24.md +0 -32
  50. package/docs/PHASE2-BUILDBEAT-PILOT-2026-08-25.md +0 -75
  51. package/docs/PHASE2-PILOT-2026-08-25.md +0 -88
  52. package/docs/PHASE2-PILOT-PREFLIGHT-2026-08-25.md +0 -42
  53. package/docs/PHASE4-STABILITY-AUDIT-2026-08-25.md +0 -35
  54. package/docs/PHASE4-V1.20-PILOT-2026-08-25.md +0 -56
  55. package/docs/ROADMAP.md +0 -875
  56. package/docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md +0 -55
  57. package/docs/V2-D2-DECISION-CARD.md +0 -37
  58. package/docs/V2-DECISIONS.md +0 -11
  59. package/docs/V2-ITERATION-01.md +0 -60
  60. package/docs/V2-ITERATION-02.md +0 -32
  61. package/docs/V2-ITERATION-03.md +0 -30
  62. package/docs/V2-ITERATION-04.md +0 -29
  63. package/docs/V2-ITERATION-05.md +0 -20
  64. package/docs/V2-ITERATION-06.md +0 -18
  65. package/docs/V2-ITERATION-07.md +0 -36
  66. package/docs/V2-ITERATION-08.md +0 -62
  67. package/docs/V2-PLAN.md +0 -335
  68. package/docs/V2-PROPOSAL.md +0 -319
  69. package/docs/V2.0.0-BETA.1-RELEASE-EVIDENCE-2026-08-28.md +0 -41
  70. package/docs/V2.0.0-BETA.2-RELEASE-EVIDENCE-2026-08-28.md +0 -8
  71. package/docs/V2.0.0-BETA.3-RELEASE-EVIDENCE-2026-09-01.md +0 -8
  72. package/docs/V2.0.0-BETA.4-RELEASE-EVIDENCE-2026-09-03.md +0 -9
  73. package/docs/V2.0.0-BETA.5-RELEASE-EVIDENCE-2026-09-05.md +0 -10
  74. package/docs/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md +0 -11
  75. package/docs/WP4.3-RELEASE-EVIDENCE-2026-08-25.md +0 -73
  76. package/docs/v2/M1-ACCEPTANCE-2026-08-28.md +0 -38
  77. package/docs/v2/M2-DOD-2026-08-28.md +0 -34
  78. package/docs/v2/M4-EXTERNAL-PILOT-2026-08-28.md +0 -46
  79. package/docs/v2/M4-PILOT-APP-2026-08-28.md +0 -44
  80. package/docs/v2/M4-SELFHOST-2026-08-28.md +0 -53
  81. package/docs/v2/guide/08-migration-v1.md +0 -72
  82. package/example/.buildbeat/manifest.json +0 -45
  83. package/example/AGENTS.md +0 -19
  84. package/example/ARCHITECTURE.md +0 -39
  85. package/example/BUILDBEAT.md +0 -17
  86. package/example/CLAUDE.md +0 -7
  87. package/example/README.md +0 -75
  88. package/example/contracts/PROTOCOL.md +0 -38
  89. package/example/pm/NOW.md +0 -22
  90. package/example/pm/adr/ADR-0001-local-first-sqlite.md +0 -25
  91. package/example/pm/adr/README.md +0 -7
  92. package/example/pm/archive//344/270/200/346/234/237/evidence/gate1.md +0 -5
  93. package/example/pm/archive//344/270/200/346/234/237/evidence/gate2.md +0 -5
  94. package/example/pm/archive//344/270/200/346/234/237/evidence/gate3.md +0 -5
  95. package/example/pm/archive//344/270/200/346/234/237/evidence/gate4.md +0 -5
  96. package/example/pm/archive//344/270/200/346/234/237/evidence/implementation.md +0 -5
  97. package/example/pm/decisions.md +0 -20
  98. package/example/pm/status//344/272/247/345/223/201.md +0 -20
  99. package/example/pm/status//345/205/250/346/240/210.md +0 -15
  100. package/example/pm/status//346/265/213/350/257/225.md +0 -15
  101. package/example/pm//344/270/200/346/234/237-/347/234/213/346/235/277.md +0 -97
  102. package/example/standards/CODE.md +0 -18
  103. package/example/standards/DESIGN.md +0 -34
  104. package/example/standards/REVIEW.md +0 -16
  105. package/example/standards/STACK.md +0 -31
  106. package/src/cli.js +0 -323
  107. package/src/constants.js +0 -202
  108. package/src/doctor.js +0 -267
  109. package/src/planner.js +0 -251
  110. package/src/project.js +0 -844
  111. package/src/upgrader.js +0 -1249
  112. package/src/v2/presets/risk/legacy-four-gates.yaml +0 -44
  113. package/src/writer.js +0 -534
  114. package/templates/.claude/agents/reviewer.md +0 -62
  115. package/templates/AGENTS.md +0 -85
  116. package/templates/BUILDBEAT.md +0 -13
  117. package/templates/CLAUDE.md +0 -7
  118. package/templates/pm/NOW.md +0 -26
  119. package/templates/pm/changes/README.md +0 -44
  120. package/templates/pm/status/README.md +0 -32
  121. package/templates/pm//345/275/223/346/234/237/347/234/213/346/235/277.md +0 -62
  122. package/templates/scripts/bus-check.sh +0 -1875
  123. package/templates/scripts/design-preview.sh +0 -44
  124. package/templates/scripts/drift-check.sh +0 -112
  125. package/templates/scripts/pre-commit.sh +0 -74
  126. package/templates/scripts/verify-status.sh +0 -105
  127. package/templates//346/214/207/346/214/245/345/217/260.md +0 -58
@@ -1,46 +0,0 @@
1
- # M4 外部试点证据:pilot-auth 数仓 CLI 标识重命名(RUN-PILOT-EXT-01)
2
-
3
- > 日期:2026-08-28
4
- > 项目:`<试点工作区>/pilot-backend`(真实业务单仓:Java 多模块 + Node portal 测试 + 真实远端)
5
- > 任务:项目所有者点名的真实需求 `LXJ-AUTH-PILOT-EXT-01`——数仓 CLI 公有客户端标识 `client-b-old` 精确重命名为 `client-b`(meta 仓 `pm/decisions.md` 当日拍板行)
6
- > 结论上限:本地候选 + 本地真实测试;不含生产切换(提案 §4 硬门未授权)。**Run 停在合并决定,等待项目所有者。**
7
-
8
- ## 1. 为什么这个试点有分量
9
-
10
- 同一需求今天早些时候已被**人工方式**做过一遍:候选散落在两个仓的未提交工作树里,与无关改动混杂,当日人工 L3 证据自记"没有 clean candidate hash,不满足 review-ready"。本 Run 从**已提交干净基线** `a99d2ad1`(仍是 `client-b-old`)出发,由 v2 Runner 驱动真实 Agent 独立重做,产出可审查的干净 candidate——这正是 M-1 卡点(人是节拍器、无干净候选)的正面对照。人工候选未被触碰,不倒算、不回放。
11
-
12
- ## 2. 流程事实(5.2 分钟全自动到合并决定)
13
-
14
- | 事实 | 值 |
15
- |---|---|
16
- | Workers | **codex CLI 经 Shell Adapter**(厂商中立实证:Claude CLI 未登录不可用,换 codex 零运行时改动,裁决 #5) |
17
- | builder | `codex exec -s workspace-write`(沙箱内只改文件;commit 由包装脚本机械执行);15 文件 +68/−33,**全部在 `pilot-auth/` 内**(allowedPaths 强制) |
18
- | verify | `test-jdk17.sh`(Surefire 全量)+ portal node 测试 + 验收 grep(`client-b-old` 零残留、`client-b` 在册)——一次全绿,退出码回读 |
19
- | review | `codex exec -s read-only` fresh-context 只读审查,结构化信封 `{"status":"succeeded","findings":[]}` |
20
- | candidate | `f97f122`(Git 回读固定,位于 `run/RUN-PILOT-EXT-01` 分支,未合并) |
21
- | UI 证据 | portal 文档页 Chrome headless 真渲染截图(页面源码含 `client-b`、无 `client-b-old`),digest 登记为 screenshot 证据(seq 29);`ui-render-merge-gate` 要求批准前必须存在 |
22
- | 治理 | `standard` 预设:plan/intent digest 绑定接受(`A-WORK-PILOT-EXT-01-1/2`,by haiyangbg)为 build 前置门;env 白名单(宿主凭据不达 codex 子进程);真实远端 上 worktree 推送保护生效 |
23
- | 台账 | 29 事件链校验通过;metrics:自动到达 `WAITING_HUMAN` 100%、证据完整率 100%(3/3 步) |
24
- | 成本 | codex token/费用本轮无采集口径,记 `UNVERIFIED` |
25
-
26
- ## 3. 明确的边界
27
-
28
- - **跨仓未绑定**:契约文件(meta 仓 `contracts/PROTOCOL.md`)不在本单仓 Run 内——MVP 单仓限制(卡点 2/4 的已知项),契约同步由既有人工候选/后续流程处置;
29
- - fixer 未配置真实 Agent(verify 若失败将停为 attended handoff)——本轮未触发;
30
- - 不 merge、不 push、不部署、不改生产 `sys_client`;生产切换硬门(提案 §4)未授权、未执行。
31
-
32
- ## 4. 合并决定(已批准)
33
-
34
- 项目所有者于 2026-08-28 批准:`D-RUN-PILOT-EXT-01-1`(merge-evidence-floor 与 ui-render-merge-gate 在盖章瞬间均为 PASS)。Run 终态 `SUCCEEDED`,压实为 `delivery/work/WORK-PILOT-EXT-01/runs/RUN-PILOT-EXT-01/run-record.json`,最终台账 34 事件链校验通过;worktree 已清理,candidate `f97f122` 保留在 `run/RUN-PILOT-EXT-01` 分支可达。
35
-
36
- 批准仅表示 merge-ready;将候选并入工作分支、与既有人工候选合流、契约同步与生产切换(提案 §4 硬门)均为后续人工决定,本 Run 未执行任何一项。
37
-
38
- ## 4.1 生产切换(2026-08-28 当日晚,所有者逐步授权后完成)
39
-
40
- candidate `f97f122` 经 cherry-pick 到生产血统(`origin/master`,规避了本地分支上未批准的 registry 在途工作与已部署内网文档的双向分叉)→ 全量验证(Surefire 全套 + Portal 29/29 + 零残留)→ 按提案 §4 硬门完成生产切换:只读盘点(唯一 `client-b-old` 行 / 零 Nacos 覆盖 / 零真实消费方登录记录)→ **有界双行窗口**破解新旧健康门顺序死锁(先 INSERT `client-b` 镜像行 → 云效 Run #31 双批发布 SUCCESS → 软删旧行收口)→ L4 全绿(`client-b` 200 ×2、`client-b-old` 400 ×2、`/index` 200 全程无扰动)。证据:meta 仓 `pm/archive/登录二期/evidence/2026-08-28-LXJ-AUTH-PILOT-EXT-01-生产切换.md`。
41
-
42
- ## 5. 对 M4 退出指标的回填
43
-
44
- - 试点 Run 自动到达 `WAITING_HUMAN`:**2/2(self-host + 外部各一)= 100% ≥ 70%** ✓;
45
- - 其余五项维持 [`M4-SELFHOST-2026-08-28.md`](M4-SELFHOST-2026-08-28.md) §4 的达标结论,本 Run 数据同向(完整率 100%、stale 0、超预算 0、Reviewer 写入 0、可追溯 100%)。
46
- - **口径提示**:D6 原文为外部试点 ≥2 个项目(有测试单仓 + 含 UI 各一);本轮为 **1 个项目同时覆盖两个验收面**(所有者明示"文档 web 页面可以理解为 UI")。以此满足 D6、或再补一个独立项目,由项目所有者定夺——定夺后 M4 正式关闭。
@@ -1,44 +0,0 @@
1
- # M4 外部试点 2:pilot-app Bug 看板积压批处理(RUN-CHICK-0037 / 0018)
2
-
3
- > 日期:2026-08-28
4
- > 项目:`<试点工作区>/pilot-frontend`(Next.js 生产应用,基线 `9d571b3`)
5
- > 任务来源:项目所有者点名"异常看板积压了很多 bug,可以去处理一下"。积压读取自钉钉 AI 表格(pilot-app base / Bug看板表,feedback 同步目标):39 条中 **13 未修复 + 2 待定**(P1×3 / P2×4 / P3×8)
6
- > 结论上限:本地候选停在合并决定;不 merge、不 push、不发布;未回写钉钉看板状态。
7
-
8
- ## 1. 本批交付(2 个 Run,全部由 codex Worker 经 Shell Adapter 驱动)
9
-
10
- ### RUN-CHICK-0037(BUG-测试-0037,P3:CSV 下载文件名未按生成标题)
11
-
12
- **这一单完整走出了 Build–Verify–Fix–Review 自动闭环,review 环真实咬合:**
13
-
14
- 1. builder(codex)产出候选 `108553f`(抽 `lib/download-filename.ts` 纯函数 + 单测 + CHANGELOG);verify(`npm ci` + type-check + playwright unit)一轮绿;
15
- 2. **fresh-context 只读 reviewer 阻断**:P1(命名口径未真正与 .md 下载一致、回退语义漂移)+ P2(既有 E2E 断言 `data-*.csv` 必挂——verify 只跑 unit 项目漏掉的,reviewer 抓到了);
16
- 3. `findings-blocking` 路由 fix 步 → 配置 codex fixer(prompt 附最新 findings JSON)→ 修复为两处下载**共用同一派生函数**、更新 E2E 断言;
17
- 4. verify 二轮绿 → review 二轮零 findings → 停在合并决定。candidate `b866d5c`(5 文件)。
18
-
19
- ### RUN-CHICK-0018(BUG-测试-0018,P3:选角色后输入框仍显示「默认助手」)
20
-
21
- 一轮全绿。builder 给出的根因判断质量很高:① `Composer.currentName` 靠 `systemPrompt` 文本反查名称、未保存所选专家元数据(同正文/广场专家场景显示错误);② `newConversation()` 复用空对话时提前返回、跳过默认专家预选。修复在传递链真实断点(`lib/store.ts` 保存元数据 + `lib/role-label.ts` 纯函数 + 单测 57 行)。candidate `fa48729`(7 文件)。review 零 findings。
22
-
23
- ## 2. 运行时事实
24
-
25
- - metrics(本仓):runs 2,自动到达 `WAITING_HUMAN` 100%,证据完整率 100%(9/9 步),fix 轮次分布 {0×1, 1×1},stale 0、超预算 0;
26
- - worktree 隔离 + `npm ci` 仓内自举(主检出的残缺 node_modules 未被触碰);allowedPaths(components/lib/tests/types/CHANGELOG.md)无越界;env 白名单;
27
- - 中途一次 attended handoff(fix 无 adapter)由受托会话批准 `enter-fix`(`D-RUN-CHICK-0037-1`,by claude-delegated,落账可查)后配置 fixer 恢复——攻防记录:**verify 只跑 unit 项目的盲区被 reviewer 补上**,后续批次可考虑把受影响 E2E spec 列入 verify。
28
-
29
- ## 3. 积压分诊(余下 13 条)
30
-
31
- | 组 | 条目 | 处置建议 |
32
- |---|---|---|
33
- | P1×3(0006 生成中断/Key 权限、0029 上传报登录失效、0034 生成超时) | 涉及模型网关/登录态/生产配置,需生产侧排查与授权 | 不适合无授权自动修;建议单独立项(可先只读盘点日志) |
34
- | P2×2 未修复(0033 切换模版重复展示、0035 复核未真正调用模型) | 前端/调用链逻辑,可自动化 | 下一批 v2 Run 候选 |
35
- | P2×2 待定(0012 听写无失败提示、0026 我的模板边界) | 产品语义待定 | 需所有者先定语义再修 |
36
- | P3×6(0005 下载入口格式、0017 loading 提示、0030 数字居中、0032 hover 抖动、0038 模板重复校验、0039 技能错误展示) | 小改动,部分含 UI(0030/0032 适合截图门) | 可按批继续 |
37
-
38
- ## 4. 待项目所有者
39
-
40
- inbox 两单终态决定:`RUN-CHICK-0037`(candidate `b866d5c`)与 `RUN-CHICK-0018`(candidate `fa48729`)。批准后 merge、发布与钉钉看板状态回写仍是人工/另行授权动作。
41
-
42
- ## 5. 对 M4 的意义
43
-
44
- 外部试点项目数达到 **2(pilot-backend + pilot-app)**,D6 原文口径满足;六退出指标在两项目上同向达标(试点 Run 自动到达率 4/4)。M4 就此关闭。
@@ -1,53 +0,0 @@
1
- # M4 Self-host 试点证据:BuildBeat builds BuildBeat
2
-
3
- > 日期:2026-08-28
4
- > Run:`RUN-SELF-001`(Work:`WORK-SELF-001`,工件与 run-config 见 [`delivery/work/WORK-SELF-001/`](../../delivery/work/WORK-SELF-001/intent.md))
5
- > 结论上限:脚本 Worker + 真实 Runner + 真实仓库;验证的是运行时与协议,不是 Agent 智能。**Run 停在 `WAITING_HUMAN`(合并决定),未 merge、未 push,等待项目所有者在 inbox 处置。**
6
-
7
- ## 1. 流程事实(全部由 Runner 回读)
8
-
9
- - 基线 `daf9d79`,`standard` 风险预设(plan 接受为 build 前置门);intent/plan 均以 digest 绑定接受(`A-WORK-SELF-001-1/2`)。
10
- - `build → verify → review` 全部一次通过;candidate `59673e2` 由 Git 回读固定,位于 `run/RUN-SELF-001` 分支(未合并,主分支无此变更)。
11
- - verify 运行本仓库真实测试(`node --test tests/v2-event-ledger.test.js tests/v2-reducer.test.js`),退出码 0 回读入证据日志。
12
- - review 只读、fresh 进程、结构化 findings 信封(空 findings)落 Evidence。
13
- - 事件台账 28 条,`replay` 报告 `chain OK: 28 events verified (digest/prev/seq)`。
14
- - `allowedPaths` 限定 `delivery/work/WORK-SELF-001`,Worker 未越界。
15
-
16
- ## 2. 真实仓库特有的验证点
17
-
18
- - **推送保护实测**:本仓库有真实 remote(origin=GitHub)。在 run worktree 内执行 `git push origin HEAD`:
19
-
20
- ```text
21
- git: 'remote-protected' is not a git command.
22
- fatal: remote helper 'protected' aborted session
23
- ```
24
-
25
- 能力级失败(worktree 级 pushurl 覆盖),非提示词拦截;主检出的 remote 配置不受影响。
26
- - **试点还抓到一个真实缺陷**:YAML 子集解析器把列表项中带冒号的引号标量误判为 map,导致 run-config 无法加载。已修复(引号开头的列表项一律按标量解析)并加永久回归(`tests/v2-workflow.test.js`)——这正是 self-host 试点存在的意义。
27
-
28
- ## 3. inbox 快照(等待项目所有者)
29
-
30
- ```text
31
- RUN-SELF-001 (work WORK-SELF-001) [final-decision] enter-wait-merge
32
- candidate: 59673e2faa19d3aa67339837f16f0db44d6a29cb
33
- planDigest: sha256:a0e3e86f…
34
- reason: terminal step requires a human decision
35
- ```
36
-
37
- 处置方式:`node src/v2/cli/run.js approve --repo . --run RUN-SELF-001 --transition enter-wait-merge --config delivery/work/WORK-SELF-001/run-config.yaml`(或 `reject`)。批准仅表示 merge-ready;merge 本身仍是人工外部动作。
38
-
39
- ## 4. M4 退出指标核验
40
-
41
- | 指标 | 目标 | 当前 | 依据 |
42
- |---|---:|---|---|
43
- | 状态转换可追溯 | 100% | **100%** | 每次转换必有 TRANSITION + POLICY_EVALUATED 事件;`replay` 链校验 28/28 |
44
- | stale Approval 被复用 | 0 | **0** | reducer + approve 双侧强制;eval `stale-approval` |
45
- | 超预算继续运行 | 0 | **0** | maxAttempts / 指纹 / 超时全停;`v2-invariants` / eval `no-progress` |
46
- | 试点 Run 自动到达 `WAITING_HUMAN` | ≥70% | **1/1(100%)** | 仅 self-host 分母;**外部试点 ≥2 未跑,该行整体 `UNVERIFIED` 待 T5(项目所有者点名)** |
47
- | 证据完整率 | ≥95% | **100%** | `metrics`:5/5 finished steps 携带回读证据 |
48
- | Reviewer 自行修改代码 | 0 | **0** | 只读强制 + eval `reviewer-readonly` |
49
-
50
- ## 5. 边界
51
-
52
- - 本次 accept 与 run 启动由受托会话以 `claude-delegated` 身份执行并如实落账;**合并决定未被代行**,留在 inbox。
53
- - 外部试点(D6:试点工作区内有测试的单仓项目 + 含 UI 项目)待项目所有者点名与授权后执行,指标回填前 M4 不宣称关闭。
@@ -1,72 +0,0 @@
1
- # v1 → v2 迁移指南(手工 runbook)
2
-
3
- 按收尾修正三:装机量 N=1,**不做 importer 工具**,人工走完。各步括号里的耗时是作者一次迁移的估算,不是承诺。
4
-
5
- 先分清两件事:**升级 CLI** 与 **迁移项目状态**。`npm install --global @haiyangbg/buildbeat@latest` 只是前者——它把 `buildbeat-v2` 装到机器上,对项目文件零改动;v1 的 `buildbeat doctor / init / adopt / upgrade` 原样保留,schema 仍是 2,`buildbeat upgrade` 对 1.21 骨架报 up-to-date。后者才是本文:把"哪些工作在途"从 v1 看板搬进 `delivery/work/`,并冻结旧入口。三条铁律全程有效:
6
-
7
- 1. **不猜旧状态有效性**——v1 看板/状态文件里没有证据支撑的行,一律当"待人工确认",不自动翻译成 v2 状态;
8
- 2. **单向迁移**——v1 只冻结不删除,历史归档可查;
9
- 3. **禁止双写**——切换日之后新工作只进 v2,任何"两边都记一下"都是回退。
10
-
11
- ## 前提(约 30 分钟)
12
-
13
- - [ ] 安装稳定版(`npm install --global @haiyangbg/buildbeat@latest`,2.0.0 起 `latest` 即 v2;`buildbeat-v2` 无参运行能打印用法);
14
- - [ ] 读完 [快速开始](01-quickstart.md) 与 [Approval 指南](07-approval-guide.md);
15
- - [ ] 目标仓库工作树干净、基线已提交。
16
-
17
- ## 第 1 步:只读分析 v1(约 1 小时)
18
-
19
- 盘点现有 v1 资产,只读不改:
20
-
21
- - 看板/状态文件(`pm/status/*.md` 或等价物):列出**声称在途**的工作项;
22
- - 提案与决策台账(`pm/changes/`、`pm/decisions.md`):找出已批准未完成的事项;
23
- - 契约(`contracts/*.md`)与探测器(`drift-check.sh` / `live-status.sh`):记录现状与调用方式。
24
-
25
- 产出一张三栏清单:`确认在途 / 疑似过期 / 已完成未归档`。判断依据只认证据(提交、部署记录、生产事实),不认状态文件自述。
26
-
27
- ## 第 2 步:生成 v2 Work 草稿(约 1 小时)
28
-
29
- 只为"确认在途"的事项建 v2 工作项:
30
-
31
- ```bash
32
- mkdir -p delivery/work/WORK-<名字>
33
- # intent.md:这件事为什么存在(从 v1 提案摘录+核对)
34
- # plan.md:接下来真实要做的步骤(不是 v1 计划的搬运——过期部分当场砍掉)
35
- ```
36
-
37
- "疑似过期"的行**不迁移**,在清单上标注理由留档;"已完成未归档"的补归档到 v1 历史区。
38
-
39
- ## 第 3 步:人工确认当前活动 Work(约 30 分钟)
40
-
41
- 项目所有者逐项过草稿清单,拍板哪些 Work 开(accept intent/plan 即 digest 绑定确认)。没被拍板的草稿删掉或留在未接受状态——**未接受的草稿不产生任何义务**。
42
-
43
- ## 第 4 步:冻结旧看板(约 15 分钟)
44
-
45
- 在 v1 看板/状态文件顶部加冻结声明(日期 + "新工作见 delivery/,本文件停止更新"),提交。不删除、不再写入。
46
-
47
- ## 第 5 步:探测器重挂到 observe(约 30 分钟,可选先行)
48
-
49
- 把 drift-check/live-status 挂为 observe Provider([Evidence 指南 §observe](06-evidence-guide.md)):
50
-
51
- ```bash
52
- cp <buildbeat>/src/v2/presets/observe.yaml .buildbeat/observe.yaml # 改 command/subject
53
- buildbeat-v2 observe run --config .buildbeat/observe.yaml # 跑一个周期验证
54
- ```
55
-
56
- v1 脚本本体不用改——它们的权威边界(各查什么、不证什么)原样保留。
57
-
58
- ## 第 6 步:真实 Run 验收(约 1 小时)
59
-
60
- 选一个已确认的 Work,用 v2 跑完一个真实 Run 到 `WAITING_HUMAN` 并完成决定。**这个 Run 成功之前不算切换完成**——期间发现的问题修完再宣布切换。
61
-
62
- 人批习惯迁移:v1 四 Gate 用户可先用 `riskPreset: legacy-four-gates`(四 Gate 完整形态),跑顺后再降到 `standard`。
63
-
64
- ## 完成定义
65
-
66
- - 冻结声明已提交;所有新工作走 `delivery/` + v2 Runner;
67
- - 至少一个真实 Run 走完 Build→Verify→Review→人批闭环;
68
- - 三栏清单与拍板结果留档(就是迁移的证据)。
69
-
70
- 迁移前后可核对的目录:迁移前 `pm/NOW.md`、`pm/status/*`、`pm/changes/*` 可写;迁移后它们只读并带冻结声明,`delivery/work/<ID>/` 每个在途事项一个目录,`buildbeat-v2 overview --repo .` 能列出全部活动 Work 且没有重复。旧文件不删,任何时候可读;不要为旧 Run 伪造 run-record 或 manifest。
71
-
72
- 回退:v1 全部原样在 Git 里,去掉冻结声明即可回去——但双写永远禁止,回去就是整个回去。已经跑出的 v2 Run 台账保留在 `delivery/work/*/runs/`,回退不需要删它。
@@ -1,45 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "scaffoldVersion": "v1.21",
4
- "cliVersion": "2.0.1",
5
- "layout": "default",
6
- "installedAt": "2026-08-25T00:00:00.000Z",
7
- "files": {
8
- "AGENTS.md": {
9
- "policy": "replace-if-unmodified",
10
- "baselineSha256": "b88c3a8f2763933ab7f3c2ebf983fb41f0b2fd4fe878983b94832774854d0e0d"
11
- },
12
- "ARCHITECTURE.md": {
13
- "policy": "project-owned",
14
- "baselineSha256": "4c9149a3af00c62f7b588501cf6325aea5be9e96051021c5cffc36d7c5d119b6"
15
- },
16
- "BUILDBEAT.md": {
17
- "policy": "replace-if-unmodified",
18
- "baselineSha256": "d411b53917a12e9d53f2b02e8a16292a90570d743943b183316ab0b4c69b254f"
19
- },
20
- "CLAUDE.md": {
21
- "policy": "replace-if-unmodified",
22
- "baselineSha256": "1947d9d2c20ce3ede4e24d4f28cedbde0298af53ab5b0e212163d966d28a7a0b"
23
- },
24
- "contracts/PROTOCOL.md": {
25
- "policy": "project-owned",
26
- "baselineSha256": "3c970768bed43fa42e4397e703bec4ecedff3a61509d3abcc7ad707e91df8eff"
27
- },
28
- "pm/NOW.md": {
29
- "policy": "project-owned",
30
- "baselineSha256": "e0404e1202d9f290d7c97273fc618b7f99f4448a7587898e06500fa0b5c72698"
31
- },
32
- "pm/decisions.md": {
33
- "policy": "project-owned",
34
- "baselineSha256": "fff21c36afbdd83132365f0657f54bca9efc5f1a7380c9478e0145ddbd0c8b60"
35
- },
36
- "pm/一期-看板.md": {
37
- "policy": "project-owned",
38
- "baselineSha256": "2b74f8a02d0cbdd5710300b2b2a99b101f5e336680edfbd8e30c2c37b542d0b8"
39
- }
40
- },
41
- "integrations": {
42
- "gitignore": null,
43
- "hooks": null
44
- }
45
- }
package/example/AGENTS.md DELETED
@@ -1,19 +0,0 @@
1
- # AGENTS.md — 简账 工作区 · 工作包路由 + 协作总线
2
-
3
- > 沙盘说明:真项目此文件是完整版(路由表 + §1.5 审美红线 + 十条规则 + 红线,见 [templates/AGENTS.md](../templates/AGENTS.md));沙盘只展示**填好占位符的路由表**,其余段落与模板一致、此处从略。简账的同一 Builder 端到端拥有一期工作包,产品/全栈/测试只是 AI 视角。
4
- > 根上另有一份 `CLAUDE.md`,只是指向本文件的一行指针(见 [templates/CLAUDE.md](../templates/CLAUDE.md))。
5
-
6
- ## 1. 工作包路由 —— Builder 端到端负责,会话按 AI 视角隔离
7
-
8
- | AI 视角 | cwd | 可写(拥有) | 只读 | 开工先读 | 状态写回 |
9
- |---|---|---|---|---|---|
10
- | **产品**(规格/编排) | `pm/` | `pm/**` | 全仓 | `pm/NOW.md` | 当期看板 + `pm/status/产品.md` |
11
- | **全栈**(实现,含运维) | 工作区根(同持 jz-web、jz-api 两仓) | `jz-web/**` + `jz-api/**`(**按仓分别 stage,不 `git add -A`**) | `pm/*` 当期文件、契约 | 各代码仓自己的 `AGENTS.md` + `pm/NOW.md` | `pm/status/全栈.md`(带 hash)+ 各仓 `CHANGELOG.md` + `contracts/PROTOCOL.md` |
12
- | **测试**(E2E·走查) | `jz-web/` | `tests/**` · 视觉基线 · 走查报告 | 实现 + spec + 设计稿 + 契约 | `pm/NOW.md` + `tests/README.md` | `pm/status/测试.md` + 核查门证据(E2E 报告/视觉 diff/对比图,**落 `pm/archive/<期>/evidence/`,换期零搬运**) |
13
-
14
- > 🔴 同一 Builder 合并多视角的补偿控制:一期候选满足 review-ready(两仓 `HEAD=candidate`、工作树干净、L3/渲染证据绿、无待修)后由 reviewer 全核一次 + 测试视角独立核两端;首次 milestone 前写者自发现问题先自行收敛,只有修改冻结对外语义/不可逆副作用才提前 `risk-delta`。写者≠审者不变,但不边改边审。
15
- > 开工/收工护栏:任意会话开工先跑 `bash scripts/bus-check.sh` + 各仓 `git pull`;收工前回写证据/状态并再跑 `bus-check --strict`,warning/unverified 仍需说明。
16
-
17
- ## 1.5 UI 规范摘要 / 2. 十条规则 / 2.5 任务包与人批节奏 / 3. 红线
18
-
19
- (与 [templates/AGENTS.md](../templates/AGENTS.md) 一致,沙盘从略。完整 UI 规范单点见 `standards/DESIGN.md`;规则⑥采用「机器闸常驻 + review-ready 后一次 milestone + P0/P1 合并 closure」;§2.5 规定会话按用户级工作包持续推进,审批分 `STOP_NOW / BATCH_AT_GATE / NO_APPROVAL`,不因每个小任务交还接力棒。)
@@ -1,39 +0,0 @@
1
- # ARCHITECTURE.md — 简账 全栈总图(AI 会话接手按需读这份)
2
-
3
- > 一句话:极简个人记账 Web 应用,单用户,先跑通「记一笔 → 看列表 → 月度报表」。
4
- > 🔴 凭据一律**只标位置、不写值**。
5
-
6
- ## 0. 架构链路
7
-
8
- ```
9
- 浏览器
10
- ▼
11
- jz-web(React + Vite,静态托管)
12
- ▼
13
- jz-api(Node + Express + SQLite,示例 PaaS 单实例)
14
- ```
15
-
16
- ## 1. 文件夹
17
-
18
- ```
19
- 简账/
20
- ├── AGENTS.md / ARCHITECTURE.md / 指挥台.md / contracts/ / design/ / pm/ / scripts/
21
- ├── jz-web/ # ★ 前端;详见其自己的 AGENTS.md
22
- └── jz-api/ # ★ 后端 API + SQLite;详见其自己的 AGENTS.md
23
- ```
24
-
25
- ## 2. 基础设施标识(资源变动时更新本节)
26
-
27
- | 项 | 值 | 说明 |
28
- |---|---|---|
29
- | 部署平台 | 示例 PaaS(沙盘虚构) | 真项目写平台/区域/应用 ID |
30
- | 入口 | `https://jz.example.com` | 示意域名 |
31
- | 数据库 | SQLite(随 jz-api 数据卷) | 每日备份挂账二期(看板挂账 #2) |
32
-
33
- ### 凭据位置(🔴 只读取,不外泄、不写值)
34
- - 示例 PaaS 部署 token → 本机 `~/.config/example-paas/token`(600 权限)
35
- - jz-api 运行时 env 实查 → `paas env list jz-api`(示意命令)
36
-
37
- ## 3. 红线 / 4. 子项目文档索引
38
-
39
- (与 [templates/ARCHITECTURE.md](../templates/ARCHITECTURE.md) 一致,沙盘从略;改 jz-web 先读其自己的 `AGENTS.md`,改契约先读 `contracts/PROTOCOL.md`。)
@@ -1,17 +0,0 @@
1
- # BUILDBEAT.md — 本项目的协作骨架版本标记
2
-
3
- **本项目使用 BuildBeat `v1.21`**(2026-06-10 初次拷入;2026-08-22 升级;2026-08-25 scoped 分发迁移与域回复格式升级;2026-08-28 起随 v2 beta 包分发,v1 脚手架冻结于 v1.21,沙盘示意)
4
- **协调层布局:`默认`**(脚本在 `scripts/`;简账是从零起的项目,根上本来没别的东西 —— 接管存量项目才用紧凑布局)
5
- 来源:<https://github.com/HaiYangBG1/BuildBeat>
6
-
7
- ## 升级
8
-
9
- 对照上游 [CHANGELOG.md](https://github.com/HaiYangBG1/BuildBeat/blob/main/CHANGELOG.md),从本文件记录的版本**往后**逐版看「拷出项目升级」标注的文件,同步后更新上面的版本行。拿不准就让 AI 会话对比上游 `templates/` 与本项目对应文件的差异。
10
-
11
- ## 教学 manifest
12
-
13
- `.buildbeat/manifest.json` 是为本仓文档回归维护的 schema 2 合成快照,它的 hash 锁定当前示例字节。它不证明 npm artifact 或真实 CLI 完成过写入,不是真实项目的安装证据,也不得作为 legacy 项目的复制/重命名来源。真实迁移见 [v1.16 legacy 迁移指南](../docs/LEGACY-V1.16-MIGRATION.md)。
14
-
15
- ## 回灌(比升级更重要)
16
-
17
- 本项目踩到 BuildBeat **没覆盖的新坑** → 回上游 `lessons.md` 登记一条(症状→根因→解药)。换期压缩仪式 checklist 里有"回灌一问",别跳过。
package/example/CLAUDE.md DELETED
@@ -1,7 +0,0 @@
1
- # CLAUDE.md — 指针(🔴 勿在此处写内容)
2
-
3
- 本工作区的会话路由、协作总线十条规则、红线,**单点在同目录的 [`AGENTS.md`](AGENTS.md)** —— 请立即读取那份。
4
-
5
- > 本文件只为兼容「只认 `CLAUDE.md` 这个文件名的工具」而存在,**永远保持这几行**。
6
- > 往这里复制任何规则 = 两份文档必然漂移(上游 `lessons.md` 第 1 条:SSOT 腐烂)。
7
- > 也不要改成符号链接:Windows 上 git 默认 `core.symlinks=false`,clone 出来会静默退化成一个内容是路径字符串的普通文件,装载即失效。
package/example/README.md DELETED
@@ -1,75 +0,0 @@
1
- # example/ —— 教学沙盘:虚构项目「简账」跑完一期的快照
2
-
3
- > 这里的协议骨架文件展示 `templates/` 对应模板**填好项目事实之后的样子**,status/evidence 则是虚构一期的教学产物;沙盘也刻意启用了可选 standards 与一个 ADR,用来展示“默认不生成、选择后由项目拥有”的完成态。
4
- > 🔴 项目、数据、人物、决策全部虚构(已脱敏);commit hash 均为示意值——真项目里 hash 必须真实可查(`git cat-file -t <hash>`,见 [lessons.md](../lessons.md) 第 11 条)。
5
- > [`.buildbeat/manifest.json`](.buildbeat/manifest.json) 是 schema 2 的**合成教学快照**:其 baseline hash 会由本仓机器检查锁定到当前示例字节,但它不证明 npm artifact 或真实 CLI 写过这些文件,也不是可复制到真实项目的受管基线。
6
-
7
- ## 沙盘设定
8
-
9
- - **项目**:「简账」—— 网页记账应用(就是主 README §2 举例的那个)
10
- - **仓**:`jz-web`(前端 React)+ `jz-api`(后端 Node + SQLite),各自独立 git
11
- - **工作包所有权**:同一 Builder 端到端负责;产品 / 全栈 / 测试是 AI 专业视角;**轨道**:标准轨;**部署**:示例 PaaS(沙盘不接真平台)
12
- - **进度**:一期(记账主流程 + 月度报表)已跑完 Gate1→Gate4 上线,尚未换期
13
-
14
- ## 怎么读(建议顺序)
15
-
16
- 1. [pm/NOW.md](pm/NOW.md) —— 任何会话开工第一眼:当前期是什么、去看哪些文件
17
- 2. [pm/一期-看板.md](pm/一期-看板.md) —— 当前工作包如何覆盖多个子项、决策收件箱如何批量收敛,以及阶段门/分工/挂账
18
- 3. [pm/decisions.md](pm/decisions.md) —— 拍板台账:收敛后的真实决策包 + BuildBeat 升级记录(注意部分回答不单独记行)
19
- 4. [pm/status/](pm/status/) —— 三个 AI 视角各写各的状态:带 hash、带证据指针,按工作包/里程碑更新而非每个子任务一条
20
- 5. [pm/archive/一期/evidence/](pm/archive/一期/evidence/) —— 完成工作包和 Gate 令牌引用的可核验证据落点
21
- 6. [contracts/PROTOCOL.md](contracts/PROTOCOL.md) —— 跨仓契约:快照 + 关键对齐点 + 变更记录(含"独立核查"列)
22
- 7. [AGENTS.md](AGENTS.md) / [ARCHITECTURE.md](ARCHITECTURE.md) —— 路由表和全栈总图填好后的样子(根上另有 [CLAUDE.md](CLAUDE.md),只是指向 `AGENTS.md` 的一行指针)
23
- 8. [standards/](standards/) —— 已确认的 STACK/CODE/REVIEW/DESIGN;普通项目可以完全没有此目录
24
- 9. [pm/adr/](pm/adr/) —— 长期技术决定与替代链;普通拍板仍只进 decisions.md
25
- 10. [.buildbeat/manifest.json](.buildbeat/manifest.json) —— schema 2 字段、所有权策略与 baseline hash 的教学快照
26
-
27
- ## Gate 四态怎么写
28
-
29
- `pm/一期-看板.md` 是已完成一期的 live 快照,因此四行都是 `passed`。下面只是语法对照,不要再追加到同一份看板:
30
-
31
- ```md
32
- - Gate1: pending
33
- - Gate2: passed | 决策: `pm/decisions.md:16` | 证据: `pm/archive/一期/evidence/gate2.md`
34
- - Gate3: blocked | 理由: `实现候选尚有 P1 待修`
35
- - Gate4: n/a | 理由: `本工作包无部署或生产发布交付`
36
- ```
37
-
38
- `n/a` 必须同行带非占位的 `理由:`;`passed` 应同行指向已存在的决策表行或归档证据。`blocked` 也应说明真实阻塞,不把“还没做”包装成审批。
39
-
40
- ## 域回复示例
41
-
42
- 下面展示一期实现候选形成时,全栈视角如何面向人收口。这是回复格式示例,status 和证据文件仍是持久事实。
43
-
44
- ```md
45
- ## 全栈视角|✅ 已完成
46
-
47
- ### 已做
48
-
49
- 1. 记账主流程和月度报表已形成可验收候选。
50
- - 证据:`pm/archive/一期/evidence/implementation.md`
51
-
52
- ### 未做
53
-
54
- 1. 黑盒 E2E 和带图走查。
55
- - 原因:需要测试视角独立验收当前候选。
56
-
57
- ### 下一步
58
-
59
- - **本域已完成:** 下一棒是测试视角,负责黑盒 E2E 和带图走查。
60
- ```
61
-
62
- ## Manifest 的教学边界
63
-
64
- - `files` 只记录这份合成快照声明的 8 个基线路径;当前文档字节与 `baselineSha256` 一致,是为了防止教材漂移,不是为 legacy 项目追认历史所有权。
65
- - 可选 `standards/`、`pm/adr/`、业务 status 与 evidence 是基线后的 project-owned 教学内容,不进 manifest。
66
- - 为避免复制可执行 SSOT,沙盘仍从上游引用 scripts/指挥台/Hook;所以这不是可用 `doctor` 证明健康的完整 CLI 安装。
67
- - 真实 v1.16 拷出项目必须按 [legacy 迁移指南](../docs/LEGACY-V1.16-MIGRATION.md) 处理;不得复制本 manifest、重命名 `.solobaton` 文件,或把当前已改过的文件 hash 伪装成安装基线。
68
-
69
- ## 拿它练手(公司内训用法)
70
-
71
- 开一个 AI 会话,把本目录当项目根,说「你是当前工作包的产品视角,开工」——看它能否从 NOW 顺藤摸瓜讲清当前状态;再说「换期到二期」,对照 NOW.md 底部的压缩仪式 checklist,检查它做没做全。
72
-
73
- 若把模板脚本复制进本目录运行 `bus-check --strict`,示意 commit 会按设计触发 `sync.ghost_hash`:这是给教学沙盘保留的负例,不是可发布候选的绿灯。真项目必须换成仓库中可解析的真实 hash;删除或豁免检查都不算修复。
74
-
75
- > scripts/ 不在沙盘里:开工护栏等脚本直接用 [templates/scripts/](../templates/scripts/);指挥台操作卡见 [templates/指挥台.md](../templates/指挥台.md)。
@@ -1,38 +0,0 @@
1
- # 简账 跨边界契约 · PROTOCOL(SSOT)
2
-
3
- > **这是跨仓边界唯一的契约入口。** 谁改接口行为,先改这里;谁要接接口,先读这里。
4
- > 🔴 协议变更不照单全收——独立核查后再信,并在 §3 登记一行。本文件不含任何凭据明文。
5
-
6
- **契约快照对应版本:`v0.2.0`**(2026-06-20 上线)
7
- > 🔴 线上实况唯一查询口 = `bash scripts/bus-check.sh`;本行只标「本快照写就时对应的版本」。
8
-
9
- <!-- buildbeat-multirepo-map:v1
10
- repo=jz-web|contract=contracts/PROTOCOL.md|deployment=n/a
11
- repo=jz-api|contract=contracts/PROTOCOL.md|deployment=n/a
12
- -->
13
-
14
- ---
15
-
16
- ## 1. 当前契约快照
17
-
18
- ### 边界:jz-web ↔ jz-api(REST,JSON)
19
-
20
- | 端点/字段 | 行为 | 备注 |
21
- |---|---|---|
22
- | `POST /api/entries` | 记一笔:`{amount, category, note?, ts}` → 201 | `amount` 一律**整数分**,前端负责展示为元 |
23
- | `GET /api/entries?month=YYYY-MM` | 当月流水,按 `ts` 倒序 | 分页二期再说 |
24
- | `GET /api/reports/monthly?month=YYYY-MM` | `{total, byCategory:[{category,sum}]}` | **按自然月**汇总(拍板 2026-06-12);空月返回 `{total:0, byCategory:[]}`,**不 404** |
25
- | 鉴权 | 单用户:`Authorization: Bearer <token>` | token 位置见 `ARCHITECTURE.md` §凭据 |
26
- | 错误 | `{error:{code,message}}` + 4xx/5xx | code 枚举:`INVALID_MONTH` / `UNAUTHORIZED` |
27
-
28
- ## 2. 🔴 当前关键对齐点(开工前各域必须一致)
29
-
30
- 1. 金额单位 = **分**(整数),序列化任何环节不得出现浮点——两端各有一条测试盯这条。
31
- 2. 空月份返回空结构不 404——前端按"有数据/空数据"两态渲染,不做 404 分支。
32
-
33
- ## 3. 契约变更记录(changelog · 倒序)
34
-
35
- | 版本 | 日期 | 变更 | 独立核查 |
36
- |---|---|---|---|
37
- | v0.2.0 | 2026-06-18 | 新增 `GET /api/reports/monthly`;定「空月返回空结构不 404」 | 测试域实测 `curl …?month=2026-01` → 200 + 空结构;读 `jz-web` Report 页确认无 404 分支,两端一致 |
38
- | v0.1.0 | 2026-06-13 | 首版:entries 两端点 + Bearer 鉴权 + 金额单位分 | reviewer 只读核两端代码,字段名/类型/错误码一致 |
package/example/pm/NOW.md DELETED
@@ -1,22 +0,0 @@
1
- # NOW — 当前冲刺指针(各工作包/AI 视角会话开工先读这里)
2
-
3
- > 本文件**永远只是薄指针**:当前期 + 看哪些文件,🔴 禁堆流水日志。
4
- > 🔴 线上版本不写在任何文档里:查 `bash scripts/bus-check.sh`。
5
-
6
- **当前期:一期(记账主流程 + 月度报表)**(已收尾:Gate4 已过、上线复核完,待换期)
7
- **本期轨道:标准轨**
8
-
9
- | 看哪 | 文件 |
10
- |---|---|
11
- | 🧭 当期看板 | `一期-看板.md` |
12
- | 🗳 拍板台账(决策单点) | `decisions.md` |
13
- | 🔌 契约 | `contracts/PROTOCOL.md` |
14
- | 📊 各 AI 视角状态(各写各的) | `status/产品.md` · `status/全栈.md` · `status/测试.md` |
15
- | 🔁 在途变更提案 | `changes/`(本期无提案,目录未建) |
16
- | 📦 历史期归档 | `archive/`(证据产物期中即写 `archive/一期/evidence/`;看板等文档换期时归档) |
17
-
18
- ---
19
-
20
- ### 换期 checklist(当前工作包 Builder / 产品视角)—— 含压缩仪式
21
-
22
- > 与上游 NOW 模板的换期 checklist 一致,沙盘从略;二期立项时逐条执行。
@@ -1,25 +0,0 @@
1
- # ADR-0001: 账本采用本地优先 SQLite
2
-
3
- - Status: Accepted
4
- - Date: 2026-06-13
5
- - Superseded by: n/a
6
-
7
- ## Context
8
-
9
- 一期需要单用户快速记账、离线可用和低运维成本;当前没有多人实时协作或跨区域数据库需求。
10
-
11
- ## Decision
12
-
13
- API 使用 SQLite 作为一期账本存储,金额以整数分保存;数据库文件仅由 API 服务拥有,Web 不直连。
14
-
15
- ## Consequences
16
-
17
- 部署和备份简单,但多实例写入能力受限。若进入多人实时协作或水平扩容,必须另建 ADR,不把 SQLite 直接外推为长期通用方案。
18
-
19
- ## Alternatives considered
20
-
21
- PostgreSQL 能支持后续多实例,但一期运维成本与真实需求不匹配;浏览器本地存储无法满足服务端备份与 API 契约。
22
-
23
- ## Related contracts / work packages / evidence
24
-
25
- 一期记账主流程工作包;`contracts/PROTOCOL.md` 金额与账目字段;`pm/archive/一期/evidence/implementation.md`。
@@ -1,7 +0,0 @@
1
- # 简账 ADR 索引
2
-
3
- 只有长期、难回退的技术决定进入本目录。普通产品拍板、Gate 确认和短期可逆选择继续记录在 `pm/decisions.md`。
4
-
5
- 当前 ADR:
6
-
7
- - [ADR-0001:账本采用本地优先 SQLite](ADR-0001-local-first-sqlite.md)
@@ -1,5 +0,0 @@
1
- # Gate1 证据(沙盘)
2
-
3
- - 决策落点:`pm/decisions.md`
4
- - 验收结果:一期规格、范围与非目标已确认。
5
- - 边界:本文为虚构教学证据,不是真实项目或线上验收。
@@ -1,5 +0,0 @@
1
- # Gate2 证据(沙盘)
2
-
3
- - 决策落点:`pm/decisions.md`
4
- - 走查结果:柱状图与移动端单列方案按真渲染原型收敛。
5
- - 边界:沙盘不携带真实截图/原型,仅展示证据路径和可追溯格式。
@@ -1,5 +0,0 @@
1
- # Gate3 证据(沙盘)
2
-
3
- - 决策落点:`pm/decisions.md`
4
- - 候选结论:review-ready 条件齐备,milestone 与 P1 closure 已收敛。
5
- - 边界:本文不授权真实合并。
@@ -1,5 +0,0 @@
1
- # Gate4 证据(沙盘)
2
-
3
- - 决策落点:`pm/decisions.md`
4
- - 收尾结果:沙盘表达一期上线、L4 复核与挂账移交的文件形态。
5
- - 边界:这是虚构证据,不能外推为任何真实部署状态。
@@ -1,5 +0,0 @@
1
- # 实现候选证据(沙盘)
2
-
3
- - 范围:`jz-web` + `jz-api` + `contracts/PROTOCOL.md`。
4
- - 自动化:示意 E2E 12 例通过;candidate hash 见各 AI 视角 status。
5
- - 边界:example 中的 hash 为教学占位,不得引用为真实 L3 证据。
@@ -1,20 +0,0 @@
1
- # decisions — 拍板台账(全工作区唯一决策单点)
2
-
3
- > **规则(总线⑨)**:一个真实决策包收敛后,第一动作 = 在此追加一行(倒序),再回写受影响的 SSOT;「回写」列没销完 = 欠账可见。验收条目与部分回答不单独记拍板。
4
- > v1.13 起新决策沿用看板收件箱包ID;历史行不追补编号。v1.14 起 reviewer 只在 review-ready 后启动。
5
-
6
- | 日期 | 拍板人 | 决策包 | 回写(落点 → 状态) |
7
- |---|---|---|---|
8
- | 2026-08-25 | 你 | 【FLOW-BUILDBEAT-RENAME】协作骨架品牌从 Solobaton 迁移为 BuildBeat;历史升级记录不回改,后续只写 canonical 新名 | BUILDBEAT.md / README / 产品 status → ✅;旧名行保留为历史 |
9
- | 2026-08-22 | 你 | 【FLOW-CLI-PREVIEW】升级 Solobaton v1.16:业务模板零替换;CLI v0 只读检查/规划,不允许写入、升级或卸载 | SOLOBATON.md / 产品 status → ✅;现有 Shell 护栏不变 |
10
- | 2026-08-22 | 你 | 【FLOW-UPSTREAM-TESTS】升级 Solobaton v1.15:替换 3 个路径健壮性脚本;上游 README/CI/测试不拷入业务项目;流程语义不变 | SOLOBATON.md / 产品 status → ✅;历史决策与看板不回改 |
11
- | 2026-08-22 | 你 | 【FLOW-REVIEW-READY】升级 Solobaton v1.14:候选满足 `HEAD=candidate`、干净、L3/渲染绿、无待修后才做一次 milestone;P0/P1 合并 closure;reviewer 静默返回 | AGENTS.md 规则⑥ / SOLOBATON.md / 一期-看板.md → ✅;历史报告不回改 |
12
- | 2026-08-22 | 你 | 【FLOW-20260822】升级 Solobaton v1.13:会话按工作包持续推进;审批分 STOP_NOW/BATCH_AT_GATE/NO_APPROVAL;决策包收敛后只记一次 | AGENTS.md §2.5 / SOLOBATON.md / 一期-看板.md / status 口径 → ✅;历史部分记录不回改 |
13
- | 2026-08-22 | 你 | 升级 Solobaton v1.12:机器闸常驻;高风险 delta 定向核;里程碑候选只全核一次;同一 hash 复用结论 | AGENTS.md 规则⑥ / SOLOBATON.md / 一期-看板.md 核查节奏 → ✅;历史报告不回改 |
14
- | 2026-06-20 | 你 | 一期验收通过,批准上线(⛔Gate4);报表导出 CSV 挪二期 | 一期-看板.md ⑤ → ✅;看板挂账 #1 → ✅ |
15
- | 2026-06-19 | 你 | ⛔Gate3 批准合并:月度报表(走查 P1「空月除零」已修复复验) | 一期-看板.md ⑤ 合并项 → ✅ |
16
- | 2026-06-15 | 你 | ⛔Gate2 真渲染过:报表用柱状图不用折线;移动端两列改单列 | design brief → ✅;一期-看板.md ② → ✅ |
17
- | 2026-06-13 | 你 | 【ADR-0001】一期账本采用本地优先 SQLite;多人实时协作或水平扩容时必须重开架构决策 | [ADR-0001](adr/ADR-0001-local-first-sqlite.md) / PROTOCOL.md / STACK.md → ✅ |
18
- | 2026-06-12 | 你 | 月度报表**按自然月**汇总,不做滚动 30 天 | PROTOCOL.md §1 → ✅ |
19
- | 2026-06-11 | 你 | ⛔Gate1 批准一期规格:记一笔 / 列表 / 月度报表;多币种不做 | 一期-看板.md → ✅ |
20
- | 2026-06-10 | 你 | Bootstrap 结论:两仓(jz-web / jz-api),同一 Builder 端到端负责,按需调用三种 AI 视角,标准轨 | AGENTS.md §1 → ✅ |
@@ -1,20 +0,0 @@
1
- # 状态 · 产品
2
-
3
- > 只此域写,别人只读。倒序。hash 均为示意值(真项目必须可 `git cat-file` 核验)。
4
-
5
- ## 当前基线
6
-
7
- - 一期已收尾,待换期;二期候选:报表导出 CSV、SQLite 每日备份(看板挂账)
8
- - 线上版本:查 bus-check(不写在这里)
9
-
10
- ## 倒序日志
11
-
12
- - **2026-08-25** 工作包:协作骨架品牌迁移为 BuildBeat,canonical marker/文档入口完成换名,历史 Solobaton 记录保留 · 证据:decisions.md FLOW-BUILDBEAT-RENAME · ✅
13
- - **2026-08-22** 工作包:升级 Solobaton v1.16 CLI 生命周期预览 · candidate `meta e16c0de` · 证据:decisions.md FLOW-CLI-PREVIEW;模板零替换、写操作未开放 · ✅
14
- - **2026-08-22** 工作包:升级 Solobaton v1.15 仓库测试与路径健壮性补丁 · candidate `meta d15c0de` · 证据:decisions.md FLOW-UPSTREAM-TESTS;业务流程语义不变 · ✅
15
- - **2026-08-22** 工作包:升级 Solobaton v1.14 review-ready 与 reviewer 调用预算 · candidate `meta c14c0de` · 证据:decisions.md FLOW-REVIEW-READY + 一期-看板.md 核查口径 · ✅
16
- - **2026-08-22** 工作包:升级 Solobaton v1.13 任务/审批节奏并同步看板、决策与状态口径 · candidate `meta b13c0de` · 证据:decisions.md v1.13 行 + 一期-看板.md 工作包快照/决策收件箱 · ✅
17
- - **2026-08-22** 升级 Solobaton v1.12 核查节奏:高风险 delta 定向核 + 里程碑候选一次全核,历史不回改 · 证据:decisions.md 08-22 行 · ✅
18
- - **2026-06-20** 一期收尾记账:Gate4 拍板落台账、挂账 3 条移交看板 · 证据:decisions.md 06-20 行 · ✅
19
- - **2026-06-15** Gate2 组织真渲染走查,2 条修改意见拍板采纳 · 证据:decisions.md 06-15 行 · ✅
20
- - **2026-06-11** 一期立项:规格三条,Gate1 已批;设计 brief 已交(要求单 HTML 可渲染) · 证据:一期-看板.md 阶段① · ✅