baa-conductor

git clone 

baa-conductor / bugs / archive
codex@macbookpro  ·  2026-03-31

FIX-BUG-031.md

 1# FIX-BUG-031: conversation link 扫描上限不再静默截断
 2
 3## 执行状态
 4
 5- 已完成(2026-03-31,代码 + 自动化验证已落地)
 6
 7## 关联 Bug
 8
 9BUG-031-link-scan-limit-silent-truncation.md
10
11## 实际修改文件
12
13- `apps/conductor-daemon/src/renewal/conversations.ts`
14- `apps/conductor-daemon/src/index.test.js`
15- `packages/artifact-db/src/store.ts`
16- `packages/artifact-db/src/types.ts`
17- `packages/artifact-db/src/index.test.js`
18
19## 实际修改
20
21- 不再按 `platform + clientId` 粗扫前 50 条 active link,再在内存里筛候选。
22- `resolveExistingConversationLink` 现在按 `targetId`、`pageUrl`、`routePath`、`pageTitle` 做精确候选查询,并在单页打满时继续分页,避免旧实现只看前 50 条导致漏选。
23- `deactivateConflictingConversationLinks` 现在按 `targetId`、`pageUrl`、`routePath` 精确收集冲突候选,并在更新前先把候选页读全,避免 scan limit 命中时漏停用。
24- 当任一候选查询页命中 `DEFAULT_LINK_SCAN_LIMIT = 50` 时,会发出 `conversation_link_scan_limit_reached` 诊断;默认走 `console.warn`,调用方也可以注入 sink 收集结构化诊断。
25- 顺手修正了 `ArtifactStore.upsertConversationLink` 返回值与落库记录在 `createdAt` 上不一致的问题,保证重用已有 link 时返回值和数据库一致。
26
27## 验收标准
28
291. active link 总量较多时,conversation link 的 resolve / deactivate 不再因为前 50 条截断而静默失败。
302. 候选查询命中单页上限时,日志里会留下明确的 `conversation_link_scan_limit_reached` warn/diagnostic。
313. 命中 scan limit 的回归测试可以证明:
32   - resolve 能跨页找到真正的最佳 link
33   - deactivate 能跨页停用其余冲突 link
344. 自动化验证通过:
35   - `pnpm -C /Users/george/code/baa-conductor-bug-031/packages/artifact-db test`
36   - `pnpm -C /Users/george/code/baa-conductor-bug-031/apps/conductor-daemon test`