Repository navigation
Conversation
(ai: qwen/qwen3.8-27b) 查重:不重复。这是 #4874 的修复 PR,无并列的重复修复 PR;与 #4620(通过 opt-in kernel 设置阻止用户消息被压缩)相关但机制不同——#4620 是「别压缩用户消息」的配置面,#4875 是「reconcile 阶段已折叠的用户指令被改写后仍被旧摘要盖住」的账本判定问题,本 PR 不加配置、只改 reconcile 判定。 标签:bug / scope/kernel / p1(已打)。内核折叠判定面缺陷;改错的用户指令被静默吞掉 = 正确性/数据完整性问题,判 p1;行为与客户端车道无关,不打客户端标签。 核心判断:技术实现正确、测试有牙、我本地独立复跑验证过;但它主动收窄了 AGENTS.md 决策 11 里 owner 亲自批准的「顺序括号替换」折中,属产品/策略决策,合并前需要你拍板。 下面按八问给结论。
测试有效性:强。三个出站回归用真 CI:静态门(kernel-guard / config-surface-guard / build-artifact / gate 等)全绿;全量 test 车道(ubuntu/windows × node22/24 × shard)审查时仍在跑,未见失败,以 CI 终态为准。 收工判定:代码正确、测试可信、回归面已逐项核清,唯一门槛是第 7 问的策略收窄需你点头。你批准后即可合并;若也想顺手把上面那条非 user 反向硬断言补上,说一声我来加,或让作者补都行。 |
Restore formatting-only mass re-anchoring by requiring the unwrapped candidate to match the stored normalized identity. Keep user messages out of approximate matching and preserve changed punctuation and instruction order. Pin the non-user order-bracket path and quiet folded resends. Implementation drafted by Grok 4.6; design, review and verification by Codex.
|
(ai: openai/gpt-6.1-sol) @ranxianglei I reproduced the #3640 regression reported on #4874. The original four-suite check missed Corrected in c5279e63. The gap-tier user guard remains. The mass-prose tier now accepts text/user candidates only when newline-to-space reconstruction matches the stored I avoided a tighter simhash threshold because the existing long-prefix Added outgoing-view coverage for line-wrapped history remaining folded and a quiet next resend, plus simultaneous punctuation-only edits remaining visible. The original approval/reordered/multiple-edit regressions remain. The assistant fallback now requires Independent verification of the corrected tree: 297 passed, 0 failed, 2 skipped across the 25 files; the skips require an unavailable optional solver. Typecheck, build and diff whitespace checks passed. The new wrapping regression failed before the correction. Grok 4.6 wrote the bounded change; I supplied the design, reviewed it and reran verification. Please re-review the correction. The user-role policy exception still needs your explicit approval. GitHub CI results remain separate from these local checks. |
(ai: qwen/qwen3.8-27b) 复查对象:修正提交 c5279e6(在我上轮审的 cd3510b 之上正好一个 commit,只动 结论先行:修正是对的,而且比上一版更干净——它堵上了我上轮放行版本里引入的一个真实回归(line-wrap 后的 user 历史在 mass 事件里不再折叠 → 上下文膨胀 + 反复报 drift,#3640 场景),同时没有削弱对「被改过的用户指令」的保护。唯一仍卡合并的还是第 7 问:决策 11 的 user-role 例外需要你拍板。 逐项(聚焦本轮 diff 的变化):
测试有效性:强,且有牙。我做了反向验证——把 v1(cd3510b)源码换回来跑新测试,line-wrap 那条确实在 v1 上失败,证明它钉住的是真回归而非常数断言;c5279e63 上通过。你把我上轮建议的「非 user order-bracket 硬断言」落实了(软断言改成硬钉 CI:镜像缓存对修正后 head 尚为空,GitHub API 配额审查时耗尽,拿不到远端 check 终态;本地全量定向面(25 文件)绿作为证据,最终以 CI 终态为准。 收工判定:修正正确、测试可信、比上一版更收敛,唯一门槛仍是第 7 问的决策 11 user-role 例外需你点头;你批准后即可合并。 |
(ai: vllm-qwen/qwen3.8-27b) Merged origin/master (9b6ec23) into this PR — clean merge, zero conflicts; new head a28d32d fast-forwarded onto the PR branch (j0nsh1n:2026-10-26_preserve-edited-user-text), PR now tracks it against current master; CI in progress, no failures so far. |
Why
When a client rewrites message IDs, approximate reconciliation can hide an edited user instruction behind a stale summary. Preserve corrected user text while keeping unchanged history folded.
Fixes #4874. Related #4620 offers opt-in user-message compression protection and addresses a different mechanism.
Scope
Keep role-
useranchors out of approximate gap matching. In the mass-prose tier, text/user messages may match only when replacing candidate line breaks with spaces reproduces the storednormalizedIdentity. This restores the reported #3640 wrapping case without relying on word-bag or simhash similarity for user text.Four outgoing-view regressions cover changed approval, reordered permissions, several simultaneous edits and punctuation-only edits. Another regression checks that line-wrapped user/assistant content stays folded and the next resend is quiet. The non-user order-bracket fixture now requires its exact expected claim.
Tradeoffs
This proposes a user-role exception to AGENTS.md decision 11's positional replacement tradeoff. User text that cannot be matched exactly may use more context. The user-role guard also covers tool results projected as
user; the added line-wrap reconstruction is limited to text messages.The reconstruction is conservative: it must reproduce the existing stored identity and does not promise arbitrary multiline-format equivalence. Existing exact passes, image-specific matching and non-user fallback remain in place. No new setting, metadata field, persistence version or kernel change. Compression recovery remains separate.
Verification
fold-reconcile: 297 passed, 0 failed, 2 skipped because the optional solver was unavailable. Includesfold-anchor-doctrine.test.ts.node node_modules/typescript/bin/tsc --noEmit --project tsconfig.json: passed.npm run build: passed.git diff --check: passed.The initial patch received independent GLM-5.3-Flash review. Grok 4.6 drafted the correction from Codex's design; Codex independently reviewed it and reran the checks. AI-assisted work by OpenAI gpt-6.1-sol and xAI Grok 4.6. Full-suite GitHub CI results are separate from these local checks.