baa-conductor


baa-conductor / tasks / archive
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- 剩余哪些关闭路径风险仍未覆盖