im_wower
·
2026-03-28
T-S007.md
1# Task T-S007:补 `ConductorRuntime.stop()` 关闭路径专项测试
2
3## 直接给对话的提示词
4
5读 `/Users/george/code/baa-conductor/tasks/archive/T-S007.md` 任务文档,完成开发任务。
6
7如需补背景,再读:
8
9- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.ts`
10- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
11- `/Users/george/code/baa-conductor/bugs/BUG-009-conductor-daemon-index-test-leaks-local-listener.md`
12
13## 当前基线
14
15- 仓库:`/Users/george/code/baa-conductor`
16- 分支:`main`
17- 提交:`1078d2b`
18- 开工要求:不要从其他任务分支切出;如需新分支,从当前 `main` 新切
19
20## 建议分支名
21
22- `test/runtime-stop-close-path`
23
24## 目标
25
26给 `ConductorRuntime.stop()` 自身补专项测试,覆盖关闭路径的关键行为,而不是只依赖测试层的 `withRuntimeFixture(...)` 收口。
27
28## 背景
29
30- `BUG-009` 已经在测试层通过 `withRuntimeFixture(...)` 收口 cleanup。
31- 但当前剩余风险仍然存在:如果未来 `ConductorRuntime.stop()` 内部关闭逻辑阻塞或异常,现有测试层 helper 只能保证“会调用 stop”,不能证明 stop 自身正确。
32- 现在需要补 runtime 层的专项回归,缩小这个盲区。
33
34## 涉及仓库
35
36- `/Users/george/code/baa-conductor`
37
38## 范围
39
40- 给 `ConductorRuntime.stop()` 增加关闭路径测试
41- 必要时做最小修复,但不要扩散成大重构
42- 回写 `BUG-009` 剩余风险说明
43
44## 路径约束
45
46- 优先补测试;只有测出真实问题时才做最小代码修复。
47- 不改 codexd、status-api 或 browser bridge 逻辑。
48
49## 推荐实现边界
50
51建议优先覆盖:
52
53- 启动后正常 stop,listener 真的释放
54- 异常路径或重复 stop,不会残留资源
55- 关闭后端口/HTTP 入口确实不可用
56
57## 允许修改的目录
58
59- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.ts`
60- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
61- `/Users/george/code/baa-conductor/bugs/BUG-009-conductor-daemon-index-test-leaks-local-listener.md`
62
63## 尽量不要修改
64
65- `/Users/george/code/baa-conductor/apps/codexd/`
66- `/Users/george/code/baa-conductor/apps/status-api/`
67- `/Users/george/code/baa-conductor/docs/runtime/`
68- `/Users/george/code/baa-conductor/tests/control-api/`
69
70## 必须完成
71
72### 1. 补 stop 专项测试
73
74- 明确覆盖 `ConductorRuntime.stop()` 的正常关闭路径
75- 至少有一条断言能证明 stop 后 listener 已释放
76
77### 2. 覆盖边界情况
78
79- 评估并测试重复 stop 或关闭时异常路径
80- 不要求做复杂 fault injection,但要覆盖最关键的资源释放边界
81
82### 3. 回写剩余风险
83
84- 如果 stop 自身没有 bug,要在结果里明确说明现有覆盖边界
85- 如果发现 runtime 层真实缺陷,做最小修复并写清根因
86
87## 需要特别注意
88
89- 这不是再修一次 `withRuntimeFixture(...)`
90- 不要把任务扩展成整个 runtime 生命周期重构
91- 与其它并行任务不要共享 `docs/runtime/**`
92
93## 验收标准
94
95- `ConductorRuntime.stop()` 有明确的专项回归覆盖
96- stop 后 listener / 端口不可继续访问
97- 如有修复,范围控制在 runtime 关闭路径本身
98- `git diff --check` 通过
99
100## 推荐验证命令
101
102- `npx --yes pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon test`
103- `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
104- `git -C /Users/george/code/baa-conductor diff --check`
105
106## 交付要求
107
108完成后请说明:
109
110- 修改了哪些文件
111- 新增了哪些 `stop()` 关闭路径测试
112- 是否发现 runtime 层真实缺陷
113- 跑了哪些测试
114- 剩余哪些关闭路径风险仍未覆盖