Repository navigation
[PR] fix: apply the same superseded translation as compress for pre-restamp numbers in decompress scope (fix false FAILED) | fix: decompress 范围恢复对 restamp 前编号走与 compress 相同的 superseded 翻译(修假 FAILED) - #5081
ranxianglei wants to merge 2 commits into
Conversation
📦 Built Package ArtifactBranch: Latest build — install this exact versionnpm install -g billion-context@0.0.9161-pr.5081.7b8a0ccThis exact version is immutable and reproducible. The rolling Recent builds (commit → version)
Download artifact
tar xzf billion-context-pr5081.tgz
npm install -g packageInstall instructions are refreshed on each push. |
[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b) PR #5081 review 结论(分支 八问
验证与 CI(review 中发现并修掉一处红)
判定:代码与测试通过审核,有意行为变更已披露且有测试钉住;待新 head 全量矩阵绿即可合。CI 跑完我再补一行确认。 |
[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b) CI 确认:新 head 最终判定:可合。 合并时留意分支 BEHIND master(rebase 或走合并队列即可)。#4599 已按协调惯例留了一行结论。 |
[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b) 收工总结(对应 GitHub PR #5081,分支
判定:可合(分支 BEHIND master,rebase 或合并队列即可)。合并由 owner 执行。 |
[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b) Merge-guard 第 6 轮同步完成。本轮情况:另一个 worker 曾向同一 PR 分支推过一个基于旧 master 的同步合并(3c9cf58),与我的本地验证头分叉;我把远端该头 + master 剩余提交全部合入(无冲突),得到统一头 f464be0——它包含当前 master tip 491ac1d,分支不再 behind。期间 git mirror 出现过两次瞬时 502,恢复后一次推送成功。本地 typecheck 干净 + 导出回归测试 6/6 绿;推送后 PR mergeable、检查计算中。全量结论以远程 CI 为准;无冲突需设计决策,未开 decision-request issue。 |
…#5049 item 4) A folded message cited by its PRE-restamp number hit a generic '[decompress FAILED]' on the range path, while compress translated the same citation to the live ref of the same message (supersededRefRejection). Asymmetric UX for one mechanism, and a shifted-window hazard if the old numbers happened to fall inside the post-restamp coverage. - extract supersededRefRejection (+ interface) verbatim into src/superseded-refs.ts so both lanes share ONE resolution ladder without a stream<->decompress import cycle; stream.ts re-exports it for the existing import sites - resolveDecompressRange now translates startId/endId through the ladder before comparing against block coverage; only genuinely dead cites refuse, with the compress-side actionable wording (re-read acp_status, re-issue) - live citations and sessions without a superseded map are byte-identical to the old behavior (pinned) Part of #5049
The extraction made the interface exported, but every reference stays inside src/superseded-refs.ts (callers consume supersededRefRejection's result structurally) — the gate flags it INTERNAL_ONLY. Restore the original stream.ts shape (non-exported interface, exported function): behavior-neutral, one keyword.
aef4987 to
e1d42b6
Compare
(ai: vllm-qwen/qwen3.8-27b) 冲突已解决并推送完成。七问如下: 1. 这次做了什么? 2. 冲突是怎么产生的? 3. 冲突具体怎么解的?
4. 验证结果? 5. 是否引入行为变更? 6. 回归风险? 7. 当前状态与后续? |
是什么
#5049 第 4 条(v0.1.209 回归 review 遗留):折叠消息引用 restamp(重启重编号)前的 mNNNNN 编号时,decompress 范围路径(
resolveDecompressRange)拿旧编号直接和 restamp 后的覆盖集比对 →[decompress FAILED]通用拒收;而 compress 侧同一引用经supersededRefRejection翻译到同一条消息的现行编号后正常折叠。一个机制、两条车道,UX 不对称。修法
supersededRefRejection(+SupersededResolution)从src/stream.ts原样抽到src/superseded-refs.ts(stream↔decompress 互为导入,必须放独立模块);stream.ts 保留 re-export,既有导入点(tests/issue4797-superseded-deadlock.test.ts、tests/seq-ledger-pr3.test.ts)不动;resolveDecompressRange端点先过同一裁决阶梯(live 优先 → superseded 翻译 → 仅 dead 引用才拒),再比覆盖集;dead 引用给出与 compress 侧一致的可操作文案(re-read acp_status and re-issue);tests/issue5049-decompress-superseded.test.ts5 个测试:restamp 前引用翻译成功(本条回归钉)、live 编号直通不变、dead 引用按 compress 文案拒收且不排队注入、倒序引用在翻译值上仍 swap 拒收、无 superseded map 时旧行为逐字不变。行为变更披露(有意)
[decompress FAILED: bN covers no messages in mXXX–mYYY …](或更糟:若旧编号恰好落在新覆盖区间内 → 静默恢复错位的窗口)。验证
本地定向:
issue5049-decompress-superseded(5/5)、ccr-v2、issue4797-superseded-deadlock、seq-ledger-pr3、decompress-empty-range、decompress-image-ref-dispatch、preflight-covered-ranges、dead-ref-range-filter、compress-recovery-ranges合计 60/60 绿;typecheck 干净。全量交 CI。Part of #5049