- commit
- 0b59439
- parent
- 2c49c93
- author
- im_wower
- date
- 2026-03-22 02:21:14 +0800 CST
Create final-stage rollout tasks
5 files changed,
+260,
-18
+43,
-0
1@@ -0,0 +1,43 @@
2+# 最后收口阶段开工说明
3+
4+当前不再继续按“大波次”拆分。
5+
6+后续工作聚焦两个真实环境任务:
7+
8+- `T-028` 真实 Cloudflare / VPS 上线执行
9+- `T-029` 多节点长时间稳定性回归
10+
11+统一要求:
12+
13+- 所有任务必须从当前 `origin/main` 最新提交切分支
14+- 每个任务必须使用独立 worktree
15+- 新 worktree 第一次进入后先执行 `npx --yes pnpm install`
16+- 不允许从其他任务分支继续切分支
17+- 开始时把任务卡状态改为 `in_progress`
18+- 完成并推送后把任务卡状态改为 `review`
19+
20+推荐命令模板:
21+
22+```bash
23+git fetch origin
24+git switch main
25+git pull --ff-only origin main
26+git worktree add ../baa-conductor-TXXX -b feat/T-XXX-name main
27+cd ../baa-conductor-TXXX
28+npx --yes pnpm install
29+```
30+
31+每个实例启动后按顺序读:
32+
33+1. `DESIGN.md`
34+2. `coordination/TASK_OVERVIEW.md`
35+3. `coordination/WORKFLOW.md`
36+4. `coordination/tasks/T-XXX-*.md`
37+
38+注意:
39+
40+- 当前仍然采用“内网走 Tailscale `100.x`,外网走二级域名”
41+- 当前仍不依赖 MagicDNS 名称
42+- `README.md`、`DESIGN.md`、根配置文件仍视为热点文件,非任务必要不要碰
43+- `T-028` 允许执行真实 Cloudflare / VPS / launchd 操作,但必须把实际变更、执行命令和结果写回任务卡
44+- `T-029` 默认基于 `T-028` 已完成的环境执行;如果 `T-028` 未结束,可先准备脚本和观察项,但不要伪造真实回归结果
+4,
-3
1@@ -11,7 +11,7 @@
2 - `done`: 27
3 - `in_progress`: 0
4 - `blocked`: 0
5-- `todo`: 0
6+- `todo`: 2
7
8 ## 已完成
9
10@@ -47,11 +47,12 @@
11
12 ## 当前活动任务
13
14-- 无
15+- `T-028`
16+- `T-029`
17
18 ## 下一步建议
19
20-- 第五波已完成,当前优先进入真实环境收口:
21+- 当前进入最后收口阶段:
22 - `T-028` 真实 Cloudflare / VPS 上线执行
23 - `T-029` 多节点长时间稳定性回归
24
+14,
-15
1@@ -44,28 +44,27 @@
2
3 ## 4. 当前活动任务
4
5-当前没有活动任务。
6+当前进入最后收口阶段。
7
8-第五波已经完成,交付包括:
9+统一要求见:
10
11-- `T-023` control-api 本地 D1 与 smoke
12-- `T-024` 端到端 smoke harness
13-- `T-025` failover rehearsal 与 runbook
14-- `T-026` `baa-firefox` 实际接线
15-- `T-027` launchd 节点验证与 on-node 检查
16+- [`FINAL_STAGE_START.md`](./FINAL_STAGE_START.md)
17
18-第五波启动说明仍保留在:
19+## 5. 当前活动任务矩阵
20
21-- [`FIFTH_WAVE_START.md`](./FIFTH_WAVE_START.md)
22+| Task | 标题 | 状态 | 分支 | 依赖 | 主要写入范围 |
23+| --- | --- | --- | --- | --- | --- |
24+| `T-028` | 真实 Cloudflare / VPS 上线执行 | `todo` | `feat/T-028-real-rollout` | `T-018`..`T-027` 的部署与联调成果 | `docs/ops/**`, `docs/runtime/**`, `ops/nginx/**`, `apps/control-api-worker/**`, `scripts/ops/**`, `scripts/runtime/**` |
25+| `T-029` | 多节点长时间稳定性回归 | `todo` | `feat/T-029-stability-regression` | `T-028` | `docs/ops/**`, `docs/runtime/**`, `tests/e2e/**`, `scripts/smoke/**`, `scripts/failover/**`, `scripts/runtime/**` |
26
27-## 5. 下一步建议
28+## 6. 下一步建议
29
30-当前建议不再继续按“大波次”拆分,优先做真实环境收口:
31+当前优先做真实环境收口:
32
33-- `T-028` 真实 Cloudflare / VPS 上线执行
34-- `T-029` 多节点长时间稳定性回归
35+- `T-028` 先完成真实 Cloudflare / VPS / mini / mac 上线
36+- `T-029` 再做多节点长时间稳定性回归
37
38-## 6. 已归档任务
39+## 7. 已归档任务
40
41 - `T-001` 仓库骨架
42 - `T-002` D1 Schema 与 Migrations
43@@ -95,7 +94,7 @@
44 - `T-026` `baa-firefox` 实际接线
45 - `T-027` launchd 节点验证与 On-Node 检查
46
47-## 7. 汇总方式
48+## 8. 汇总方式
49
50 - 每个任务的详细状态在对应任务卡中
51 - 全局汇总在 [`STATUS_SUMMARY.md`](./STATUS_SUMMARY.md)
+105,
-0
1@@ -0,0 +1,105 @@
2+---
3+task_id: T-028
4+title: 真实 Cloudflare / VPS 上线执行
5+status: todo
6+branch: feat/T-028-real-rollout
7+repo: /Users/george/code/baa-conductor
8+base_ref: main
9+depends_on:
10+ - T-018
11+ - T-019
12+ - T-020
13+ - T-021
14+ - T-022
15+ - T-023
16+ - T-024
17+ - T-025
18+ - T-027
19+write_scope:
20+ - docs/ops/**
21+ - docs/runtime/**
22+ - ops/nginx/**
23+ - apps/control-api-worker/**
24+ - scripts/ops/**
25+ - scripts/runtime/**
26+updated_at: 2026-03-22
27+---
28+
29+# T-028 真实 Cloudflare / VPS 上线执行
30+
31+## 目标
32+
33+把当前已经完成的本地联调骨架真正部署到 Cloudflare、VPS、mini、mac,并形成一套可复查的上线记录。
34+
35+## 本任务包含
36+
37+- 使用当前 Cloudflare token / wrangler / D1 配置完成 control-api 真实部署
38+- 使用当前 DNS 脚本或命令把二级域名切到预期入口
39+- 在 VPS 上落地 Nginx 配置并完成校验 / reload
40+- 在 mini / mac 上落地 runtime 目录、launchd 安装与基础探活
41+- 把真实环境 URL、端口、角色、检查结果写回文档与任务卡
42+
43+## 本任务不包含
44+
45+- 重写应用架构
46+- 修改 `baa-firefox` 仓库
47+- 长时间稳定性结论
48+
49+## 建议起始文件
50+
51+- `docs/ops/README.md`
52+- `docs/runtime/README.md`
53+- `ops/nginx/baa-conductor.conf`
54+- `apps/control-api-worker/wrangler.jsonc`
55+- `scripts/ops/cloudflare-dns-plan.sh`
56+- `scripts/runtime/install-launchd.sh`
57+
58+## 交付物
59+
60+- 真实可访问的 control-api / status-api / conductor 入口
61+- VPS、mini、mac 的上线执行记录
62+- 更新后的运维文档与上线注意事项
63+
64+## 验收
65+
66+- 能说明 control-api 的真实外网入口和至少一个内网入口
67+- 能说明 VPS 上 Nginx 已完成校验与 reload
68+- 能说明 mini / mac 节点至少完成一次 on-node 探活
69+- `git diff --check`
70+
71+## 更新要求
72+
73+完成时更新 frontmatter 的:
74+
75+- `status`
76+- `base_ref`
77+- `updated_at`
78+
79+并补充下面这些内容:
80+
81+## files_changed
82+
83+- 待填写
84+
85+## commands_run
86+
87+- 待填写
88+
89+## result
90+
91+- 待填写
92+
93+## risks
94+
95+- 待填写
96+
97+## next_handoff
98+
99+- 待填写
100+
101+开始时建议直接把 `status` 改为 `in_progress`。
102+
103+做完并推送后:
104+
105+- 如果等待整合,改为 `review`
106+- 如果确认结束,改为 `done`
1@@ -0,0 +1,94 @@
2+---
3+task_id: T-029
4+title: 多节点长时间稳定性回归
5+status: todo
6+branch: feat/T-029-stability-regression
7+repo: /Users/george/code/baa-conductor
8+base_ref: main
9+depends_on:
10+ - T-028
11+write_scope:
12+ - docs/ops/**
13+ - docs/runtime/**
14+ - tests/e2e/**
15+ - scripts/smoke/**
16+ - scripts/failover/**
17+ - scripts/runtime/**
18+updated_at: 2026-03-22
19+---
20+
21+# T-029 多节点长时间稳定性回归
22+
23+## 目标
24+
25+在真实 mini / mac / VPS / Cloudflare 环境上完成一轮长时间稳定性回归,确认主备、探活、控制面和 smoke 脚本在真实环境下可持续工作。
26+
27+## 本任务包含
28+
29+- 基于 `T-028` 已上线环境跑多轮 smoke / failover / 恢复
30+- 记录长时间运行期间的 `healthz`、`readyz`、`rolez`、`/v1/system/state`、`/v1/status`
31+- 至少覆盖一次 planned failover 和一次 switchback
32+- 把异常、抖动、人工干预点和最终结论写入回归报告
33+
34+## 本任务不包含
35+
36+- 重新部署 Cloudflare / VPS
37+- 重写 control-api / conductor / status-api 代码
38+- 修改 `baa-firefox` 仓库
39+
40+## 建议起始文件
41+
42+- `tests/e2e/smoke.test.mjs`
43+- `scripts/smoke/run-e2e.sh`
44+- `scripts/failover/rehearsal-check.sh`
45+- `scripts/runtime/check-node.sh`
46+- `docs/ops/README.md`
47+
48+## 交付物
49+
50+- 一份真实环境稳定性回归记录
51+- 一份 failover / switchback 实测结果
52+- 必要时更新后的 smoke / failover / on-node 文档
53+
54+## 验收
55+
56+- 能给出至少一轮真实环境 smoke 结果
57+- 能给出至少一次 failover 和一次 switchback 的结果
58+- `git diff --check`
59+
60+## 更新要求
61+
62+完成时更新 frontmatter 的:
63+
64+- `status`
65+- `base_ref`
66+- `updated_at`
67+
68+并补充下面这些内容:
69+
70+## files_changed
71+
72+- 待填写
73+
74+## commands_run
75+
76+- 待填写
77+
78+## result
79+
80+- 待填写
81+
82+## risks
83+
84+- 待填写
85+
86+## next_handoff
87+
88+- 待填写
89+
90+开始时建议直接把 `status` 改为 `in_progress`。
91+
92+做完并推送后:
93+
94+- 如果等待整合,改为 `review`
95+- 如果确认结束,改为 `done`