Repository navigation
[PR] test: reproduce legacy folded tool coverage loss after upgrade - #5836
mariopasquali wants to merge 1 commit into
Conversation
(ai: vllm-qwen/qwen3.8-27b) 查重: 不重复。 Closest neighbors checked: #4131/#4141 (merged — fixed the explained-churn destruction path: the #1001 rewrite detector pruning the ref map during full reanchoring), #1921 (original ladder), #3752 (cap-eviction lite anchors), #2903 (legacy-anchor drift evidence), #4484 (block-merge coverage). None reproduces this case: coverage loss with zero stored identity evidence. This PR is the only reproducer of that residual. Related family cited, not duplicated. 标签: bug · scope/kernel · p2 · needs-decision(折叠判定面的升级残差缺陷;src 侧压缩决策面;可用但有明确代价,有绕行)。 🔶 需要决策背景一句话:跨 v0.1.201 升级后工具消息 id 按设计重铸(#3642),当会话既无 待决问题:「升级后的 envelope 缺失全部身份证据」是受支持状态(则阶梯需要兜底机制),还是迁移方违约(则契约写清、测试改特征化)?
推荐:先 A(低风险、钉住边界、解锁讨论),B 作为后续加固由 owner 定夺。不决定的默认行为:PR 保持 draft,T4 红断言不可合并,问题继续挂在 #5824 线程下。 Verification (done locally on PR head
|
|
该PR已按根因归类纳入 [dsh-lane] 根因汇总 #6294,由汇总单统一跟踪处理;本单不再单独跟进,故关闭。如认为归类有误或问题仍未解决,请直接回复,会重新打开。 |
|
状态更正(自动化脚本误操作): 本单此前被「纳入根因聚合」流程误关闭, 现重新打开。机器人工作已停, 本单由根因聚合线程统一跟踪, 根因修复落地后请手动关闭或在本单回复「close」。 |
|
重新打开:此前被归类聚合脚本误关。按 owner 口径,纳入根因聚合的 issue 只停机器人、不关闭,由根因聚合线程统一跟踪,根因修复落地后统一关闭。 |
|
(更正)此前按"清理"口径误关闭;按 owner 口径纠正:被根因聚合纳入的 issue 只停机器人、不关闭。本 issue 重新打开,机器人工作已停。 |
[bot] CI 红项核查结论:这是草稿 PR 里按设计故意失败的回归断言,不是 CI 故障,无需修。 核查过程
冲突:无文本冲突(mergeable: True),仅 base 落后于当前 master(c26c31a → 33104b1)。草稿阶段不强行 rebase——rebase 后 T4 仍会失败(除非 master 已修该 bug,无证据),只会重跑一遍同样的红 CI。 判定与处置
|
Relates to #5824.
An unchanged Anthropic replay can emit an already-folded tool call/result after upgrading legacy IDs when their old anchors are unavailable. This draft adds a small synthetic reproducer, with no runtime or kernel changes.
The fixture contains 13 invented messages decoded with the official 0.1.200 kernel. Three controls pass: legacy IDs retain their saved coverage; current decoding preserves the same payloads apart from IDs; and retaining the old anchors lets current IDs reconcile correctly. Without those anchors, the actual prune view contains both folded tool messages again (
2 !== 0). PersistedlastMessagesis empty, and the replay clears the auxiliary-request guard.This exercises unmatched coverage. The related work in #4141 handles explained churn after full reanchoring.
Validation: clean install/build and typecheck; focused test has three passes and one deliberately failing regression assertion on 0.1.212 and current master. This is a draft test proposal for discussing the supported compatibility behavior. It does not prescribe a fix, reproduce the whole large-session outage, or measure SQLite performance. All fixture content is synthetic.