Commit Graph
2 Commits
Author SHA1 Message Date
Jesse_ChenandClaude Fable 5 3e58e85f8f docs(tasks): P0 — tie-break entry destroys the delivery card; session list lies about rectification
两组缺陷,分两单。

会话列表单追加 BUG-700/701:全仓只有 append_consultation_question 这个
咨询 RPC 写 chat_sessions.updated_at,校正的 turn 走自己的表从不推进,于是
校正会话的 updated_at 冻结在创建时刻——连着几小时答题也不动位置。叠加
BUG-699 的改名,列表变成「名字是今天、排序是旧日期」。而 resolveBootstrap-
SessionSelection 的 ?c= 只比对当前已加载那一页(SESSION_PAGE_SIZE = 40),
翻不到就判 missing、打「该对话不存在或已被删除」并清掉 URL。查过了没有任何
删除路径被触发,会话大概率仍在库里。

新单 BUG-702~704:applyLiveCandidateOffer 遇到任何未答的 choice/collect_spoken
就把 candidateOffer 从每一条消息上剥掉,而 requestTieBreak 必然写入这样一道题
——点卡上的按钮必然丢卡。按钮亮不亮看 tieBreakPersonalityAvailable(只看
followup),题能不能画成选择题看 buildChoiceCard 的 styleOptions.ok /
canRenderYearlessChoice,两个判据不一致,于是按钮亮着、点开是裸题,卡又没了,
两条路都断。交付旁白还写了 VOICE 明令禁止的「相对支持度」,并在自称不再问
分盘题的同一屏提供分盘题入口。

产品重申 BUG-686 的原意:卡上不要参考题按钮,出卡前收集完,以卡结算。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-15 07:44:40 +00:00
Jesse_ChenandClaude Fable 5 224244c014 docs(tasks): P0 brief — opening a stored rectification session renames and re-sorts it
openRectificationCase 构造 merged 时无条件 title: resolveSessionTitle(…) 与
updatedAt: timestamp()。同一个对象里 pinned 和 archivedAt 是从 existing 继承
的,说明作者知道这条路径会跑在已存在的会话上,只是漏了这两个字段。
resolveSessionTitle 的日期来自 new Date(),于是 9/12 建的会话被改名成
「9月15日 · 生时校正」,同名时再追加时:分。

两种损坏持久性不同,修复时要分开:persistSession 的 update 分支写 title
但不写 updated_at(BUG-553 的正确遗产),所以标题是永久写坏服务端,排序
只坏在客户端 state、刷新自行恢复。已坏的历史标题按 created_at 修回,取不到
就退回不带日期的中性标题,不猜。

复发自 BUG-553——它的防复发「updatedAt 只由对话活动推进」只是 Bug 记录里
的一句话,没有任何测试执行,且当时只覆盖元数据 PATCH 与五条客户端路径,
漏了当时就存在的校正 open 路径。本单要求把那句话变成测试。

咨询侧三处 resolveSessionTitle 都有 messages.length === 0 && 通用标题的守卫,
不受影响,明令不得顺手改。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-15 06:25:18 +00:00