baa-conductor

git clone 

commit
6c0b602
parent
d58f880
author
im_wower
date
2026-03-28 02:22:42 +0800 CST
chore: archive completed baa bug tasks
11 files changed,  +146, -4
M bugs/README.md
+5, -3
 1@@ -13,9 +13,7 @@ bugs/
 2 
 3 ## 待修复
 4 
 5-- `BUG-018`:[`BUG-018-preflight-batch-fail-closed.md`](./BUG-018-preflight-batch-fail-closed.md)
 6-- `BUG-019`:[`BUG-019-unterminated-baa-block-throws.md`](./BUG-019-unterminated-baa-block-throws.md)
 7-- `BUG-020`:[`BUG-020-inmemory-deduper-unbounded.md`](./BUG-020-inmemory-deduper-unbounded.md)
 8+- `BUG-022`:[`BUG-022-final-message-claude-missing.md`](./BUG-022-final-message-claude-missing.md)
 9 - `MISSING-003`:[`MISSING-003-browser-target-blocked-in-phase1.md`](./MISSING-003-browser-target-blocked-in-phase1.md)
10 - `OPT-002`:[`OPT-002-executor-timeout.md`](./OPT-002-executor-timeout.md)
11 - `OPT-003`:[`OPT-003-policy-configurable.md`](./OPT-003-policy-configurable.md)
12@@ -37,6 +35,10 @@ bugs/
13 | BUG-015 | CLOSED | SSE 实现已存在,误报 |
14 | BUG-016 | CLOSED | headers 透传已存在,误报 |
15 | BUG-017 | FIXED | buffered SSE 返回原始文本 |
16+| BUG-018 | FIXED | preflight denied 不再拖死整批合法指令 |
17+| BUG-019 | FIXED | 未闭合 baa block 不再让整条消息失败 |
18+| BUG-020 | FIXED | in-memory deduper 已增加上限与淘汰 |
19+| BUG-021 | FIXED | buffered SSE full_text 只保留文本 |
20 | MISSING-001 | FIXED | 执行结果已经接到 AI 对话 delivery 主链 |
21 | MISSING-002 | FIXED | 插件侧 delivery plan 执行器已落地 |
22 | OPT-001 | — | action_result 命名风格等代码质量建议 |
R bugs/BUG-018-preflight-batch-fail-closed.md => bugs/archive/BUG-018-preflight-batch-fail-closed.md
+10, -0
 1@@ -1,5 +1,15 @@
 2 # BUG-018: preflight 整批失败 — 一条坏指令杀死所有并行指令
 3 
 4+## 状态
 5+
 6+- 已修复(2026-03-28,代码已合入主线)
 7+
 8+## 当前代码结论
 9+
10+- `preflight` 现在会收集 `routed` 与 `denied`,不再对首条拒绝直接抛出整批异常
11+- 合法指令会继续执行,结构化结果中会保留 `denied`
12+- 如果整批全为 denied,当前会明确返回 `denied_only`
13+
14 > 提交者:Claude(代码审查)
15 > 日期:2026-03-27
16 
R bugs/BUG-019-unterminated-baa-block-throws.md => bugs/archive/BUG-019-unterminated-baa-block-throws.md
+10, -0
 1@@ -1,5 +1,15 @@
 2 # BUG-019: 未关闭的 baa 代码块导致整条消息处理失败
 3 
 4+## 状态
 5+
 6+- 已修复(2026-03-28,代码已合入主线)
 7+
 8+## 当前代码结论
 9+
10+- 未闭合的 ````baa` block 现在会被忽略,不再抛出全局异常
11+- 同一条消息里已闭合的合法 `baa` block 仍会正常提取
12+- 当前没有额外 warning / metric,这属于后续可观测性增强项
13+
14 > 提交者:Claude(代码审查)
15 > 日期:2026-03-27
16 
R bugs/BUG-020-inmemory-deduper-unbounded.md => bugs/archive/BUG-020-inmemory-deduper-unbounded.md
+10, -0
 1@@ -1,5 +1,15 @@
 2 # BUG-020: InMemory 去重器无上限,长期运行内存泄漏
 3 
 4+## 状态
 5+
 6+- 已修复(2026-03-28,代码已合入主线)
 7+
 8+## 当前代码结论
 9+
10+- `InMemoryBaaInstructionDeduper` 已增加上限与淘汰
11+- `InMemoryBaaLiveInstructionMessageDeduper` 已增加上限与淘汰
12+- 当前策略保持简单 FIFO 式收口,目标是先避免常驻进程无限增长
13+
14 > 提交者:Claude(代码审查)
15 > 日期:2026-03-27
16 
R bugs/BUG-021-buffered-sse-fulltext-metadata-pollution.md => bugs/archive/BUG-021-buffered-sse-fulltext-metadata-pollution.md
+10, -0
 1@@ -1,5 +1,15 @@
 2 # BUG-021: buffered SSE full_text 拼接混入元数据
 3 
 4+## 状态
 5+
 6+- 已修复(2026-03-28,代码已合入主线)
 7+
 8+## 当前代码结论
 9+
10+- `full_text` 现在只从明确的文本字段白名单提取
11+- Claude completion 最后一个空 `completion` 事件不再触发递归扫全字段
12+- 当前白名单覆盖的是已知事件形状;后续新增文本路径时需要同步补测试
13+
14 > 提交者:Claude(新手测试)
15 > 日期:2026-03-27
16 
A bugs/archive/README.md
+13, -0
 1@@ -0,0 +1,13 @@
 2+# 缺陷归档
 3+
 4+本目录保留 `已关闭` 或 `已修复` 的 `BUG-*`、`FIX-BUG-*`、`MISSING-*` 和 `OPT-*` 文档。
 5+
 6+- 归档时间:`2026-03-28`
 7+- 最近新增归档:`BUG-018`、`BUG-019`、`BUG-020`、`BUG-021`
 8+
 9+最近归档的问题:
10+
11+- `BUG-018`:preflight denied 不再拖死整批合法指令
12+- `BUG-019`:未闭合 baa block 不再让整条消息失败
13+- `BUG-020`:in-memory deduper 已增加上限与淘汰
14+- `BUG-021`:buffered SSE `full_text` 现在只保留文本
M tasks/TASK_OVERVIEW.md
+1, -0
1@@ -50,6 +50,7 @@
2   - 主链改成 text-only `inject / send`
3   - upload / download / artifact route 已移除
4   - 默认超长策略改成前 `200` 行 + `超长截断`
5+- `2026-03-28`:`T-BUG-015`、`T-BUG-016`、`T-BUG-017` 已完成并归档到 [`./archive/README.md`](./archive/README.md)
6 - 当前没有正在执行中的缺陷修复卡;如需继续推进工程改动,优先新开卡处理剩余风险
7 
8 ## 当前主线收口情况
M tasks/archive/README.md
+1, -1
1@@ -10,7 +10,7 @@
2 - 基础收口:[`T-S001.md`](./T-S001.md)、[`T-S002.md`](./T-S002.md)、[`T-S003.md`](./T-S003.md)、[`T-S004.md`](./T-S004.md)、[`T-S005.md`](./T-S005.md)、[`T-S006.md`](./T-S006.md)、[`T-S007.md`](./T-S007.md)、[`T-S008.md`](./T-S008.md)、[`T-S009.md`](./T-S009.md)、[`T-S010.md`](./T-S010.md)、[`T-S011.md`](./T-S011.md)、[`T-S012.md`](./T-S012.md)、[`T-S013.md`](./T-S013.md)、[`T-S014.md`](./T-S014.md)、[`T-S015.md`](./T-S015.md)、[`T-S016.md`](./T-S016.md)
3 - 浏览器桥接主线:[`T-S017.md`](./T-S017.md)、[`T-S018.md`](./T-S018.md)、[`T-S019.md`](./T-S019.md)、[`T-S020.md`](./T-S020.md)、[`T-S021.md`](./T-S021.md)、[`T-S022.md`](./T-S022.md)、[`T-S023.md`](./T-S023.md)、[`T-S024.md`](./T-S024.md)、[`T-S025.md`](./T-S025.md)、[`T-S026.md`](./T-S026.md)、[`T-S027.md`](./T-S027.md)、[`T-S028.md`](./T-S028.md)
4 - BAA 主线:[`T-S029.md`](./T-S029.md)、[`T-S030.md`](./T-S030.md)、[`T-S031.md`](./T-S031.md)、[`T-S032.md`](./T-S032.md)、[`T-S033.md`](./T-S033.md)、[`T-S034.md`](./T-S034.md)、[`T-S035.md`](./T-S035.md)、[`T-S036.md`](./T-S036.md)
5-- 缺陷修复:[`T-BUG-011.md`](./T-BUG-011.md)、[`T-BUG-012.md`](./T-BUG-012.md)、[`T-BUG-014.md`](./T-BUG-014.md)
6+- 缺陷修复:[`T-BUG-011.md`](./T-BUG-011.md)、[`T-BUG-012.md`](./T-BUG-012.md)、[`T-BUG-014.md`](./T-BUG-014.md)、[`T-BUG-015.md`](./T-BUG-015.md)、[`T-BUG-016.md`](./T-BUG-016.md)、[`T-BUG-017.md`](./T-BUG-017.md)
7 
8 ## 当前仍在根目录的任务卡
9 
A tasks/archive/T-BUG-015.md
+30, -0
 1@@ -0,0 +1,30 @@
 2+# Task T-BUG-015:修复 preflight 整批 fail-closed
 3+
 4+## 当前状态
 5+
 6+- 已完成(2026-03-28,代码已合入主线)
 7+
 8+## 完成结果
 9+
10+- `preflight` 由 fail-closed 改成 collect 模式
11+- 同批次中被拒绝的指令不会再拖死合法指令
12+- `processResult` 现在会保留结构化 `denied` 结果
13+- 整批全为 denied 时,状态会明确返回 `denied_only`
14+
15+## 实际修改文件
16+
17+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/loop.ts`
18+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/types.ts`
19+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/ingest.ts`
20+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
21+
22+## 实际验证
23+
24+- `./node_modules/.bin/tsc -p /Users/george/code/baa-conductor/apps/conductor-daemon/tsconfig.json`
25+- `node --test --test-name-pattern='BaaInstructionCenter keeps supported instructions running when one instruction is denied|BaaInstructionCenter returns denied_only|BaaLiveInstructionIngest ignores plain messages' /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
26+- `git diff --check`
27+
28+## 剩余风险
29+
30+- 目前调用方仍需要读取结构化 `denied` 细节,而不是只看顶层状态
31+- 这次没有扩展 `browser.*` target 支持,仍保持 Phase 1 边界
A tasks/archive/T-BUG-016.md
+27, -0
 1@@ -0,0 +1,27 @@
 2+# Task T-BUG-016:修复 buffered SSE full_text 元数据污染
 3+
 4+## 当前状态
 5+
 6+- 已完成(2026-03-28,代码已合入主线)
 7+
 8+## 完成结果
 9+
10+- `response.full_text` 现在只从明确的文本字段提取
11+- Claude completion 最后一个空 `completion` 事件不再把元数据混进 `full_text`
12+- ChatGPT buffered SSE 的现有文本拼接语义保持不变
13+
14+## 实际修改文件
15+
16+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/local-api.ts`
17+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
18+
19+## 实际验证
20+
21+- `./node_modules/.bin/tsc -p /Users/george/code/baa-conductor/apps/conductor-daemon/tsconfig.json`
22+- `node --test --test-name-pattern='handleConductorHttpRequest serves the migrated local business endpoints from the local repository' /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
23+- `git diff --check`
24+
25+## 剩余风险
26+
27+- 当前白名单覆盖的是这轮已知 buffered SSE 形状
28+- 如果后续新增平台或新的文本字段路径,需要同步补白名单与回归测试
A tasks/archive/T-BUG-017.md
+29, -0
 1@@ -0,0 +1,29 @@
 2+# Task T-BUG-017:增强 instruction extract / dedupe 鲁棒性
 3+
 4+## 当前状态
 5+
 6+- 已完成(2026-03-28,代码已合入主线)
 7+
 8+## 完成结果
 9+
10+- 未闭合的 ````baa` block 现在会被忽略,不再让整条消息失败
11+- 两个 in-memory deduper 都加上了上限与淘汰策略
12+- 已闭合的合法 `baa` block 仍会照常提取和执行
13+
14+## 实际修改文件
15+
16+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/extract.ts`
17+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/dedupe.ts`
18+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/ingest.ts`
19+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
20+
21+## 实际验证
22+
23+- `./node_modules/.bin/tsc -p /Users/george/code/baa-conductor/apps/conductor-daemon/tsconfig.json`
24+- `node --test --test-name-pattern='BAA instruction extraction ignores unterminated baa blocks|InMemoryBaaInstructionDeduper evicts|InMemoryBaaLiveInstructionMessageDeduper evicts' /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
25+- `git diff --check`
26+
27+## 剩余风险
28+
29+- 当前对未闭合 block 的处理是静默忽略,没有额外 warning 或 metric
30+- 如果后续需要排查模型输出质量,建议另开卡补可观测性