baa-conductor

git clone 

commit
2ce8d18
parent
4796db4
author
im_wower
date
2026-03-26 01:31:27 +0800 CST
docs: refresh status and dependency decisions
5 files changed,  +44, -29
M DESIGN.md
+2, -1
 1@@ -220,8 +220,9 @@
 2 
 3 - `conductor-daemon` 和 runtime 脚本已经有 canonical 名字 `BAA_CONDUCTOR_PUBLIC_API_BASE` / `--public-api-base`,但仍保留 legacy 别名 `BAA_CONTROL_API_BASE` / `--control-api-base`
 4 - `conductor-daemon` 已承接 `/v1/status` 和 `/v1/status/ui`;`status-api` 退到显式 opt-in 的本地兼容包装层
 5-- 根验证入口已经落到 `pnpm lint` / `pnpm test`,工作区还补了 `pnpm smoke`;但 on-node `mini` 检查还没收成单独 wrapper
 6+- 根验证入口已经落到 `pnpm lint` / `pnpm test` / `pnpm smoke`,on-node `mini` 检查也已收口到 `pnpm verify:mini`
 7 - runtime 默认服务集合已经收口到 `conductor` + `codexd`;`status-api` 改成显式 opt-in 观察服务
 8+- `conductor-daemon` 当前仍通过 `status-api` 构建产物复用 snapshot/render 逻辑;删除 `status-api` 前需要先提共享模块
 9 - `conductor.makefile.so` 目前只回源 `conductor-daemon` 已有路由,尚未承接完整业务 API
10 - 线上和历史文档里仍可能残留 `control-api.makefile.so`、Cloudflare / D1 相关资产或表述
11 - 如果后续再次出现 app-server 未发出合法 `turn/completed` 就提前断流,应视为新的 child / transport 故障,而不是 reopen 已修复的 BUG-008 / BUG-010
M README.md
+3, -3
 1@@ -89,7 +89,7 @@ docs/
 2 - 所有新接口设计默认先落 `mini` 本地 `4317`
 3 - 所有新公网说明统一写 `conductor.makefile.so`
 4 - 只读状态视图的推荐入口已收口到 `conductor` 的 `/v1/status` 和 `/v1/status/ui`
 5-- `status-api` 只作为本地只读观察兼容层,不再作为默认对外业务接口
 6+- `status-api` 当前决定是继续保留为本地只读观察兼容层,不立即删除
 7 - `mini` on-node 静态+运行态检查统一入口是 `./scripts/runtime/verify-mini.sh`(仓库根可用 `pnpm verify:mini`)
 8 - 运行中的浏览器插件代码以 [`plugins/baa-firefox`](./plugins/baa-firefox) 为准
 9 - 当前正式浏览器 HTTP 面是 `/v1/browser/*`,只支持 Claude,且通过本地 `/ws/firefox` 转发到 Firefox 插件页面内 HTTP 代理
10@@ -122,14 +122,14 @@ legacy 兼容说明:
11 
12 - 保持 `mini` launchd、自启动和本地探针稳定
13 - 保持 `conductor.makefile.so -> 100.71.210.78:4317` 的链路稳定
14-- 把剩余 on-node 检查继续收口成更统一的入口
15 - 继续清理仍依赖 `4318` wrapper 的旧脚本、书签和文档
16+- 把 `conductor-daemon` 对 `status-api` 构建产物的复用提成共享模块
17 
18 ## 当前已知 gap
19 
20 - `verify-mini.sh` 只收口静态检查和运行态探针;会话级链路回归仍要单独跑 `pnpm smoke` 或 `./scripts/runtime/codexd-e2e-smoke.sh`
21 - `status-api` 已降为显式 opt-in 的本地只读兼容包装层;旧调用方仍可能继续依赖 `4318`
22-- `status-api` 和 `conductor /v1/status` 现在共享同一套状态拼装/渲染语义;后续如果要删 `status-api`,还需要先盘点残留调用方
23+- `status-api` 和 `conductor /v1/status` 现在共享同一套状态拼装/渲染语义;后续如果要删 `status-api`,还需要先清 `4318` 调用方,并拆掉当前构建时复用
24 
25 ## 本机能力层
26 
M docs/ops/README.md
+5, -4
 1@@ -5,7 +5,7 @@
 2 - `conductor.makefile.so` 是唯一公网域名
 3 - VPS Nginx 统一回源到 `mini` 的 `100.71.210.78:4317`
 4 - `mini` 本地 `4317` 是唯一主接口
 5-- `mini` 本地 `4318` 只作为迁移期的只读观察面
 6+- `mini` 本地 `4318` 只作为显式 opt-in 的兼容观察层
 7 
 8 旧的 `control-api` 域名、Cloudflare Worker 和 D1 已退出当前运维口径;默认 runbook 只写 `conductor.makefile.so`。
 9 
10@@ -44,7 +44,7 @@
11 | --- | --- | --- | --- |
12 | public primary | `https://conductor.makefile.so` | 唯一公网入口 | `GET /healthz` |
13 | local primary | `http://100.71.210.78:4317` | 真相源、on-node 调试 | `GET /healthz` |
14-| local status view | `http://100.71.210.78:4318` | 本地状态快照 / HTML 观察面 | `GET /healthz` |
15+| local status view | `http://100.71.210.78:4318` | 本地兼容状态包装层 | `GET /healthz` |
16 
17 最小排查顺序:
18 
19@@ -52,7 +52,8 @@
20 2. `curl https://conductor.makefile.so/readyz`
21 3. `curl https://conductor.makefile.so/rolez`
22 4. `curl https://conductor.makefile.so/v1/runtime`
23-5. 如需 on-node 观察,再看 `curl http://100.71.210.78:4318/v1/status`
24+5. 如需 on-node 状态观察,先看 `curl http://100.71.210.78:4317/v1/status`
25+6. 只有在排查兼容层时,再看 `curl http://100.71.210.78:4318/v1/status`
26 
27 ## 当前节点监听
28 
29@@ -129,7 +130,7 @@ ssh root@YOUR_VPS 'cd /tmp/baa-conductor-nginx && sudo ./deploy-on-vps.sh --relo
30 
31 - 浏览器、CLI、AI 和运维说明默认都只写 `conductor.makefile.so`
32 - Cloudflare Worker / D1 不再出现在默认运维 runbook
33-- `status-api` 只保留本地观察面,不承担公网暴露职责
34+- `status-api` 只保留本地兼容观察层,不承担公网暴露职责,也不再是默认运维入口
35 
36 ## 说明
37 
M plans/STATUS_SUMMARY.md
+24, -11
 1@@ -6,11 +6,10 @@
 2 
 3 ## 当前代码基线
 4 
 5-- 主线基线:`main@d7a83fd`
 6+- 主线基线:`main@4796db4`
 7 - 任务文档已统一收口到 `tasks/`
 8 - 当前活动任务见 `tasks/TASK_OVERVIEW.md`
 9-- `T-S001` 到 `T-S012` 已经合入主线
10-- 当前工作区已经落下 `T-S013`、`T-S014`,并继续补根级 `pnpm smoke`
11+- `T-S001` 到 `T-S016` 已经合入主线
12 
13 ## 当前状态
14 
15@@ -19,10 +18,11 @@
16 - canonical 公网入口:`https://conductor.makefile.so`
17 - 历史主备资料已从主线移除
18 - 回溯 tag:`ha-failover-archive-2026-03-22`
19-- `apps/control-api-worker` 目录当前工作区已不存在
20+- `apps/control-api-worker` 目录当前主线已不存在
21 - `ops/cloudflare/` 当前只剩 legacy README
22 - `tests/control-api/` 当前只剩一份 legacy absence smoke 测试文件
23 - `status-api` 当前默认读 `BAA_CONDUCTOR_LOCAL_API` / `4317`,`BAA_CONTROL_API_BASE` 只保留为兼容覆盖入口
24+- `status-api` 当前结论是继续保留为显式 opt-in 的本地兼容包装层,不立即删除
25 
26 ## 当前在线面
27 
28@@ -46,7 +46,7 @@
29 ## 最近完成
30 
31 - `T-S001`:`codexd` transport 现在会在关闭前冲刷尾部缓冲区,`BUG-010` 已修复,`BUG-008` 不再作为独立未解问题保留
32-- `T-S002`:legacy Worker / D1 入口已从当前工作区收口;`tests/control-api/**` 改为 absence smoke,`ops/cloudflare/**` 收敛到 legacy 说明
33+- `T-S002`:legacy Worker / D1 入口已从当前主线收口;`tests/control-api/**` 改为 absence smoke,`ops/cloudflare/**` 收敛到 legacy 说明
34 - `T-S003`:`status-api`、launchd 模板和 runtime 文档已切到当前 `conductor` 主接口,`BAA_CONTROL_API_BASE` 只保留为兼容覆盖
35 - `T-S004`:`conductor-daemon` 测试已统一通过 `withRuntimeFixture(...)` 收口 cleanup,`BUG-009` 已修复
36 - `T-S005`:默认 launchd 现在只把 `BAA_CONTROL_API_BASE` 写给 `conductor`;`status-api` 和 `worker-runner` 不再携带这个变量
37@@ -59,12 +59,24 @@
38 - `T-S012`:repo 模板、`install-mini.sh` 帮助文本、`pnpm-lock.yaml` 与 legacy smoke 已进一步收口到当前主线口径
39 - `T-S013`:`worker-runner` 已补包级 `test`,并接入根 `pnpm test`
40 - `T-S014`:runtime 默认服务集合已收口到 `conductor` + `codexd`,`status-api` 改为显式 opt-in
41-- 根级 `pnpm smoke` 已补进工作区,覆盖 runtime public-api compatibility、legacy absence、codexd e2e 和 browser-control e2e smoke
42+- `T-S015`:`mini` 节点 on-node 静态+运行态检查已收口到 `scripts/runtime/verify-mini.sh`,仓库根入口是 `pnpm verify:mini`
43+- `T-S016`:`conductor-daemon` 已承接 `/v1/status` 和 `/v1/status/ui`;`status-api` 降为 `4318` 上的兼容包装层
44+- 根级 `pnpm smoke` 已进主线,覆盖 runtime public-api compatibility、legacy absence、codexd e2e 和 browser-control e2e smoke
45 
46-## 下一步任务
47+## 4318 依赖盘点与结论
48 
49-- `T-S015`:给 `mini` 单节点补统一 on-node verify wrapper
50-- `T-S016`:收口 `status-api` 终局并给 `conductor` 提供兼容状态视图
51+当前仍直接依赖 `4318` / `status-api` 兼容层的内容,主要只剩 4 类:
52+
53+- 兼容 HTTP 合同:`apps/status-api` 继续保留 `/describe`、`/v1/status`、`/v1/status/ui`、`/ui`
54+- opt-in runtime/ops 面:`install-mini.sh --with-status-api`、`--service status-api`、`ops/launchd/so.makefile.baa-status-api.plist`
55+- 文档/runbook:`docs/runtime/**`、`docs/ops/README.md`、`README.md` 里仍明确说明如何启用和检查 `4318`
56+- 构建时复用:`apps/conductor-daemon/src/local-api.ts` 当前直接复用 `status-api` 的已构建 snapshot/render 逻辑,`apps/conductor-daemon/package.json` 因此依赖 `@baa-conductor/status-api build`
57+
58+当前结论:
59+
60+- `status-api` 继续保留为显式 opt-in 兼容层
61+- 现在不删除 `apps/status-api`
62+- 只有在清完 `4318` 调用方,并把 `conductor-daemon` 对 `status-api` 构建产物的复用提成共享模块之后,才适合讨论删除
63 
64 ## 当前仍需关注
65 
66@@ -73,5 +85,6 @@
67 - 仍保留的 `control-api` 命名已经限定在历史任务卡、legacy 测试路径、兼容变量名和外部残留资产说明里;如果未来要继续删旧,需要单独评估文件名和兼容面
68 - 如果未来新增 runtime 测试绕开 `withRuntimeFixture(...)`,同类 listener 泄漏仍可能重新出现
69 - 这次没有改 `ConductorRuntime.stop()` 内部逻辑;如果未来关闭路径本身阻塞,还需要单独补运行时层测试
70-- 根 `pnpm test` 现在已经覆盖 `worker-runner`;runtime / e2e 检查则由工作区里的 `pnpm smoke` 继续收口
71-- `status-api` 虽然已经退回 opt-in 本地只读观察面,但是否继续保留独立服务、还是并入 `conductor`,尚未收口
72+- 根 `pnpm test` 现在已经覆盖 `worker-runner`;runtime / e2e 检查则由 `pnpm smoke` 收口
73+- `pnpm verify:mini` 只收口 on-node 静态检查和运行态探针,不替代会话级 smoke
74+- `status-api` 的终局已经先收口到“保留为 opt-in 兼容层”;真正删除它之前,还要先清 `4318` 调用方并拆掉当前构建时复用
M tasks/TASK_OVERVIEW.md
+10, -10
 1@@ -9,7 +9,7 @@
 2 - `control-api.makefile.so`、Cloudflare Worker、D1 只剩迁移期 legacy 兼容残留和依赖盘点用途
 3 - `baa-hand` / `baa-shell` 只保留为接口语义参考,不再作为主系统维护
 4 - 当前任务卡都放在本目录
 5-- 当前任务基线:`main@d7a83fd`
 6+- 当前任务基线:`main@4796db4`
 7 
 8 ## 最近完成任务
 9 
10@@ -29,10 +29,13 @@
11 12. [`T-S012.md`](./T-S012.md):清理 repo 中最后一批 legacy 模板与残留 importer
12 13. [`T-S013.md`](./T-S013.md):给 `worker-runner` 补包级测试并接入根验证入口
13 14. [`T-S014.md`](./T-S014.md):把 `status-api` 从默认 runtime 服务集合里降为显式 opt-in
14+15. [`T-S015.md`](./T-S015.md):给 `mini` 单节点补统一 on-node verify wrapper
15+16. [`T-S016.md`](./T-S016.md):收口 `status-api` 终局并给 `conductor` 提供兼容状态视图
16 
17-当前工作区还在继续推进:
18+当前主线已经额外收口:
19 
20-- 根级 `pnpm smoke` 入口,覆盖 repo 内可自举的 runtime compatibility / legacy absence / codexd e2e / browser-control e2e smoke
21+- 根级 `pnpm smoke`,覆盖 repo 内可自举的 runtime compatibility / legacy absence / codexd e2e / browser-control e2e smoke
22+- 根级 `pnpm verify:mini`,作为 `mini` 节点 on-node 静态+运行态检查入口
23 
24 说明:
25 
26@@ -40,15 +43,12 @@
27 
28 ## 当前活动任务
29 
30-围绕剩余技术债,当前建议继续推进这 2 张任务卡:
31+当前没有进行中的任务卡。
32 
33-1. [`T-S015.md`](./T-S015.md):给 `mini` 单节点补统一 on-node verify wrapper
34-2. [`T-S016.md`](./T-S016.md):收口 `status-api` 终局并给 `conductor` 提供兼容状态视图
35+下一步建议优先处理两件事:
36 
37-说明:
38-
39-- `T-S015` 主要改 `scripts/runtime/**`、`docs/runtime/**`、`docs/ops/**` 和根脚本入口
40-- `T-S016` 主要改 `apps/conductor-daemon/`、`apps/status-api/`、`docs/api/**`、`docs/runtime/**`
41+1. 盘点并清理仍依赖 `4318` wrapper 的旧脚本、书签和运维说明
42+2. 把 `conductor-daemon` 目前对 `status-api` 构建产物的复用提成共享模块,再评估是否删除 `apps/status-api`
43 
44 ## 任务文档约定
45