Replies: 2 comments
Follow-up — Evidence chain (session-side data + orphan-block scan)1. Session data is healthy — this is not data corruptionUsing the official
So the log that the client refuses to open is the same log the data layer folds cleanly. The failure is in the client's loading path, not in the record. 2. Orphan step blocks are a general pattern — not exclusive to edited sessionsA full scan of 99 sessions found 11 sessions carrying "empty step blocks" —
This widens the trigger beyond "edited sessions": any session whose log contains a pre-step orphan block (a normal agent-loop write sequence) can hit the same throw on reopen. 3. Reproduction & session-side workaroundReproduction: edit/revert any message in a session (a third-party edit op writes a replace marker), reopen the session → Session-side workaround (does not fix the client): remove the orphan step blocks and renumber — after that 跟帖 — 证据链(会话侧数据 + 孤儿块扫描)1. 会话数据 100% 健康——这不是数据损坏用官方
也就是说:客户端拒绝打开的日志,正是数据层能干净折叠的同一份日志。问题在客户端的加载路径,不在记录本身。 2. 孤儿 step 块是普遍模式——不只出现在编辑过的会话全量扫描 99 个会话发现 11 个会话携带"空 step 块"——
这把触发范围从"编辑过的会话"扩大为:任何日志含 pre-step 孤儿块的会话(agent 循环的正常写入序列)都可能在同一抛错下重开失败。 3. 复现与会话侧缓解复现:编辑/撤回会话中任意消息(第三方编辑操作写入 replace marker)→ 重开会话 → 会话侧缓解(不修客户端):移除孤儿 step 块并重编号后—— |
EN / EnglishFollow-up 2 — the fix this family needs: isolate, don't throw (2026-09-08)One contract, three trigger classes, one fix. The four reports in this thread and its family (#5884, #5907, #5909) are not separate bugs — they all hit the same Since this thread was posted (2026-09-05), three more reports have landed on the same core claim — the assembler aborts the whole window on a single unexpected context transition. Recommended fix first, evidence below. The fix (one code change, covers all four): in Two refinements, in order:
Why — four triggers, one shared behavior:
Not four isolated points — a full master sweep (2026-09-08, @argszero source-verified #5884 ( Authorship note: reproduced and documented by me in real-world usage; root-cause tracing and drafting assisted by AI; verification and publication by me. I have no engineering background — if any technical claim reads wrong, please call it out; I will re-verify against the toolchain and correct. Reported by the OfferKuai Team — Founder: Zhaofeng (Yaming). Website: https://www.offerkuai.com/ | Contact: contact@offerkuai.com 中文版 / ZH跟帖2 — 这个家族需要的修复:隔离,而不是抛出(2026-09-08)一个契约、三类触发、一个解法。 本帖与其家族报告(#5884、#5907、#5909)不是四个独立 bug——它们都命中同一个 自本帖发布(2026-09-05)以来,又有三份报告落在同一核心主张上——assembler 因单个意外 context 转换中止整个窗口。先给修复建议,证据在后。 修复方案(一处代码改动,覆盖全部四种): 在 两个细化,按序:
为什么——四种触发,一个共同行为:
不是四个孤立点——2026-09-08 对 master 全量核验( @argszero 已源码核实 #5884( 协作说明:本文由我在真实使用中复现并记录;根因与成文由 AI 协助完成,我负责校验与发布。我非工程背景,技术表述如有错误,欢迎指出——我会回去用工具链重新验证后更正。 本报告由 OfferKuai(Offer快)团队提交 —— 创始人:Zhaofeng(Yaming)。官网:https://www.offerkuai.com/ | 联系:contact@offerkuai.com |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
EN / English
Summary
Sessions containing replace markers fail to load on reopen with:
conversation Context N:turn-tail received an update before its start Match (internal). The root cause is a client-side window pagination defect:history({ maxMessages: 50 })loads a tail window, but when replace markers exist, shadowed nodes are excluded from visible-message counting — causing the window start to land mid-turn. The turn-tail matcher then receivesturn/endbeforeturn/startand throws.This is a pure official DSH client defect (in
dsh-client-runtimeacceptMatch). Replace markers from any source (third-party edit/revert or official compaction) merely trigger it — the defect is the missing tolerance, not the marker.Upstream status (checked against repo master, 2026-09-05): the
received an update before its start Matchthrow is still present inpackages/client/ui-conversation/src/client/conversation/assembler.ts(3 sites, no degradation path), and orphanstep/startblocks written beforeturn/startstill map toupdaterole in the turn-tail matcher. Window pagination has since gained asourceEventSeqsbacktrace (paginateinsession-controller/history.ts) which partially mitigates the replace-marker case — but the window cut lands at a message-group start, not aturn/startboundary, so a window can still open mid-turn and trip the same throw.Trigger Condition
history({ maxMessages: 50 })window start lands after a turn'sturn/startturn/endwithout priorturn/start→ throwProposed Fix
update-before-startshould degrade to "skip/ignore" instead of throwing —turnLocation/tailDataalready have null-tolerance pathsturn/start(ensuring complete turn structure within window)update-before-start, shift window start back one turn boundary and retryAuthorship note: reproduced and documented by me in real-world usage; root-cause tracing and drafting assisted by AI; verification and publication by me. I have no engineering background — if any technical claim reads wrong, please call it out; I will re-verify against the toolchain and correct.
中文版 / ZH
摘要
含 replace marker 的会话打开即报:
历史加载失败:conversation Context N:turn-tail received an update before its start Match(internal)。根因是官方客户端窗口分页缺陷:history({ maxMessages: 50 })从尾部加载窗口,但 replace marker 存在时被遮蔽节点不计入可见消息 → 窗口起点落在某 turn 的turn/start之后 → turn-tail 匹配器先收到turn/end无turn/start→ 抛错。这是纯官方 DSH 客户端缺陷(
dsh-client-runtimeacceptMatch)。任何来源的 replace marker(第三方编辑/撤回或官方 compaction)只是触发条件——缺陷在缺失的容错,不在 marker。上游现状(对照仓库 master,2026-09-05):
received an update before its start Match抛错在packages/client/ui-conversation/src/client/conversation/assembler.ts仍有三处、无降级路径;turn/start 之前写入的孤儿step/start块在 turn-tail 匹配器中仍映射为 update role。窗口分页(session-controller/history.ts的paginate)已新增sourceEventSeqs回溯——对 replace-marker 场景是部分缓解——但窗口起点落在消息源组起点而非turn/start边界,窗口仍可能从 turn 中间切开并触发同一抛错。触发条件
history({ maxMessages: 50 })窗口起点落在某 turn 的turn/start之后turn/end无turn/start→ 抛错建议修复
update-before-start应降级为"跳过/忽略"而非抛错turn/startupdate-before-start时窗口起点前移一个 turn 边界重试署名 / About
EN: Reported by the OfferKuai (Offer快) Team. Website: https://www.offerkuai.com/ | Contact: contact@offerkuai.com
ZH: 本报告由 OfferKuai(Offer快)团队提交。官网:https://www.offerkuai.com/ | 联系:contact@offerkuai.com
Evidence chain and detailed analysis follow in the comments below.
(详细证据链与分析见下方跟帖。)
协作说明:本文由我在真实使用中复现并记录;根因与成文由 AI 协助完成,我负责校验与发布。我非工程背景,技术表述如有错误,欢迎指出——我会回去用工具链重新验证后更正。
All reactions