docs(bug-history): reattach 22 records to their own headings
A merge on 2026-07-25 (3ca30ed7) left the heading sequence and the body
sequence offset by one, so looking up a bug returned another bug's
symptom and root cause — worse than a miss, because it reads as normal.
The last body in the run was appended to BUG-043, giving that record two.
Rebind by content, not position: every reassignment was confirmed by
checking the body's 用户现象/根因 against the heading. Also drop 11
duplicate tail blocks (7 verbatim-equivalent, 4 strict subsets of the
surviving copy) and fold BUG-221~234 into BUG-020~035, which were the
same bugs recorded twice under two numbering schemes.
Structurally incomplete records 22 -> 0; records 253 -> 240 as 14
duplicates retire. Verified no body line was lost.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+77
-95
@@ -348,7 +348,6 @@
|
||||
- 修复版本:待提交
|
||||
|
||||
## BUG-020 | 生时校正把语言问答包装成高阻力卡片表单
|
||||
## BUG-221 | 生时校正把语言问答包装成高阻力卡片表单
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -365,7 +364,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-021 | 自然语言真实事件在分钟评分入口被静默丢弃
|
||||
## BUG-222 | 自然语言真实事件在分钟评分入口被静默丢弃
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -382,11 +380,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-022 | 生时校正入口等待首轮请求完成后才切换会话
|
||||
- 相关记录:BUG-008、BUG-009、BUG-015、BUG-016、BUG-221
|
||||
- 复发自:BUG-221
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-223 | 生时校正入口等待首轮请求完成后才切换会话
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -403,11 +396,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-023 | 初始化地址保存后的加载提示仍指向生时评估
|
||||
- 相关记录:BUG-016、BUG-221、BUG-222
|
||||
- 复发自:无
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-224 | 初始化地址保存后的加载提示仍指向生时评估
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -424,11 +412,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-024 | 侧栏会话标题与更多操作被拆成两块
|
||||
- 相关记录:BUG-223
|
||||
- 复发自:无
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-225 | 侧栏会话标题与更多操作被拆成两块
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -445,7 +428,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-025 | 健康压力追问被数据库误判为校正操作冲突
|
||||
## BUG-226 | 健康压力追问被数据库误判为校正操作冲突
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -494,11 +476,6 @@
|
||||
- 修复版本:待提交(production gate)
|
||||
|
||||
## BUG-028 | 生时校正收到具体经历后仍重复泛问
|
||||
- 相关记录:BUG-007、BUG-221、BUG-222
|
||||
- 复发自:BUG-007
|
||||
- 修复版本:待提交(测试 Supabase smoke 通过)
|
||||
|
||||
## BUG-227 | 生时校正收到具体经历后仍重复泛问
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -510,12 +487,11 @@
|
||||
- 修复:会话组件改用独立的可见叙事函数,优先承接用户最近一条具体但不完整的经历并只追问缺失项;编排器把下一轮仅含日期或仅含内容的补充合并回最近一条待澄清事件,同时用 `correctsEvidenceIds` 保留 append-only 修订链;下一问从技术包允许领域中优先选择尚未回答的领域,并同步覆盖公开 evidence request。
|
||||
- 验证:相关自然语言抽取、叙事、编排、路由、公开案例回放与端到端测试共 111 条全部通过;回归覆盖“先说离家工作、再补 2023 年 3 月”后合并为 `2023-03 · 离开家去北京开始工作`、具体事件缺日期时回复必须复述该事件并询问年月、关系领域回答后下一问切换到事业领域。目标文件 ESLint 与补丁检查通过。
|
||||
- 防复发:保持“服务端叙事是用户可见回复真相源”的纯函数测试;每条待澄清证据必须测试跨轮补全与修订链;下一领域必须测试排除有效 recap 已覆盖领域;端到端断言不得只绑定泛化提示词。
|
||||
- 相关记录:BUG-221、BUG-222
|
||||
- 复发自:BUG-222
|
||||
- 相关记录:BUG-020、BUG-021
|
||||
- 复发自:BUG-021
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-029 | 生时校正仍有未回答区分领域时提前结束
|
||||
## BUG-228 | 生时校正仍有未回答区分领域时提前结束
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -532,11 +508,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-030 | 职位和管理职责变化未识别为事业证据
|
||||
- 相关记录:BUG-222、BUG-227
|
||||
- 复发自:无
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-229 | 职位和管理职责变化未识别为事业证据
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -553,11 +524,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-031 | 生时纠正未收敛仍永久扣费且事件事实未进入评分契约
|
||||
- 相关记录:BUG-227、BUG-228
|
||||
- 复发自:无
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-230 | 生时纠正未收敛仍永久扣费且事件事实未进入评分契约
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
@@ -574,11 +540,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-032 | 生时校正覆盖历史回答且完成后无法返回原问题
|
||||
- 相关记录:BUG-222、BUG-227、BUG-228
|
||||
- 复发自:无
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-231 | 生时校正覆盖历史回答且完成后无法返回原问题
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -595,11 +556,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-033 | 生时校正缺少连续事件语义导致模板式跳问
|
||||
- 相关记录:BUG-221、BUG-222、BUG-227
|
||||
- 复发自:BUG-221、BUG-227
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-232 | 生时校正缺少连续事件语义导致模板式跳问
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -616,11 +572,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-034 | 生时校正 Agent 降级只记录 200 导致模板回退不可诊断
|
||||
- 相关记录:BUG-227、BUG-228、BUG-231
|
||||
- 复发自:BUG-227、BUG-231
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-233 | 生时校正 Agent 降级只记录 200 导致模板回退不可诊断
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -637,10 +588,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-035 | 生时校正发送错误内容后无法撤回修改
|
||||
- 相关记录:BUG-231、BUG-232
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-234 | 生时校正发送错误内容后无法撤回修改
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -657,10 +604,6 @@
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-036 | Agent 化生时校正上线前被旧模板组件断言阻断
|
||||
- 相关记录:BUG-221、BUG-231
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-235 | 连续事件补充回答丢失状态并重新进入日期模板
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -676,7 +619,11 @@
|
||||
- 复发自:无
|
||||
- 修复版本:待提交
|
||||
|
||||
## BUG-037 | 生时校正刷新后把真实对话重建成“已记录”模板
|
||||
## BUG-235 | 连续事件补充回答丢失状态并重新进入日期模板
|
||||
|
||||
- 状态:resolved(原始的“状态/首次发现/最近更新”三行在 2026-07-25 的合并提交 3ca30ed7 中丢失,此处依据同批次记录与该提交内容补记,非原文)
|
||||
- 首次发现:2026-07-23
|
||||
- 最近更新:2026-07-23
|
||||
- 影响面:生时校正多轮问答、事件证据账本、Agent 自然追问
|
||||
- 用户现象:用户先提供“2017年5月参加工作”,Agent 继续确认“正式工作还是实习/兼职”;用户回答“正式工作”后,系统却把这句话当成新事件,重新追问“具体是什么年月/只记得年份也可以”,既重复问题又丢失上一轮的年月。
|
||||
- 触发条件:Agent 的追问属于已有事件的日期补充或细节补充,但公开 turn 只保存问题文本,没有保存追问目标事件和问题类型。
|
||||
@@ -684,11 +631,11 @@
|
||||
- 修复:为 evidence request 增加向后兼容的 follow-up 状态机,记录问题类型和目标事件 ID;narrative Agent 被要求在追问已有事实时输出对应状态;进度装饰只维护确定性的下一领域,不再覆盖 Agent 可见问题对应的 follow-up 目标;服务端按状态将日期或细节 append-only 合并到目标事件并保留 `correctsEvidenceIds`,只有 `new_event` 才创建独立事件;细节合并改为单事件解析后覆盖组合摘要,避免标点导致错误拆分。
|
||||
- 验证:叙事、编排与存储聚焦测试 81/81 通过;真实两轮编排回归覆盖 Agent 先追问已有事件细节并持久化目标,然后“2017-05 参加工作”后回答“正式工作”仍保留 `2017-05`、形成“参加工作;正式工作”并不再出现日期模板;旧 turn 缺少 follow-up 时仍按兼容路径处理。目标文件 ESLint、相关 TypeScript 检查和 `git diff --check` 通过。
|
||||
- 防复发:每个中间轮必须断言追问类型、目标 evidence ID 和下一轮的事件合并结果;模型回退时默认显式 `new_event`,不得把已有事件细节当成新事实;跨轮测试必须断言用户可见回复不重复已回答的日期问题。
|
||||
- 相关记录:BUG-227、BUG-232、BUG-233
|
||||
- 复发自:BUG-232
|
||||
- 相关记录:BUG-028、BUG-033、BUG-034
|
||||
- 复发自:BUG-033
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-236 | 首次进入生时校正长期停留在建立记录
|
||||
## BUG-037 | 生时校正刷新后把真实对话重建成“已记录”模板
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -704,17 +651,21 @@
|
||||
- 复发自:BUG-032
|
||||
- 修复版本:待提交
|
||||
|
||||
## BUG-038 | 老案例摘要被误标成原始对话且第七条事件后无法继续
|
||||
## BUG-236 | 首次进入生时校正长期停留在建立记录
|
||||
|
||||
- 状态:resolved(原始的“状态/首次发现/最近更新”三行在 2026-07-25 的合并提交 3ca30ed7 中丢失,此处依据同批次记录与该提交内容补记,非原文)
|
||||
- 首次发现:2026-07-23
|
||||
- 最近更新:2026-07-23
|
||||
- 影响面:首次创建生时校正 case、首条 Agent 引导消息、进入校正页面的等待时间
|
||||
- 用户现象:点击生时校正后已经进入统一加载动画,但长时间停留在“正在建立校正记录…”。
|
||||
- 根因:建档事务在写入首轮和完成扣点前同步等待 Mastra Agent 的结构化输出;模型 SDK 自带重试,叙事校验层也允许重试一次,慢请求和双重重试会把整段时间全部暴露给用户。实测本地星盘扫描约 0.08 秒,不是主要瓶颈。
|
||||
- 修复:首轮叙事的两次校验尝试共享 10 秒中止信号,并关闭 Mastra SDK 内部重试;10 秒内生成成功仍使用 Agent 自然回答,超时或两次校验失败则使用现有的安全、可评分 fallback 完成建档。中间轮和最终总结不受该首轮时限影响。
|
||||
- 验证:新增回归断言,确保首轮两次叙事尝试共享同一个 `AbortSignal`;目标 narrative 测试、ESLint、TypeScript 与生产构建通过后记录最终结果。
|
||||
- 防复发:首轮建档不得无限等待模型,也不得同时开启 SDK 重试和业务校验重试;耗时预算必须覆盖整个首轮生成,而不是每次尝试单独重新计时。
|
||||
- 相关记录:BUG-233
|
||||
- 相关记录:BUG-034
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-237 | 生时校正入口旧快照重复 start 导致 409
|
||||
## BUG-038 | 老案例摘要被误标成原始对话且第七条事件后无法继续
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -730,7 +681,11 @@
|
||||
- 复发自:BUG-037
|
||||
- 修复版本:0850619eaf5002736542463394720b0ab1949ce9
|
||||
|
||||
## BUG-039 | 生时校正 Agent 回答等待结束后一次性出现
|
||||
## BUG-237 | 生时校正入口旧快照重复 start 导致 409
|
||||
|
||||
- 状态:resolved(原始的“状态/首次发现/最近更新”三行在 2026-07-25 的合并提交 3ca30ed7 中丢失,此处依据同批次记录与该提交内容补记,非原文)
|
||||
- 首次发现:2026-07-23
|
||||
- 最近更新:2026-07-23
|
||||
- 影响面:生时校正首页入口、未完成 case 恢复、重复 start 防护
|
||||
- 用户现象:用户点击进入生时校正时,接口发送新的 `start`,返回 `409 action_conflict`,页面无法进入校正会话。
|
||||
- 触发条件:前端账户快照没有包含已有未完成 case,或账户快照在出生声明变更后隐藏了旧 case,但数据库中仍存在该用户的未完成 V3 case。
|
||||
@@ -738,11 +693,11 @@
|
||||
- 修复:首次 `start` 收到 409 后刷新账户状态;如果刷新得到可恢复 case,自动使用最新 `caseId` 和 `turnVersion` 执行 `resume`,不重复扣点;如果刷新后仍没有声明匹配的 case,则保留原错误,避免未经用户确认自动放弃旧校正记录。
|
||||
- 验证:`frontend/tests/consultation-entrypoint.test.ts` 23/23 通过,覆盖 409、刷新账户、使用最新 case 版本恢复;目标文件 ESLint 与 `git diff --check` 通过。完整套件仍有既有 CSS 断言和数据库权限测试失败,与本修复无关。
|
||||
- 防复发:生时校正入口必须把 `start` 视为可恢复的幂等操作;收到 case 冲突时先刷新 durable 状态,再决定恢复或提示用户;不得直接再次扣费、创建第二个 case,或在声明不一致时静默删除旧 case。
|
||||
- 相关记录:BUG-233、BUG-236
|
||||
- 相关记录:BUG-034、BUG-236
|
||||
- 复发自:无
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-238 | 服务层重复 start 未在扣费前复用同一声明的未完成 case
|
||||
## BUG-039 | 生时校正 Agent 回答等待结束后一次性出现
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -758,7 +713,11 @@
|
||||
- 复发自:无
|
||||
- 修复版本:本次流式修复提交
|
||||
|
||||
## BUG-040 | Agent 活动状态与回答被错误渲染为互斥状态
|
||||
## BUG-238 | 服务层重复 start 未在扣费前复用同一声明的未完成 case
|
||||
|
||||
- 状态:resolved(原始的“状态/首次发现/最近更新”三行在 2026-07-25 的合并提交 3ca30ed7 中丢失,此处依据同批次记录与该提交内容补记,非原文)
|
||||
- 首次发现:2026-07-23
|
||||
- 最近更新:2026-07-23
|
||||
- 影响面:生时校正 start 编排、重复点击/多标签进入、首轮等待时间与扣费预留
|
||||
- 用户现象:前端收到新的 `start` 后仍等待模型计算,最终返回 `409 action_conflict`;账户刷新未必能返回可恢复 case,导致用户无法进入会话。
|
||||
- 触发条件:同一用户使用不同 `actionId` 重复进入生时校正,或两个入口并发发起 start。
|
||||
@@ -766,11 +725,11 @@
|
||||
- 修复:在 reserve 前增加账户级未完成 case 查询;同一 `declaredBirthInput` 直接返回已有公开 turn,不重复计算或扣费;声明不一致继续稳定返回冲突。并发竞态在释放本次预留后重新读取账户,复用同声明的胜出 case。
|
||||
- 验证:`frontend/tests/conversational-rectification-orchestrator.test.ts` 32/32 通过,覆盖同声明重复 start 复用、声明不一致冲突和既有预留重试;后续需补充线上部署后的真实 smoke。
|
||||
- 防复发:start 幂等性必须同时在入口、编排器和 durable RPC 三层成立;任何新增 actionId 的 start 都必须先检查账户级未完成 case,不能把数据库冲突当成正常流程。
|
||||
- 相关记录:BUG-233、BUG-236、BUG-237
|
||||
- 相关记录:BUG-034、BUG-236、BUG-237
|
||||
- 复发自:BUG-237
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-239 | 旧数据库校验器把首条新事件回答误报为 409
|
||||
## BUG-040 | Agent 活动状态与回答被错误渲染为互斥状态
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -786,7 +745,11 @@
|
||||
- 复发自:无
|
||||
- 修复版本:`4a9b1dc`
|
||||
|
||||
## BUG-041 | 生时校正生成回答时消息列表不自动跟随到底部
|
||||
## BUG-239 | 旧数据库校验器把首条新事件回答误报为 409
|
||||
|
||||
- 状态:resolved(原始的“状态/首次发现/最近更新”三行在 2026-07-25 的合并提交 3ca30ed7 中丢失,此处依据同批次记录与该提交内容补记,非原文)
|
||||
- 首次发现:2026-07-23
|
||||
- 最近更新:2026-07-23
|
||||
- 影响面:生时校正首条及后续普通新事件回答
|
||||
- 用户现象:case 与请求版本同为 0,提交首条经历仍返回 `409 action_conflict`。
|
||||
- 根因:应用已为证据请求加入可选 `followUp` 状态,但当前数据库校验器仍只接受旧字段;显式的 `new_event` 与旧默认语义相同,却在保存边界被拒绝。
|
||||
@@ -796,7 +759,7 @@
|
||||
- 相关记录:BUG-235、BUG-237、BUG-238
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-240 | 非评分回答绕过 Agent 并显示固定澄清模板
|
||||
## BUG-041 | 生时校正生成回答时消息列表不自动跟随到底部
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-23
|
||||
@@ -812,6 +775,21 @@
|
||||
- 复发自:无
|
||||
- 修复版本:本次自动滚动修复提交
|
||||
|
||||
## BUG-240 | 非评分回答绕过 Agent 并显示固定澄清模板
|
||||
|
||||
- 状态:resolved(原始的“状态/首次发现/最近更新”三行在 2026-07-25 的合并提交 3ca30ed7 中丢失,此处依据同批次记录与该提交内容补记,非原文)
|
||||
- 首次发现:2026-07-23
|
||||
- 最近更新:2026-07-23
|
||||
- 影响面:生时校正缺少年月、未来事件、换方向和非评分更正后的自然问答
|
||||
- 用户现象:用户用自然语言补充“化学专业”“后来换了工作”等内容后,页面直接显示“你提到……具体内容我已经记下了。它大致是什么年月?”,与前后 Agent 语气断裂,也可能忽略刚才已经建立的事件上下文。
|
||||
- 根因:编排器发现本轮暂时没有可评分事件后,直接进入同步 `nonScoringTurn()`;该函数完全没有调用 narrative Agent,而是用固定字符串生成可见回复。Mastra 和模型没有获得生成这轮回答的机会。
|
||||
- 修复:非评分分支先用当前候选技术包、完整事件账本、最新用户原话和未决证据调用现有 narrative Agent;状态机只在后台固定本轮追问属于 `event_date`、`event_detail` 还是 `new_event`,不再替代 Agent 的可见措辞。模型或技术包调用失败时仍保留确定性安全文案,避免正常澄清变成 5xx。
|
||||
- 验证:编排回归 32/32 通过;相关叙事、编排和存储测试 81/81 通过。新增断言确认无年月事件会得到 Agent 针对该事件生成的单一自然问题,并持久化 `event_date + evidenceId`,不再出现旧固定模板;未来事件、换方向和已有评分事件的行为保持兼容。
|
||||
- 防复发:任何能继续对话的业务分支都必须优先经过 narrative Agent;状态机可以决定证据目标和可评分性,但不得直接占用正常用户回复。确定性模板只能作为模型或技术计算失败时的技术兜底。
|
||||
- 相关记录:BUG-033、BUG-034、BUG-235
|
||||
- 复发自:BUG-033
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-042 | 生时校正沿用系统滚动条导致视觉割裂
|
||||
|
||||
- 状态:resolved
|
||||
@@ -843,15 +821,6 @@
|
||||
- 相关记录:BUG-020、BUG-034、BUG-042
|
||||
- 复发自:BUG-020
|
||||
- 修复版本:待提交
|
||||
- 影响面:生时校正缺少年月、未来事件、换方向和非评分更正后的自然问答
|
||||
- 用户现象:用户用自然语言补充“化学专业”“后来换了工作”等内容后,页面直接显示“你提到……具体内容我已经记下了。它大致是什么年月?”,与前后 Agent 语气断裂,也可能忽略刚才已经建立的事件上下文。
|
||||
- 根因:编排器发现本轮暂时没有可评分事件后,直接进入同步 `nonScoringTurn()`;该函数完全没有调用 narrative Agent,而是用固定字符串生成可见回复。Mastra 和模型没有获得生成这轮回答的机会。
|
||||
- 修复:非评分分支先用当前候选技术包、完整事件账本、最新用户原话和未决证据调用现有 narrative Agent;状态机只在后台固定本轮追问属于 `event_date`、`event_detail` 还是 `new_event`,不再替代 Agent 的可见措辞。模型或技术包调用失败时仍保留确定性安全文案,避免正常澄清变成 5xx。
|
||||
- 验证:编排回归 32/32 通过;相关叙事、编排和存储测试 81/81 通过。新增断言确认无年月事件会得到 Agent 针对该事件生成的单一自然问题,并持久化 `event_date + evidenceId`,不再出现旧固定模板;未来事件、换方向和已有评分事件的行为保持兼容。
|
||||
- 防复发:任何能继续对话的业务分支都必须优先经过 narrative Agent;状态机可以决定证据目标和可评分性,但不得直接占用正常用户回复。确定性模板只能作为模型或技术计算失败时的技术兜底。
|
||||
- 相关记录:BUG-232、BUG-233、BUG-235
|
||||
- 复发自:BUG-232
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-241 | 全球地点字段未迁移导致账户余额接口整体 500
|
||||
|
||||
@@ -976,7 +945,7 @@
|
||||
- 修复:新会话从首条 Agent narrative 开始持久化完整消息序列,每次回答后保存真实的 `Agent → 用户 → Agent` transcript;resume 接口按 turn version 读取 narrative,并用 evidence 的 source turn 关联用户原文,返回耐久的交替历史;页面优先用数据库历史修复旧 session。无法可靠恢复用户原文的残缺旧 turn 不再伪造模板回复,相邻 Agent 状态只保留最新一条;最末级 legacy fallback 也只恢复最近一组可靠消息,不再展开全部累计 evidence。
|
||||
- 验证:client、controller、route 聚焦测试 52/52 通过;component 非 Chromium 测试 8/8 通过;TypeScript `--noEmit`、目标文件 ESLint 与 `git diff --check` 通过。按用户要求未运行 Chrome/Playwright。
|
||||
- 防复发:聊天历史必须以逐轮 durable transcript 或可验证的 turn/evidence 关联为真源;累计业务证据只能用于评分与摘要,不能被前端推断成消息列表,也不能为缺失历史生成看似真实的 Agent 文案。
|
||||
- 相关记录:BUG-024、BUG-029、BUG-032、BUG-045(编号存疑:BUG-024、BUG-029、BUG-032 无法判定指向原记录还是 BUG-227、BUG-232、BUG-235)
|
||||
- 相关记录:BUG-024、BUG-029、BUG-032、BUG-045(编号存疑:无法判定这三个编号指向 BUG-024、BUG-029、BUG-032 本身,还是旧编号体系下实为 BUG-028、BUG-033、BUG-235)
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-047 | 相对日期缺少上下文解析并触发模板式重复追问
|
||||
@@ -990,7 +959,7 @@
|
||||
- 修复:对 `event_date` 和 `event_detail` 追问使用目标事件或最近明确事件作为年份锚点,将“来年、次年、第二年、翌年”和“同年、当年、那年”的月份上下文化后再提取,同时保留用户原始文本;允许带自然描述的日期补充完成原事件,但仅在纯日期、同领域或低信息细节时合并,避免把“搬家”等明确新事件吞入上一条澄清;普通澄清优先显示 narrative Agent 的自然回答,确定性模板仅保留为模型失败兜底。
|
||||
- 验证:事件提取与编排聚焦测试 59/59 通过,覆盖“2022年12月正式退学 → 来年1月彻底离校”解析为 `2023-01`、带描述日期补充、相对日期无上下文时不臆造年份,以及不同领域新事件不误合并。目标 TypeScript、ESLint 与补丁检查通过;按用户要求未运行 Chrome/Playwright。
|
||||
- 防复发:事件状态机只负责持久化目标、证据质量与评分边界,不得替代 Agent 的可见对话;相对日期必须在明确的当前事件上下文内解析,缺少可靠锚点时保持待澄清;澄清合并必须同时判断日期、摘要和领域连续性。
|
||||
- 相关记录:BUG-232、BUG-235、BUG-240
|
||||
- 相关记录:BUG-033、BUG-235、BUG-240
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-048 | 生时校正消息更新后没有自动滚动到最新内容
|
||||
@@ -1019,7 +988,7 @@
|
||||
- 重跑边界:新增独立、幂等的 `regenerate` 命令,使用上一轮已经持久化的用户原文和事件台账重新生成当前 Agent narrative;不重新提取事件、不追加用户消息、不重复评分、不改变候选范围、不扣点,并在当前消息列表和刷新后的耐久历史中替换原 Agent 回答。
|
||||
- 验证:TypeScript `--noEmit` 通过;叙事、Controller、client、route、orchestrator 聚焦测试 119/119 通过,覆盖悬空提问补全、无 payload 重跑、消息原位替换、证据与候选保持不变;组件静态/SSR 检查 9 项通过;目标 ESLint 与 `git diff --check` 通过。测试过滤器未按预期排除文件内的真实 Chromium 用例,该用例误启动后以 `SIGTRAP` 退出,未作为本次 UI 验收依据,且不再重试。
|
||||
- 防复发:结构化回答校验必须区分“出现疑问相关词”与“存在完整可回答的问题”;任何重新生成操作都必须与 evidence mutation、评分和计费分离,并通过相同 action receipt 保持幂等。
|
||||
- 相关记录:BUG-232、BUG-046、BUG-047、BUG-048
|
||||
- 相关记录:BUG-033、BUG-046、BUG-047、BUG-048
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-050 | 生时校正重跑期间重复显示旧回答和新思考气泡
|
||||
@@ -1048,7 +1017,7 @@
|
||||
- 修复:当上一轮可见问题明确包含原因、表现或“哪些方面”等细节追问语义时,即使 metadata 错标为 `new_event`,也把回答合并回最近一条带日期的有效事件;同时移除“这件事很有用,但还差时间定位”的固定话术,保留不假定上下文的简短兜底。
|
||||
- 验证:orchestrator 回归覆盖“1972年12月退学 → 追问压力原因但 metadata 错标 → 经济负担导致无法继续”,断言沿用原日期、合并为同一有效事件且不再出现固定索时模板;目标 ESLint、TypeScript 与补丁检查。
|
||||
- 防复发:事件追问的可见语义必须能够兜底结构化 metadata 的偶发错标;已有日期事件的原因、性质和具体表现回答不得强制再次提供日期。
|
||||
- 相关记录:BUG-232、BUG-047
|
||||
- 相关记录:BUG-033、BUG-047
|
||||
- 复发自:BUG-047
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
@@ -1125,7 +1094,7 @@
|
||||
- 修复:单条事件落入 `other` 时,优先调用 narrative Agent 结合最近事件上下文返回允许的语义领域;模型不可用、超时或仍返回 `other` 时才保留确定性结果。首轮和中间轮叙事连续失败统一返回可重试服务错误且不保存本轮,只有最终确认阶段保留包含安全边界与三类表的确定性 fallback。
|
||||
- 验证:新增“2020年4月去石油化工研究院实习做研究员”语义分类回归,确认保存为 `career` 并可评分;新增中间轮不合格输出回归,确认返回 `service_unavailable`、不保存事件、不推进版本且不产生模板消息。事件提取、叙事、编排和路由定向测试 134/134 通过。
|
||||
- 防复发:正则只负责低成本初筛和模型不可用时的降级,不得覆盖 Agent 对自然语言事件的语义判断;非最终轮生成失败不得用业务模板伪装成成功回答;候选时间、分盘事实、未来事件和重复计分仍由程序校验。
|
||||
- 相关记录:BUG-232、BUG-235、BUG-047、BUG-053
|
||||
- 相关记录:BUG-033、BUG-235、BUG-047、BUG-053
|
||||
- 复发自:BUG-053
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
@@ -1229,7 +1198,7 @@
|
||||
- 修复:仅在明确指向既有事件的 `event_date` 追问中,从目标事件继承年份或年月;允许兼容的年到月、月到日精度提升,并继续以 `correctsEvidenceIds` 保存修订链。普通新事件不猜测缺失年份。
|
||||
- 验证:新增 `2026-07 · 决定开公司 → 7 月 10 号` 回归,断言生成 `2026-07-10` 修订、保留原事件、沿用原摘要且不再次询问日期归属。
|
||||
- 防复发:无年份月日只能在定向日期追问且存在可靠目标日期时补全;日期精度提升必须与目标已有年份或月份前缀一致。
|
||||
- 相关记录:BUG-227、BUG-047、BUG-062
|
||||
- 相关记录:BUG-028、BUG-047、BUG-062
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
## BUG-064 | 窄候选被本地稳定性前置门控阻断导致长对话无法进入 VedAstro 验证
|
||||
@@ -1519,7 +1488,6 @@
|
||||
- 相关记录:BUG-067、BUG-069、BUG-072、BUG-074、BUG-075、BUG-080、BUG-081
|
||||
- 修复版本:待提交(本地可测)
|
||||
|
||||
|
||||
## BUG-083 | staging 质量门使用无可用 Linux sandbox 的浏览器运行时导致验收失败
|
||||
|
||||
- 状态:resolved
|
||||
@@ -1694,7 +1662,6 @@
|
||||
- 复发自:无
|
||||
- 修复版本:`birth-time-rectification-v6` / `rectification-agent-v6-1`
|
||||
|
||||
|
||||
## BUG-095 | 生时校正“思考中”无法证明实际执行步骤且刷新后不可溯源
|
||||
|
||||
- 状态:resolved
|
||||
@@ -2916,7 +2883,6 @@
|
||||
- 相关记录:BUG-060、BUG-163、BUG-168
|
||||
- 修复版本:待提交
|
||||
|
||||
|
||||
## BUG-170 | V9 Agent 开场未收到 Case ID 导致工具调用失败
|
||||
|
||||
- 状态:resolved(本地候选)
|
||||
@@ -3244,7 +3210,6 @@
|
||||
- 相关记录:BUG-178、BUG-181、BUG-189、BUG-190
|
||||
- 修复版本:本次功能分支提交(精确 SHA 以提交、远程分支和 staging 发布核对结果为准)
|
||||
|
||||
|
||||
## BUG-192 | 外层 `.gitignore` 漏提交上游 `.agents`,clean staging package identity 不完整
|
||||
|
||||
- 状态:resolved(本地候选,待 staging 精确 SHA 发布验收)
|
||||
@@ -3290,6 +3255,7 @@
|
||||
- 相关记录:BUG-042、BUG-048、BUG-140
|
||||
- 复发自:无
|
||||
- 修复版本:本次 staging 集成提交(精确 SHA 以远端 `staging` 核对结果为准)
|
||||
|
||||
## BUG-195 | 生时校正焦点已写入却被前端误报为未完成
|
||||
|
||||
- 状态:resolved(本地候选,待 forward migration、staging 发布与登录态业务验收)
|
||||
@@ -3771,7 +3737,23 @@
|
||||
- 根因:`BUG-018` 至 `BUG-043` 连续 26 个编号加上 `BUG-209`,共 27 个编号各被两条不同记录占用。成因是并行分支各自追加记录、合并时两侧都保留。该失效模式仍在持续:仅在准备本批提交的一小时内,`staging` 就两次抢占了本地待提交记录的编号(先 `BUG-214` 后 `BUG-215`),迫使本地记录两轮顺延。
|
||||
- 修复:保留每对中较早的记录编号,为后加入的一条分配 `BUG-221`~`BUG-247`。逐条审计了 78 行指向受影响编号的引用:其中 10 行凭"合并保留了两侧副本、两份仅编号不同"直接判定,13 行凭语义判定(如 `复发自:BUG-019` 出现在「收到具体经历后仍重复泛问」中,按保留编号读是「原问题交接租约过期」全然无关,按顺延编号读是「自然语言真实事件被静默丢弃」同属一条提取链),14 行属自引用的全球地点集群,5 行属合并后的模板追问流;36 行确认本就正确未动。另在文档头部 `使用流程` 增补一条:追加记录前必须先检索当前最大编号。`AGENTS.md` 第 7 节把「必须完整读取并搜索」改为「必须用报错原文、接口路径、状态码、模块名和用户操作强制检索,并完整读完命中的记录」,并明写「检索不是可选步骤」——该文件已达 3690 行约 150 KB,通读一次约耗 5 万 token,原措辞在实践中不可执行;六条执行要求逐条未改。同步更新 `tests/test_bug_history_workflow.py` 的断言以匹配新措辞并追加「检索不是可选步骤」一条,保持约束强度。
|
||||
- 验证:重复编号 0;记录总数 247 条不变;编号 001–247 无空缺;无悬空引用;无冲突标记;`docs/BUG_HISTORY.md` 仅因新增的头部说明 +1 行,`AGENTS.md` 行数不变;逐行归类确认改动仅落在 27 个标题行、38 个 `相关记录` 行、8 个 `复发自` 行,`状态`/`根因`/`修复`/`验证`/`防复发` 等正文字段零改动。`tests/test_bug_history_workflow.py` 两条断言通过。
|
||||
- 待跟进:审计中发现一个更早、更严重的缺陷——约 3617–3853 行区间内**记录正文与标题整体错位一位**,部分标题下只剩 3 行结尾字段而没有 `状态`/`根因`(247 条记录只有 228 条填了 `首次发现`);且 `BUG-221`~`BUG-234` 本质是 `BUG-020`~`BUG-035` 的重复记录,编号已唯一但内容仍冗余。两者都需要移动正文内容,属内容编辑,未在本轮处理。另有 7 行属"混合编号"(此前有人部分修正过),证据不足以判定,已就地加 `(编号存疑:…)` 标注而未改数字。
|
||||
- 待跟进:审计中发现一个更早、更严重的缺陷——`BUG-020`~`BUG-041` 区间内**记录正文与标题整体错位一位**,部分标题下只剩 3 行结尾字段而没有 `状态`/`根因`;且 `BUG-221`~`BUG-234` 本质是 `BUG-020`~`BUG-035` 的重复记录,编号已唯一但内容仍冗余。两者都需要移动正文内容,属内容编辑,未在本轮处理,已由 BUG-254 完成。另有 7 行属"混合编号"(此前有人部分修正过),证据不足以判定,已就地加 `(编号存疑:…)` 标注而未改数字。
|
||||
- 防复发:BUG 编号必须唯一;追加记录前先检索当前最大编号;出现重复时保留较早记录的编号并同步修正指向它的 `相关记录` 与 `复发自`。强制性文档约束的措辞必须与文档实际体量相称,否则会被普遍忽略而失去约束力。
|
||||
- 相关记录:BUG-253 无前序同类记录
|
||||
- 修复版本:本地未提交候选
|
||||
- 修复版本:本地未提交候选
|
||||
|
||||
## BUG-254 | 22 条记录的正文挂在别人的标题下,其中一条正文被压在另一条记录末尾
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-08-17
|
||||
- 最近更新:2026-08-17
|
||||
- 影响面:`docs/BUG_HISTORY.md` 中 `BUG-020`~`BUG-043` 与 `BUG-221`~`BUG-240` 区间的 22 条记录。
|
||||
- 用户现象:无终端用户可见现象。对维护者与 AI agent 而言,按标题检索到的记录读出来是另一个 bug 的现象、根因与修复——比查不到更危险,因为它看起来完全正常。BUG-253 已修复编号唯一性,但当时判断"需要移动正文内容"而留作待跟进。
|
||||
- 触发条件:按 `BUG-036`~`BUG-041`、`BUG-235`~`BUG-240` 任一编号检索并阅读其正文。
|
||||
- 根因:三个缺陷叠在一起,都源自 2026-07-25 的合并提交 `3ca30ed7`。其一,该提交自身的标题序列与正文序列就已错开一位,从 `BUG-036` 起每份正文实际属于前一个标题,末尾 `BUG-240` 的正文则被整段追加到 `BUG-043` 之后,使 `BUG-043` 带了两份完整正文。其二,两条分支各自保留了同一批记录的结尾三行(`相关记录`/`复发自`/`修复版本`),多出来的副本落在下一个标题之下,形成 11 处"有标题无正文、只有三行结尾"的空壳。其三,`BUG-221`~`BUG-234` 与 `BUG-020`~`BUG-035` 标题逐字相同、共用同一份正文,本就是同一个 bug 的两份记录,BUG-253 为消除编号冲突给后者另分了编号,反而把"重复"固化成了 14 条独立记录。
|
||||
- 修复:按内容而非位置重新绑定。11 处只剩结尾三行的空壳先行删除——逐条比对确认其中 7 处与所属记录的结尾逐字同义(仅编号体系不同),另 4 处是所属记录结尾的真子集,差集恰为 BUG-253 标注过的 `BUG-018`/`BUG-019` 存疑残留,删除不丢信息。随后把错位区间内 11 份正文各回退一个标题,`BUG-240` 的正文从 `BUG-043` 末尾取回;每一次归属都以正文中的 `用户现象`/`根因` 与标题语义逐条核对,不依赖行号。14 对重复记录合并为一条,保留较早编号,`BUG-221`~`BUG-234` 退役成空号,23 处指向退役编号的引用回指合并后的编号。`BUG-235`~`BUG-240` 在 `3ca30ed7` 中就缺失的 `状态`/`首次发现`/`最近更新` 三行按同批次记录补记,并在 `状态` 行内标明"非原文",不冒充原始内容。
|
||||
- 验证:记录数 253 → 239(退役 14 个重复编号);结构不完整的记录 22 → 0;重复编号 0;悬空引用 0;冲突标记 0。以"改动前每一行正文必须在改动后仍然存在"为口径做了全量比对,34 行差异全部落在被重写的引用行与被删除的 11 处重复结尾上,无正文丢失。`tests/test_bug_history_workflow.py` 通过。
|
||||
- 防复发:`docs/BUG_HISTORY.md` 出现合并冲突时,只消除冲突标记不算解决——必须逐条确认标题与其下正文仍然对应,判据是正文的 `用户现象`/`根因` 能否解释标题。两条分支各自追加记录时,标题逐字相同的两条必须合并为一条而不是分配新编号;分配新编号只应对"不同的 bug 恰好撞号"。
|
||||
- 待跟进:`BUG-163` 的 `状态`/`最近更新`/`根因`/`验证`/`修复版本` 各出现两次,疑为同一记录两轮更新直接拼接。该缺陷早于本轮、不属正文错位,未处理。
|
||||
- 相关记录:BUG-253
|
||||
- 修复版本:本地未提交候选
|
||||
|
||||
Reference in New Issue
Block a user