- commit
- e89ee69
- parent
- 2d65427
- author
- codex@macbookpro
- date
- 2026-03-31 18:10:01 +0800 CST
docs: sync status docs after bug sweep
10 files changed,
+64,
-36
+11,
-5
1@@ -11,18 +11,19 @@ bugs/
2 archive/ ← 已关闭或已完成的 BUG-*.md、FIX-*.md、MISSING-*.md、OPT-*.md
3 ```
4
5-## 待修复
6+## 待跟进
7+
8+当前没有 open bug。
9+
10+当前 open opt:
11
12-- `BUG-027`:[`BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md`](./BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md)
13-- `BUG-031`:[`BUG-031-link-scan-limit-silent-truncation.md`](./BUG-031-link-scan-limit-silent-truncation.md)
14-- `BUG-032`:[`BUG-032-dispatcher-missing-cooldown-after-success.md`](./BUG-032-dispatcher-missing-cooldown-after-success.md)
15-- `BUG-033`:[`BUG-033-upsert-local-conversation-overwrites-created-at.md`](./BUG-033-upsert-local-conversation-overwrites-created-at.md)
16 - `OPT-002`:[`OPT-002-executor-timeout.md`](./OPT-002-executor-timeout.md)
17 - `OPT-003`:[`OPT-003-policy-configurable.md`](./OPT-003-policy-configurable.md)
18 - `OPT-004`:[`OPT-004-final-message-claude-sse-fallback.md`](./OPT-004-final-message-claude-sse-fallback.md)
19 - `OPT-005`:[`OPT-005-normalize-parse-error-isolation.md`](./OPT-005-normalize-parse-error-isolation.md)
20 - `OPT-007`:[`plans/OPT-007-DISPATCHER-JITTER.md`](../plans/OPT-007-DISPATCHER-JITTER.md) — renewal dispatcher 加入随机抖动避免限流
21 - `OPT-008`:[`OPT-008-timed-jobs-async-log-writes.md`](./OPT-008-timed-jobs-async-log-writes.md)
22+- `OPT-009`:[`OPT-009-renewal-duplicate-utility-functions.md`](./OPT-009-renewal-duplicate-utility-functions.md)
23
24 ## 已归档(archive/)
25
26@@ -47,9 +48,14 @@ bugs/
27 | BUG-024 | FIXED | ChatGPT stale final-message replay 已被抑制 |
28 | BUG-025 | FIXED | delivery 已优先路由到业务页,不再默认落到 shell 页 |
29 | BUG-026 | FIXED | repo 根路径现在会正确 fallback 到默认 `log.html` |
30+| BUG-027 | FIXED | 插件启动期诊断事件现在会在 WS open 后缓冲补发 |
31 | BUG-028 | FIXED | Gemini shell final-message 现在会过滤协议碎片并保留可读 assistant 文本 |
32 | BUG-029 | FIXED | 已停用 conversation link 不会再被远端对话查询命中 |
33 | BUG-030 | FIXED | `targetId` 匹配现在绝对优先于弱信号叠加 |
34+| BUG-031 | FIXED | renewal link 扫描不再静默截断,超限会显式告警并改用更稳的选择路径 |
35+| BUG-032 | FIXED | dispatcher 成功后现在会回写 cooldownUntil,避免同一对话连续续命 |
36+| BUG-033 | FIXED | renewal 相关 UPSERT 现在会保留原始 created_at |
37+| BUG-034 | FIXED | projector route unavailable 现在会记录具体 skip 原因 |
38 | BUG-035 | FIXED | `remote_conversation_id = NULL` 的 link 现在会按 route/page identity 收敛为唯一 canonical row |
39 | BUG-036 | FIXED | projector cursor 和 `system_state.updated_at` 现在统一为毫秒口径,并兼容 legacy 秒值恢复 |
40 | MISSING-001 | FIXED | 执行结果已经接到 AI 对话 delivery 主链 |
R bugs/BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md =>
bugs/archive/BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md
+0,
-0
R bugs/BUG-031-link-scan-limit-silent-truncation.md =>
bugs/archive/BUG-031-link-scan-limit-silent-truncation.md
+0,
-0
R bugs/BUG-032-dispatcher-missing-cooldown-after-success.md =>
bugs/archive/BUG-032-dispatcher-missing-cooldown-after-success.md
+0,
-0
R bugs/BUG-033-upsert-local-conversation-overwrites-created-at.md =>
bugs/archive/BUG-033-upsert-local-conversation-overwrites-created-at.md
+0,
-0
R bugs/BUG-035-conversation-links-null-unique-index.md =>
bugs/archive/BUG-035-conversation-links-null-unique-index.md
+0,
-0
+9,
-3
1@@ -2,8 +2,8 @@
2
3 本目录保留 `已关闭` 或 `已修复` 的 `BUG-*`、`FIX-BUG-*`、`MISSING-*` 和 `OPT-*` 文档。
4
5-- 归档时间:`2026-03-30`
6-- 最近新增归档:`BUG-018`、`BUG-019`、`BUG-020`、`BUG-021`、`BUG-022`、`BUG-023`、`BUG-024`、`BUG-025`、`BUG-026`、`BUG-029`、`BUG-030`、`BUG-035`、`MISSING-003`
7+- 归档时间:`2026-03-31`
8+- 最近新增归档:`BUG-027`、`BUG-028`、`BUG-029`、`BUG-030`、`BUG-031`、`BUG-032`、`BUG-033`、`BUG-034`、`BUG-035`、`BUG-036`
9
10 最近归档的问题:
11
12@@ -16,7 +16,13 @@
13 - `BUG-024`:ChatGPT stale final-message replay 已被抑制
14 - `BUG-025`:delivery 已优先路由到业务页,不再默认落到 shell 页
15 - `BUG-026`:repo 根路径现在会正确 fallback 到默认 `log.html`
16+- `BUG-027`:插件启动期诊断事件现在会在 WS open 后缓冲补发
17+- `BUG-028`:Gemini shell final-message 现在会过滤协议碎片并保留可读 assistant 文本
18 - `BUG-029`:已停用 conversation link 不会再被远端对话查询命中
19 - `BUG-030`:`targetId` 匹配现在绝对优先于弱信号叠加
20+- `BUG-031`:renewal link 扫描不再静默截断,超限会显式告警并改用更稳的选择路径
21+- `BUG-032`:dispatcher 成功后现在会回写 cooldownUntil,避免同一对话连续续命
22+- `BUG-033`:renewal 相关 UPSERT 现在会保留原始 created_at
23+- `BUG-034`:projector route unavailable 现在会记录具体 skip 原因
24 - `BUG-035`:`remote_conversation_id = NULL` 的 conversation link 现在按 route/page identity 收敛为唯一 canonical row
25-- `MISSING-003`:Phase 1 已补齐 `browser.claude` target
26+- `BUG-036`:projector cursor 和 `system_state.updated_at` 现在统一为毫秒口径,并兼容 legacy 秒值恢复
+22,
-15
1@@ -2,11 +2,11 @@
2
3 ## 当前时间
4
5-- `2026-03-30`
6+- `2026-03-31`
7
8 ## 当前代码基线
9
10-- 当前主分支:`main@625f808`
11+- 当前主分支:`main@2d65427`
12 - canonical local API:`http://100.71.210.78:4317`
13 - canonical public host:`https://conductor.makefile.so`
14 - 活跃任务文档和近期刚完成的任务文档保留在 `tasks/` 根目录;较早已完成任务归档到 [`../tasks/archive/README.md`](../tasks/archive/README.md)
15@@ -39,6 +39,11 @@
16 - 对话自动化状态已支持 `manual / auto / paused`
17 - timed-jobs runtime 已具备独立调度和 JSONL 外部日志
18 - renewal projector / dispatcher 和最小 `/v1/renewal/*` 运维读接口已合入主线
19+- 近期这条主线的收口项也已完成:
20+ - 插件启动期诊断事件会在 WS open 后缓冲补发
21+ - Gemini shell final-message 现在会过滤协议碎片并保留可读 assistant 文本
22+ - renewal link 扫描不再静默截断,route unavailable 会记录具体 skip 原因
23+ - `system_state.updated_at` 与 projector cursor 已统一为毫秒口径
24
25 ## 当前已纠正的文档/代码不一致
26
27@@ -48,6 +53,7 @@
28 - `BUG-024` / `BUG-025` 已完成并归档,不再作为 open blocker 挂在 backlog
29 - `BUG-026` 已随 `98db481` 修复并归档,不再作为 open blocker 挂在 backlog
30 - `BUG-029` 已随 `625f808` 修复并归档,不再作为 open blocker 挂在 backlog
31+- `BUG-027`、`BUG-028`、`BUG-031`、`BUG-032`、`BUG-033`、`BUG-034`、`BUG-036` 已全部收口并归档,旧汇总中的 open 状态已改正
32 - `T-S055`~`T-S059` 已全部完成并合入 `main`,不再继续作为“下一波主线”
33 - `T-BUG-029` / `T-BUG-031` 的任务卡已完成,但旧汇总文档仍把它们写成 pending manual verification;现统一改为“建议补做浏览器复核”
34 - Artifact 静态服务已经完成,不再把它写成“下一阶段主线”
35@@ -56,16 +62,16 @@
36
37 **当前下一波任务:**
38
39-1. `BUG-027`:插件启动期诊断事件会在 WS open 前丢失
40-2. `BUG-028`:Gemini shell final-message 返回协议碎片
41-3. `BUG-030`:续命对话关联打分中弱信号可能压过 `targetId`
42-4. `BUG-031`:link 扫描上限静默截断
43-5. `T-S048`:Gemini 投递适配器
44-6. `T-S049`:开放 `@browser.chatgpt` / `@browser.gemini` target(依赖 `T-S048`)
45+1. `T-S048`:Gemini 投递适配器
46+2. `T-S049`:开放 `@browser.chatgpt` / `@browser.gemini` target(依赖 `T-S048`)
47+3. `OPT-002`:executor 超时保护
48+4. `OPT-007`:renewal dispatcher 随机抖动
49+5. `OPT-008`:timed-jobs 日志改异步写入
50+6. `OPT-009`:renewal 模块重复工具函数抽取
51
52 并行需要持续关注:
53
54-- `OPT-002`
55+- `OPT-003`
56
57 **并行优化项:**
58
59@@ -79,6 +85,10 @@
60 让 normalize / parse 错误进一步隔离,不拖累整批指令
61 5. `OPT-007`
62 renewal dispatcher 加入随机抖动避免限流([需求文档](./OPT-007-DISPATCHER-JITTER.md))
63+6. `OPT-008`
64+ timed-jobs 日志改异步写入,减少同步 IO 对事件循环的阻塞
65+7. `OPT-009`
66+ renewal 模块重复工具函数抽取,减少重复逻辑
67
68 **已关闭的优化项:**
69
70@@ -109,8 +119,9 @@ Phase 1(浏览器主链)、Artifact 静态服务,以及 timed-jobs + 续
71
72 - 现有主链已经具备完整 artifact 持久化、静态访问和插件诊断能力
73 - 已有本地对话/关联/续命任务、projector、dispatcher 和最小续命运维读接口
74-- 当前下一波先处理 `BUG-027`、`BUG-028`、`BUG-030`、`BUG-031`
75-- 然后回到 Gemini 投递与开放 chatgpt/gemini target 的 backlog
76+- 当前主线已无 open bug blocker
77+- 下一波回到 Gemini 投递与开放 chatgpt/gemini target 的 backlog
78+- 其余以 `OPT-*` 优化项为主
79
80 之前的浏览器主链继续保持:
81
82@@ -121,10 +132,6 @@ Phase 1(浏览器主链)、Artifact 静态服务,以及 timed-jobs + 续
83
84 ## 当前仍需关注
85
86-- `BUG-027`:插件启动期诊断事件会在 WS open 前丢失,影响 `logs/baa-plugin/` 排障
87-- `BUG-028`:Gemini shell 页 final-message 仍可能返回协议碎片而非可读回复
88-- `BUG-030`:续命对话关联打分仍需让 `targetId` 强信号绝对优先
89-- `BUG-031`:link 扫描上限静默截断仍需补 warn 或分页策略
90 - 风控状态当前仍是进程内内存态;`conductor` 重启后,限流、退避和熔断计数会重置
91 - `Gemini` 当前仍不是 `/v1/browser/request` 的正式支持面,正式 browser target 仍只有 `browser.claude`
92 - ChatGPT proxy send 仍依赖最近捕获的真实发送模板;如果 controller 刚重载且还没观察到真实发送,会退回同页 DOM fallback
+22,
-13
1@@ -2,8 +2,8 @@
2
3 ## 当前基线
4
5-- 日期:`2026-03-30`
6-- 主分支基线:`main@625f808`
7+- 日期:`2026-03-31`
8+- 主分支基线:`main@2d65427`
9 - canonical local API:`http://100.71.210.78:4317`
10 - canonical public host:`https://conductor.makefile.so`
11 - 当前活跃任务卡和近期刚完成的任务卡保留在本目录;较早已完成任务归档到 [`./archive/README.md`](./archive/README.md)
12@@ -36,6 +36,11 @@
13 - 对话自动化状态已支持 `manual / auto / paused`
14 - timed-jobs runtime 已具备独立调度与 JSONL 外部日志
15 - renewal projector / dispatcher 已接入主线,且已提供最小 `/v1/renewal/*` 运维读接口
16+- 近期这条主线的收口项也已完成:
17+ - 插件启动期诊断事件会在 WS open 后缓冲补发
18+ - Gemini shell final-message 现在会过滤协议碎片并保留可读 assistant 文本
19+ - renewal link 扫描不再静默截断,route unavailable 会记录具体原因
20+ - `system_state.updated_at` 与 projector cursor 已统一为毫秒口径
21
22 ## 当前已确认的不一致
23
24@@ -47,6 +52,7 @@
25 - `BUG-024` / `BUG-025` 已经分别随 `6b819bf` 和 `6e458f3` 收口,不再作为 open bug 保留在根目录索引
26 - `BUG-026` 已经随 `98db481` 收口并归档,不再继续作为 open bug 跟踪
27 - `BUG-029` 已经随 `625f808` 修复并归档,不再继续作为 open bug 跟踪
28+- `BUG-027`、`BUG-028`、`BUG-031`、`BUG-032`、`BUG-033`、`BUG-034`、`BUG-036` 已全部收口并归档,旧总览中的 open 状态已改正
29 - `T-S055`~`T-S059` 已全部完成并合入 `main`,旧总览中的 pending 状态已改正
30 - `T-BUG-029`、`T-BUG-031` 的任务卡已是 `已完成`,但旧文档仍把它们写成 pending manual verification;现统一改为“建议补做浏览器复核”
31 - Artifact 静态服务已经完成,不再把 `T-S039`~`T-S045` 写成“当前活跃主线”
32@@ -67,12 +73,12 @@
33
34 | 项目 | 标题 | 类型 | 状态 | 说明 |
35 |---|---|---|---|---|
36-| [`BUG-027`](../bugs/BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md) | 插件启动期诊断事件在 WS 建立前丢失 | bug | open | 影响 `logs/baa-plugin/` 排障链路 |
37-| [`BUG-028`](../bugs/BUG-028-gemini-shell-final-message-raw-protocol.md) | Gemini shell final-message 返回协议碎片 | bug | open | 影响 Gemini shell 可读回复闭环 |
38-| [`BUG-030`](../bugs/BUG-030-score-conversation-link-weak-signals-beat-strong.md) | 弱信号叠加可能压过 `targetId` 强信号 | bug | open | 续命对话关联正确性问题 |
39-| [`BUG-031`](../bugs/BUG-031-link-scan-limit-silent-truncation.md) | link 扫描上限静默截断 | bug | open | 续命对话关联的长期稳定性问题 |
40 | [`T-S048`](./T-S048.md) | Gemini 投递适配器 | feat | backlog | 暂时后移,但仍是正式 backlog |
41 | [`T-S049`](./T-S049.md) | 开放 chatgpt/gemini target | feat | backlog | 依赖 `T-S048` |
42+| [`../bugs/OPT-002-executor-timeout.md`](../bugs/OPT-002-executor-timeout.md) | executor 超时保护 | opt | open | 仍建议优先收口,避免执行链路无限阻塞 |
43+| [`../plans/OPT-007-DISPATCHER-JITTER.md`](../plans/OPT-007-DISPATCHER-JITTER.md) | renewal dispatcher 随机抖动 | opt | open | 限流缓冲与节奏分散 |
44+| [`../bugs/OPT-008-timed-jobs-async-log-writes.md`](../bugs/OPT-008-timed-jobs-async-log-writes.md) | timed-jobs 异步日志写入 | opt | open | 低优先级性能卫生 |
45+| [`../bugs/OPT-009-renewal-duplicate-utility-functions.md`](../bugs/OPT-009-renewal-duplicate-utility-functions.md) | renewal 工具函数去重 | opt | open | 低优先级代码卫生 |
46
47 ### 暂时后移的 backlog 与参考
48
49@@ -121,12 +127,15 @@
50 ### P1(并行优化)
51
52 - [`../bugs/OPT-002-executor-timeout.md`](../bugs/OPT-002-executor-timeout.md)
53+- [`../plans/OPT-007-DISPATCHER-JITTER.md`](../plans/OPT-007-DISPATCHER-JITTER.md)
54
55 ### P2(次级优化)
56
57 - [`../bugs/OPT-003-policy-configurable.md`](../bugs/OPT-003-policy-configurable.md)
58 - [`../bugs/OPT-004-final-message-claude-sse-fallback.md`](../bugs/OPT-004-final-message-claude-sse-fallback.md)
59 - [`../bugs/OPT-005-normalize-parse-error-isolation.md`](../bugs/OPT-005-normalize-parse-error-isolation.md)
60+- [`../bugs/OPT-008-timed-jobs-async-log-writes.md`](../bugs/OPT-008-timed-jobs-async-log-writes.md)
61+- [`../bugs/OPT-009-renewal-duplicate-utility-functions.md`](../bugs/OPT-009-renewal-duplicate-utility-functions.md)
62
63 ### 已关闭
64
65@@ -135,15 +144,15 @@
66 ## 当前 open bug / gap
67
68 - open bug:
69- - [`../bugs/BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md`](../bugs/BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md)
70- - [`../bugs/BUG-028-gemini-shell-final-message-raw-protocol.md`](../bugs/BUG-028-gemini-shell-final-message-raw-protocol.md)
71- - [`../bugs/BUG-030-score-conversation-link-weak-signals-beat-strong.md`](../bugs/BUG-030-score-conversation-link-weak-signals-beat-strong.md)
72- - [`../bugs/BUG-031-link-scan-limit-silent-truncation.md`](../bugs/BUG-031-link-scan-limit-silent-truncation.md)
73+ - 当前没有 open bug
74 - open opt:
75 - `OPT-002`
76 - `OPT-003`
77 - `OPT-004`
78 - `OPT-005`
79+ - `OPT-007`
80+ - `OPT-008`
81+ - `OPT-009`
82
83 完整索引见 [`../bugs/README.md`](../bugs/README.md)。
84
85@@ -162,11 +171,11 @@
86
87 ## 当前主线判断
88
89-Phase 1(浏览器主链)、Artifact 静态服务,以及 timed-jobs + 续命主线都已完成收口。当前下一步是:
90+Phase 1(浏览器主链)、Artifact 静态服务,以及 timed-jobs + 续命主线都已完成收口。当前主线已经没有 open bug blocker,下一步是:
91
92-- 修 open bug `BUG-027`、`BUG-028`、`BUG-030`、`BUG-031`
93-- 并行推进 `OPT-002`(executor 超时保护)
94 - 回到 backlog `T-S048`、`T-S049`
95+- 并行推进 `OPT-002`
96+- 视情况收口 `OPT-007`、`OPT-008`、`OPT-009`
97
98 ## 现在该读什么
99