- commit
- 6505a31
- parent
- f131cd6
- author
- im_wower
- date
- 2026-03-22 01:30:51 +0800 CST
Create fifth-wave task board
8 files changed,
+490,
-18
+43,
-0
1@@ -0,0 +1,43 @@
2+# 第五波统一开工说明
3+
4+第五波任务统一要求如下:
5+
6+- 所有任务必须从当前 `origin/main` 最新提交切分支
7+- 每个任务必须使用独立 worktree
8+- 新 worktree 第一次进入后先执行 `npx --yes pnpm install`
9+- 不允许从其他任务分支继续切分支
10+- 开始时把任务卡状态改为 `in_progress`
11+- 完成并推送后把任务卡状态改为 `review`
12+
13+推荐命令模板:
14+
15+```bash
16+git fetch origin
17+git switch main
18+git pull --ff-only origin main
19+git worktree add ../baa-conductor-TXXX -b feat/T-XXX-name main
20+cd ../baa-conductor-TXXX
21+npx --yes pnpm install
22+```
23+
24+每个实例启动后按顺序读:
25+
26+1. `DESIGN.md`
27+2. `coordination/TASK_OVERVIEW.md`
28+3. `coordination/WORKFLOW.md`
29+4. `coordination/tasks/T-XXX-*.md`
30+
31+第五波的目标不是再补单点入口,而是把这些入口串起来,推进到真正可联调的阶段:
32+
33+- control-api 的本地 D1 / smoke
34+- 多服务端到端 smoke
35+- 主备 failover rehearsal
36+- `baa-firefox` 的实际接线
37+- 节点侧 launchd / on-node 验证
38+
39+注意:
40+
41+- 当前仍然采用“内网走 Tailscale `100.x`,外网走二级域名”
42+- 当前仍不依赖 MagicDNS 名称
43+- `README.md`、`DESIGN.md`、根配置文件仍视为热点文件,非任务必要不要碰
44+- `T-026` 是跨仓库任务,目标仓库为 `/Users/george/code/baa/baa-firefox`
+15,
-12
1@@ -11,7 +11,7 @@
2 - `done`: 22
3 - `in_progress`: 0
4 - `blocked`: 0
5-- `todo`: 0
6+- `todo`: 5
7
8 ## 已完成
9
10@@ -42,20 +42,23 @@
11
12 ## 当前活动任务
13
14-- 无
15+- `T-023`
16+- `T-024`
17+- `T-025`
18+- `T-026`
19+- `T-027`
20
21 ## 下一步建议
22
23-- 当前主线已经具备:
24- - Cloudflare Worker / D1 配置模板
25- - conductor 本地 `healthz/readyz/rolez`
26- - status-api 宿主进程与 smoke
27- - launchd bootstrap/install/check/reload 脚本
28- - Nginx / Cloudflare DNS 自动化脚本
29-- 下一波建议直接做:
30- - `T-023` 端到端 smoke / failover 联调
31- - `T-024` `baa-firefox` 实际接线
32- - 如有需要,再拆 `T-025` 真实 Cloudflare / VPS 上线操作清单
33+- 第五波优先把“可部署”推进到“可联调、可接浏览器、可做故障演练”:
34+ - control-api 本地 D1 / smoke
35+ - 端到端 smoke harness
36+ - failover rehearsal 与运维 runbook
37+ - `baa-firefox` 实际接线
38+ - launchd 节点验证
39+- 第五波完成后再开:
40+ - `T-028` 真实 Cloudflare / VPS 上线执行
41+ - `T-029` 多节点长时间稳定性回归
42
43 ## 需要整合者关注的点
44
+16,
-6
1@@ -44,20 +44,30 @@
2
3 ## 4. 当前活动任务
4
5-当前没有活动任务。
6+第五波任务已经创建,可以直接并行启动。
7
8-第四波启动说明保留在:
9+第五波统一要求见:
10+
11+- [`FIFTH_WAVE_START.md`](./FIFTH_WAVE_START.md)
12+
13+第四波启动说明仍保留在:
14
15 - [`FOURTH_WAVE_START.md`](./FOURTH_WAVE_START.md)
16
17 ## 5. 当前活动任务矩阵
18
19-当前为空。
20+| Task | 标题 | 状态 | 分支 | 依赖 | 主要写入范围 |
21+| --- | --- | --- | --- | --- | --- |
22+| `T-023` | Control API 本地 D1 与 smoke | `todo` | `feat/T-023-control-api-smoke` | `T-018` | `apps/control-api-worker/**`, `tests/control-api/**`, `scripts/cloudflare/**` |
23+| `T-024` | 端到端 smoke harness | `todo` | `feat/T-024-e2e-smoke` | `T-019`, `T-020`, `T-021`, `T-022` | `tests/e2e/**`, `scripts/smoke/**` |
24+| `T-025` | Failover rehearsal 与 Runbook | `todo` | `feat/T-025-failover-rehearsal` | `T-019`, `T-021`, `T-022` | `docs/ops/**`, `scripts/failover/**` |
25+| `T-026` | `baa-firefox` 实际接线 | `todo` | `feat/T-026-firefox-integration` | `T-018`, `T-019`, `T-020` | `baa-firefox` 仓库内插件文件 |
26+| `T-027` | launchd 节点验证与 On-Node 检查 | `todo` | `feat/T-027-node-verification` | `T-019`, `T-020`, `T-021` | `docs/runtime/**`, `scripts/runtime/**` |
27
28-下一批建议直接新开:
29+第五波之后,建议再单独开:
30
31-- `T-023` 端到端 smoke / failover 联调
32-- `T-024` `baa-firefox` 实际接线
33+- `T-028` 真实 Cloudflare / VPS 上线执行
34+- `T-029` 多节点长时间稳定性回归
35
36 ## 6. 已归档任务
37
1@@ -0,0 +1,84 @@
2+---
3+task_id: T-023
4+title: Control API 本地 D1 与 smoke
5+status: todo
6+branch: feat/T-023-control-api-smoke
7+repo: /Users/george/code/baa-conductor
8+base_ref: main
9+depends_on:
10+ - T-018
11+write_scope:
12+ - apps/control-api-worker/**
13+ - tests/control-api/**
14+ - scripts/cloudflare/**
15+updated_at: 2026-03-22
16+---
17+
18+# T-023 Control API 本地 D1 与 smoke
19+
20+## 目标
21+
22+把 `control-api-worker` 从“有 Worker / D1 配置模板”推进到“能在本地做最小 D1 绑定与 smoke 验证”的程度。
23+
24+## 本任务包含
25+
26+- 在 `apps/control-api-worker/**` 内补本地 dev / smoke 入口
27+- 在 `tests/control-api/**` 下补最小 smoke 或集成测试
28+- 如有需要,在 `scripts/cloudflare/**` 下补本地准备脚本
29+- 验证 control-api 在本地 D1 / mock D1 条件下的最小读写闭环
30+
31+## 本任务不包含
32+
33+- 修改 conductor-daemon
34+- 修改 status-api
35+- 真实线上 Cloudflare deploy
36+- 修改 `packages/db/**`
37+
38+## 建议起始文件
39+
40+- `apps/control-api-worker/wrangler.jsonc`
41+- `apps/control-api-worker/src/index.ts`
42+- `apps/control-api-worker/src/runtime.ts`
43+- `tests/control-api/`
44+
45+## 交付物
46+
47+- 本地 smoke 路径
48+- 最小 control-api 集成测试
49+- 更明确的本地 D1 准备方式
50+
51+## 验收
52+
53+- `npx --yes pnpm --filter @baa-conductor/control-api-worker typecheck`
54+- `npx --yes pnpm --filter @baa-conductor/control-api-worker build`
55+- 能说明如何在本地跑 control-api smoke
56+
57+## 更新要求
58+
59+完成时更新 frontmatter 的:
60+
61+- `status`
62+- `base_ref`
63+- `updated_at`
64+
65+并补充下面这些内容:
66+
67+## files_changed
68+
69+- 待填写
70+
71+## commands_run
72+
73+- 待填写
74+
75+## result
76+
77+- 待填写
78+
79+## risks
80+
81+- 待填写
82+
83+## next_handoff
84+
85+- 待填写
+85,
-0
1@@ -0,0 +1,85 @@
2+---
3+task_id: T-024
4+title: 端到端 smoke harness
5+status: todo
6+branch: feat/T-024-e2e-smoke
7+repo: /Users/george/code/baa-conductor
8+base_ref: main
9+depends_on:
10+ - T-019
11+ - T-020
12+ - T-021
13+ - T-022
14+write_scope:
15+ - tests/e2e/**
16+ - scripts/smoke/**
17+updated_at: 2026-03-22
18+---
19+
20+# T-024 端到端 smoke harness
21+
22+## 目标
23+
24+补一套可重复运行的端到端 smoke harness,把本地起服务、探活、状态读取和最小主备流程串起来。
25+
26+## 本任务包含
27+
28+- 在 `tests/e2e/**` 下补最小端到端 smoke
29+- 在 `scripts/smoke/**` 下补启动 / 检查辅助脚本
30+- 把 conductor、status-api、control-api 的最小读取面串起来
31+- 输出可重复执行的 smoke 流程
32+
33+## 本任务不包含
34+
35+- 修改 `apps/control-api-worker/**`
36+- 修改 `apps/conductor-daemon/**`
37+- 修改 `apps/status-api/**`
38+- 真实线上部署
39+
40+## 建议起始文件
41+
42+- `tests/e2e/`
43+- `scripts/smoke/`
44+- `docs/ops/README.md`
45+
46+## 交付物
47+
48+- 本地 smoke harness
49+- 一套明确的启动与验证步骤
50+- 可供后续 failover 演练复用的基础流程
51+
52+## 验收
53+
54+- 如果新增 shell 脚本:`bash -n scripts/smoke/*.sh`
55+- `git diff --check`
56+- 能说明如何一键或半自动执行 smoke
57+
58+## 更新要求
59+
60+完成时更新 frontmatter 的:
61+
62+- `status`
63+- `base_ref`
64+- `updated_at`
65+
66+并补充下面这些内容:
67+
68+## files_changed
69+
70+- 待填写
71+
72+## commands_run
73+
74+- 待填写
75+
76+## result
77+
78+- 待填写
79+
80+## risks
81+
82+- 待填写
83+
84+## next_handoff
85+
86+- 待填写
1@@ -0,0 +1,80 @@
2+---
3+task_id: T-025
4+title: Failover rehearsal 与 Runbook
5+status: todo
6+branch: feat/T-025-failover-rehearsal
7+repo: /Users/george/code/baa-conductor
8+base_ref: main
9+depends_on:
10+ - T-019
11+ - T-021
12+ - T-022
13+write_scope:
14+ - docs/ops/**
15+ - scripts/failover/**
16+updated_at: 2026-03-22
17+---
18+
19+# T-025 Failover rehearsal 与 Runbook
20+
21+## 目标
22+
23+把当前主备设计推进到“有可执行 rehearsal 步骤和清晰运维 runbook”的程度。
24+
25+## 本任务包含
26+
27+- 在 `scripts/failover/**` 下补 failover rehearsal 辅助脚本
28+- 在 `docs/ops/**` 下补 planned failover / emergency failover / switchback runbook
29+- 把 Tailscale `100.x`、公网域名、launchd、Nginx 的配合关系写清楚
30+
31+## 本任务不包含
32+
33+- 修改 app 业务代码
34+- 真实执行线上 failover
35+- 修改 `baa-firefox`
36+
37+## 建议起始文件
38+
39+- `docs/ops/README.md`
40+- `scripts/failover/`
41+
42+## 交付物
43+
44+- 可执行或半自动的 rehearsal 辅助脚本
45+- 清晰的 failover 运维手册
46+
47+## 验收
48+
49+- 如果新增 shell 脚本:`bash -n scripts/failover/*.sh`
50+- `git diff --check`
51+- 文档里明确 planned / emergency / switchback 三种路径
52+
53+## 更新要求
54+
55+完成时更新 frontmatter 的:
56+
57+- `status`
58+- `base_ref`
59+- `updated_at`
60+
61+并补充下面这些内容:
62+
63+## files_changed
64+
65+- 待填写
66+
67+## commands_run
68+
69+- 待填写
70+
71+## result
72+
73+- 待填写
74+
75+## risks
76+
77+- 待填写
78+
79+## next_handoff
80+
81+- 待填写
1@@ -0,0 +1,86 @@
2+---
3+task_id: T-026
4+title: baa-firefox 实际接线
5+status: todo
6+branch: feat/T-026-firefox-integration
7+repo: /Users/george/code/baa/baa-firefox
8+base_ref: main
9+depends_on:
10+ - T-018
11+ - T-019
12+ - T-020
13+write_scope:
14+ - background.js
15+ - controller.html
16+ - controller.js
17+ - content-script.js
18+ - docs/**
19+updated_at: 2026-03-22
20+---
21+
22+# T-026 baa-firefox 实际接线
23+
24+## 目标
25+
26+把 `baa-firefox` 从“已有协议与大部分基础能力”推进到“真正能读取 conductor 状态并执行 pause / resume / drain”的程度。
27+
28+## 本任务包含
29+
30+- 在 `baa-firefox` 仓库里把插件接到 `baa-conductor` 的控制面
31+- 读取 system state、leader、queue 基本信息
32+- 提供 pause / resume / drain 的实际调用
33+- 给可见 control 面板或 Claude 页面加最小可见入口
34+
35+## 本任务不包含
36+
37+- 修改 `baa-conductor` 仓库代码
38+- 重做整个插件架构
39+- 自动化完整浏览器工作流
40+
41+## 建议起始文件
42+
43+- `/Users/george/code/baa/baa-firefox/background.js`
44+- `/Users/george/code/baa/baa-firefox/controller.html`
45+- `/Users/george/code/baa/baa-firefox/controller.js`
46+- `/Users/george/code/baa/baa-firefox/content-script.js`
47+
48+## 交付物
49+
50+- 插件真实读取 `system/state`
51+- 插件真实发送 `pause` / `resume` / `drain`
52+- 最小 UI 与状态文案
53+
54+## 验收
55+
56+- `baa-firefox` 仓库内的最小本地构建或静态校验通过
57+- 能说明如何在浏览器里验证控制动作
58+
59+## 更新要求
60+
61+完成时更新 frontmatter 的:
62+
63+- `status`
64+- `base_ref`
65+- `updated_at`
66+
67+并补充下面这些内容:
68+
69+## files_changed
70+
71+- 待填写
72+
73+## commands_run
74+
75+- 待填写
76+
77+## result
78+
79+- 待填写
80+
81+## risks
82+
83+- 待填写
84+
85+## next_handoff
86+
87+- 待填写
1@@ -0,0 +1,81 @@
2+---
3+task_id: T-027
4+title: launchd 节点验证与 On-Node 检查
5+status: todo
6+branch: feat/T-027-node-verification
7+repo: /Users/george/code/baa-conductor
8+base_ref: main
9+depends_on:
10+ - T-019
11+ - T-020
12+ - T-021
13+write_scope:
14+ - docs/runtime/**
15+ - scripts/runtime/**
16+updated_at: 2026-03-22
17+---
18+
19+# T-027 launchd 节点验证与 On-Node 检查
20+
21+## 目标
22+
23+把当前 launchd/bootstrap 脚本推进到“有更贴近真实节点的 on-node 检查和验证流程”的程度。
24+
25+## 本任务包含
26+
27+- 在 `scripts/runtime/**` 下补 on-node 检查脚本
28+- 在 `docs/runtime/**` 下补 mini / mac 节点验证步骤
29+- 覆盖本地端口、`healthz/readyz/rolez`、status-api 宿主进程、日志路径等检查点
30+
31+## 本任务不包含
32+
33+- 修改 app 业务代码
34+- 真实加载 launchd 服务
35+- 修改 Nginx / DNS
36+
37+## 建议起始文件
38+
39+- `docs/runtime/launchd.md`
40+- `docs/runtime/README.md`
41+- `scripts/runtime/check-launchd.sh`
42+
43+## 交付物
44+
45+- 更接近真实节点操作的验证脚本
46+- 明确的 mini / mac 验证清单
47+
48+## 验收
49+
50+- 如果新增 shell 脚本:`bash -n scripts/runtime/*.sh`
51+- `git diff --check`
52+- 文档里明确 mini 与 mac 的 on-node 检查顺序
53+
54+## 更新要求
55+
56+完成时更新 frontmatter 的:
57+
58+- `status`
59+- `base_ref`
60+- `updated_at`
61+
62+并补充下面这些内容:
63+
64+## files_changed
65+
66+- 待填写
67+
68+## commands_run
69+
70+- 待填写
71+
72+## result
73+
74+- 待填写
75+
76+## risks
77+
78+- 待填写
79+
80+## next_handoff
81+
82+- 待填写