Skip to content

[PR] fix: seed the Anthropic cache-breakpoint ladder on fork adoption (#5519) - #5525

Open
ranxianglei wants to merge 6 commits into
masterfrom
2026-11-02_fork-cache-mark-ladder-init
Open

ranxianglei wants to merge 6 commits into
masterfrom
2026-11-02_fork-cache-mark-ladder-init

Conversation

@ranxianglei

Copy link
Copy Markdown
Owner

是什么 / What

Fork/resume 采纳(applyForkAdoption)搬 blocks、refs、token snapshot 等,但不搬 Anthropic 缓存断点账本(session.metadata.anthropicCacheMarkIds)。新采纳的会话首轮 anthropic 请求只能打一个尾部断点:早期前缀在子会话侧从未申请过缓存,写阶梯从空开始重建(#5519)。观测:fork 首轮 8.07MB 请求与父会话末轮字节公共前缀仅 2,552 字节(0.03%),第 2 轮起才回到 ~90% 命中。

修法 / Fix

  • applyForkAdoption 武装一次性标志 metadata.cacheMarkLadderInitPending(四条采纳路径——匿名 fork、identified resume、derived fork、boot reconcile——都汇聚于此,一处覆盖全部)。
  • 子会话首次 anthropic-owned 布点时按位置铺 25% / 50% / 尾部三点(仅在无存活 marks 且 lastIndex>=3 时);标志无条件消费。此后走原 [Bug] Anthropic lane never emits cache_control breakpoints — prompt cache can only ever cover the system head (~11K), the whole history re-bills at full price every request #1637 粘性动态(marks 到上限即冻结,直到折叠退役被覆盖者)。
  • 刻意不逐字继承父会话 mark ids:父侧位置在子会话视图里是陈旧的,且 3 个继承 marks 会填满 MESSAGE_MARK_CAP=3、阻塞子会话自己的尾部 push——第 2 轮命中深度反而比现状更差(issue 建议 1 的字面实现是负优化,已在 issue 线程说明)。

行为变更披露(old → new)

  • fork/resume 首轮 anthropic 请求:消息断点 1 个(仅尾部)→ 最多 3 个(1/4、1/2、尾部)。有意变更,issue 所诉;稳态会话字节级不变(标志只在采纳瞬间武装,一次性消费)。
  • 配置面(config surface):无变更——新增字段是内部 metadata 标志,不是配置项,不进入 config/env/CLI。
  • kernel-guard:不涉及——纯 host 侧(src/loop/cache-control.ts + src/fork-adoption.ts),零 kernel/ 触碰。

测试 / Tests

Closes #5519

ci-check added 3 commits November 2, 2026 14:32
A fork/resume that adopts its parent's compression state started with no
cache-breakpoint ledger of its own: computeAnthropicMessageMarks only ever
pushed the single tail mark, so the child's first turns left most of the
shared prefix behind no cached segment at all while the parent's marks had
accumulated across dozens of turns.

applyForkAdoption now arms a one-shot flag (metadata.cacheMarkLadderInitPending);
the child's FIRST anthropic-owned mark pass seeds quarter + half + tail of its
own stable region instead of the lone tail, then hands back to the sticky
#1637 cumulative dynamics unchanged (cap freeze, fold retirement). The parent's
ledger itself is deliberately NOT copied — its positions are stale relative to
the child's view and a full inherited cap would block the child's tail push.

The flag is consumed unconditionally so a client-managed or too-short first
turn cannot defer a mid-history relayout to a later turn (byte-stability debt
is exactly what the #1637 design forbids).

Tests: tests/issue5519-fork-cache-mark-inherit.test.ts (seed shape, stickiness,
retirement, fallbacks, consumption, adoption-side flag); fixture in
tests/fork-adoption-plan.test.ts gains the required metadata field.
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

📦 Built Package Artifact

Branch: 2026-11-02_fork-cache-mark-ladder-init (b963644)

Latest build — install this exact version

npm install -g billion-context@0.0.9022-pr.5525.7d64632

This exact version is immutable and reproducible. The rolling pr tag tracks the newest test build across all PRs.

Recent builds (commit → version)

commit version build
b963644 billion-context@0.0.9022-pr.5525.7d64632 build
da7d767 billion-context@0.0.7846-pr.5525.d05a1a6 build
3e52c6d billion-context@0.0.7842-pr.5525.37edc36 build

Download artifact

  1. Download the artifact from the Actions run
  2. Extract the tarball and install:
tar xzf billion-context-pr5525.tgz
npm install -g package

Install instructions are refreshed on each push.

@ranxianglei ranxianglei changed the title fix: seed the Anthropic cache-breakpoint ladder on fork adoption (#5519) [PR] fix: seed the Anthropic cache-breakpoint ladder on fork adoption (#5519) Nov 2, 2026
@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

(ai: vllm-qwen/qwen3.8-27b)

查重: 不重复。按失败签名(fork 采纳 × Anthropic 缓存断点继承 / anthropicCacheMarkIds)检索 open+closed issue 与 PR,唯一相关项是 #1349(fork 采纳携带父会话 CCR content-store 条目)——同一采纳路径但不同账本、不同机制(content store vs 缓存断点账本),非重复。

标签: bug, dsh, scope/wiring, p2(理由:fork 首轮缓存命中崩塌是成本/性能缺陷,可用不卸载、第 2 轮起自愈回 ~90% → p2;报告车道为 dsh;改动面在 wire 层 cache-control + fork-adoption,归协议接线域)。

开始对 PR #5525 做独立审核(分支 2026-11-02_fork-cache-mark-ladder-init @ 3e52c6d,base master):原 issue 方向核查 → 既有行为回归清点 → 代码与测试有效性 → CI 状态,结论按结构化八问给出。

@ranxianglei ranxianglei added bug Something isn't working dsh p2 scope/wiring labels Nov 2, 2026
…ng (review nit)

The inline comment claimed the one-shot cacheMarkLadderInitPending flag is 'consumed unconditionally' on the first turn. In fact a client-managed first turn never reaches computeAnthropicMessageMarks at all (the suppression at prepare-anthropic.ts precedes the call) and a too-short or knob-off first turn early-returns before the flag code — both leave the flag armed for the next eligible pass. That is safe (the seed is a first-appearance layout, not a rewrite of already-stamped bytes), but the old wording did not match the mechanism. Comment-only change; no behavior change.
@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷
(ai: vllm-qwen/qwen3.8-27b)

PR #5525 独立复审结论:可合。

八问

  1. 是什么问题:fork/resume 采纳搬了 blocks/refs/token 快照,没搬 Anthropic 缓存断点账本(anthropicCacheMarkIds),子会话首轮只能打一个尾部断点,首轮缓存命中塌掉([bug] Fork first-turn cache breakpoints degrade to a single tail marker (anthropicCacheMarkIds not inherited) | [bug] fork 首轮缓存断点退化为单个尾部标记(anthropicCacheMarkIds 未继承) #5519 实测与父会话末轮公共前缀仅 0.03%)。
  2. 什么原因导致的:applyForkAdoption 的拷贝清单漏了断点账本,写阶梯从空重建;而单尾 push 的设计本身无法为已稳定的早期前缀补打断点——是「采纳丢账本」+「阶梯只能增量长」两个机制叠加。
  3. 影响范围与严重程度:所有 anthropic-owned 的 fork/resume 会话(主要 dsh desktop fork 场景);确定性成本问题(采纳后第 1 轮多付前缀钱,第 2 轮起恢复 ~90%),无数据丢失、无不可用——p2 定级成立。
  4. 怎么修复的:在四条采纳路径的唯一汇聚点武装一次性标志 cacheMarkLadderInitPending,子会话首次 anthropic-owned 布点时按自身稳定区 ¼/½/尾部铺三点(仅在无存活 marks 且 lastIndex>=3);此后回到原 [Bug] Anthropic lane never emits cache_control breakpoints — prompt cache can only ever cover the system head (~11K), the whole history re-bills at full price every request #1637 粘性动态。刻意不逐字继承父侧 mark ids 这个取舍我独立验证后认同:父侧位置在子视图里是陈旧的,且 3 个继承 marks 会填满 MESSAGE_MARK_CAP=3、阻塞子会话自己的尾部 push,反而更差。
  5. 是否有回归问题:审过的既有行为——稳态会话字节级不变(标志只在采纳瞬间武装、一次性消费);非 fork 路径不变(有现状钉死测试);client-managed 会话不受影响(抑制发生在调用之前);两种压缩模式走同一 prepare 层、与模式无关;cap 永不超限(seed 从空账本起、≤3 次 push);请求重试幂等(每请求消费一次)。未发现回归。
  6. 是否破坏缓存:不破坏——此变更本身就是修复断点账本;稳态命中率不变,fork 首轮命中深度改善。
  7. 是否改了设计方向:没有——纯 host 侧 metadata 标志 + 布点策略扩展;零 kernel/ 触碰,wire 形状不变(cache_control 点数本就是协议内变量)。
  8. 是否引入新配置:无——内部 metadata 标志,不进 config/env/CLI,与 PR 披露一致。

验证证据(独立重做,未照抄 issue 结论)

顺手小修(独立标注 commit da7d76787,已推到 PR 分支):cache-control.ts 行内注释声称标志「无条件消费」,与实际机制不符——client-managed 或过短的首轮根本到不了消费点,标志会保持武装(安全,因为 seed 是首次出现式布局而非改写已盖章字节,但注释措辞必须改对)。纯注释变更,零行为变化;推送后 CI 将按同一 CORE 范围重跑。

判定:可合。 行为变更披露与 PR 描述一致(fork/resume 首轮消息断点 1→最多 3,有意变更;稳态不变),配置面与 kernel 均未触碰。合并请 owner 操作:#5525

@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

(ai: vllm-qwen/qwen3.8-27b)

本 PR 的独立审核已在 floor 6 完成并给出「可合」+ 八问。本次是同任务重触发,我没有照抄 floor 6,而是独立重跑了一遍端到端核查;结论一致,维持可合,且没有新发现。

八问(本轮复核,精简版)

  1. 是什么问题:fork/resume 采纳搬了 blocks/refs/token 快照却没搬 Anthropic 缓存断点账本(anthropicCacheMarkIds),子会话首轮只能打一个尾部断点,首轮命中塌掉([bug] Fork first-turn cache breakpoints degrade to a single tail marker (anthropicCacheMarkIds not inherited) | [bug] fork 首轮缓存断点退化为单个尾部标记(anthropicCacheMarkIds 未继承) #5519 实测与父末轮公共前缀 0.03%)。
  2. 什么原因:applyForkAdoption 拷贝清单漏了断点账本 + 单尾 push 无法为已稳定的早期前缀补点,两机制叠加。
  3. 影响面/严重度:所有 anthropic-owned 的 fork/resume(主 dsh desktop fork);确定性成本问题,第 2 轮起自愈回 ~90%,无数据丢失/不可用 → p2 成立。
  4. 怎么修:四条采纳路径唯一汇聚点武装一次性标志 cacheMarkLadderInitPending,子会话首次 anthropic-owned 布点按自身稳定区 ¼/½/尾部铺三点(仅无存活 marks 且 lastIndex>=3),此后回原 [Bug] Anthropic lane never emits cache_control breakpoints — prompt cache can only ever cover the system head (~11K), the whole history re-bills at full price every request #1637 粘性动态。刻意不逐字继承父 marks——独立验证认同(父位置在子视图陈旧,且填满 CAP=3 会阻塞子自身尾 push,反而更差)。
  5. 回归:稳态字节级不变(标志只在采纳瞬间武装、一次性消费);非 fork 走原 else 分支不变;client-managed 抑制发生在调用之前、不受影响;两种压缩模式走同一 prepare 层;cap 永不超限(seed 从空账本起 ≤3 push)。未发现回归。
  6. 缓存:不破坏——此变更本身就是修断点账本;稳态命中率不变,fork 首轮命中深度改善。
  7. 设计方向:没改——纯 host 侧 metadata 标志 + 布点策略扩展;零 kernel/ 触碰,wire 形状不变(cache_control 点数本就是协议内变量)。
  8. 新配置:无——内部 metadata 标志,不进 config/env/CLI,与 PR 披露一致。

独立复核证据(自己重做,非转录)

  • 四条采纳路径确全汇聚 applyForkAdoption(fork-adoption.ts:396/453/590;derived fork 经 maybeAdoptResume→453),「一处覆盖全部」成立。
  • computeAnthropicMessageMarks 唯一调用点 prepare-anthropic.ts:478;client-managed/过短/knob-off 的首轮在到达标志代码之前就 return → 该轮不消费标志,但安全(seed 属首次出现式布局,不是改写已盖章字节;有存活 marks 时 kept.length===0 门再挡一次,绝不重排)。
  • createSession(session.ts:1393)恒初始化 metadata → fork-adoption.ts:304 的写入在生产环境不会崩;直接调 applyForkAdoption 的 fixture 仅 2 处,fork-adoption-plan.test.ts 已补 metadata:{},新文件 fakeSession 自带。
  • seed ≤3 message marks(+system)= ≤4,且仅 client/tools 均无 cache_control 时才布点 → 不破 Anthropic 4-breakpoint 预算(WC-010)。
  • 新增 8 例断言有牙(现状钉死/不复制父 marks/seed 形状/次轮冻结/折叠退役补位/短史回退单尾/已有 mark 不重排/ephemeral 不入点),能抓回归;config 面与 kernel 均未触碰。

状态核对:分支 tip 现为 da7d76787(floor 6 顺手修的注释更正,comment-only,措辞正确——它准确指出 client-managed 首轮根本到不了消费点)。我本地一度对同一处注释产生了重复改动,已丢弃、未推第二份(避免重复提交)。checks(mirror cache):gate/static-gates/mysql-contract 全绿,完整 test 矩阵 in_progress(0 失败);comment-only delta over 已绿的 3e52c6d4d,预期落地即绿。

判定:可合(维持 floor 6)。 无新发现、无新提交。合并请 owner 操作:#5525

协调回报(一行):PR #5525 审核完成——可合,修复 da7d76787 已落分支,待 owner 合并。(注:本次派发未给出独立的评审协调 issue 编号;#4599 为 CI 总控、本 PR 无 CI 失败不适用,故状态记录于本线程。)

ci-check added 2 commits November 11, 2026 06:22
… required metadata field

Merging current master into this branch exposed a semantic conflict git
could not see: master added four test fixtures that call applyForkAdoption
(two directly, two via maybeAdoptResume) whose child Session has no
metadata field, while this PR made applyForkAdoption unconditionally arm
session.metadata.cacheMarkLadderInitPending (#5519). Production sessions
always carry metadata (createSession initializes it), so the fixtures are
the defective side — same class as the pre-existing fixture gap this PR
already fixed in the #2620 test of fork-adoption-plan.test.ts. Adding
metadata: {} to each; no production-code change.

Verified locally on the merged head: typecheck clean; targeted suites
issue5519-fork-cache-mark-inherit / fork-adoption-plan /
anthropic-cache-control / resume-miss-timestamp-seed all green (34/34);
fork-adoption-wires keeps its two known inherited-reds with the identical
pre-merge signature (fixture precondition, fails before adoption code).
@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

(ai: vllm-qwen/qwen3.8-27b)

Conflict resolved and pushed — branch 2026-11-02_fork-cache-mark-ladder-init now sits at b963644a40 (was da7d767873, 921 commits behind master). Live verification this run: PR mergeable: true (the dirty/conflict state is gone); mergeable_state: blocked only because fresh check runs are still starting on the new head.

七问 summary

  1. What was done this run: merged current origin/master (58a8796224) into the PR branch, resolved the conflict, fixed a related semantic break the textual merge hid, verified locally, pushed (fast-forward, no force-push), and re-verified the remote head.
  2. What the blocker actually was: one textual conflict — both sides had inserted different code at the same spot in applyForkAdoption (src/fork-adoption.ts, right before markDirty(session)): master added the # Cache hit collapses to 1–12% for a whole generation, then the very next request returns to 100% — repeated 15× in one day #5608/feat: Support precise timestamps for each message, allowing the model to recognize which messages are outdated and which | feat: 给每个消息支持精确时间,以让模型认识到什么消息是过期的什么是当前的新的 #4313 timestamp-ledger carry (seedTimestampsFromParent + timestampsHighWaterRefSeq) while this PR armed the [bug] Fork first-turn cache breakpoints degrade to a single tail marker (anthropicCacheMarkIds not inherited) | [bug] fork 首轮缓存断点退化为单个尾部标记(anthropicCacheMarkIds 未继承) #5519 cacheMarkLadderInitPending flag. Additionally, master's new tests exposed a semantic conflict git can't detect: four of master's new fixtures call applyForkAdoption (two directly, two via maybeAdoptResume) with child Sessions that have no metadata field, which crashes once the PR's unconditional session.metadata["cacheMarkLadderInitPending"] = true runs.
  3. How it was resolved: the textual conflict as a strict union of intent — master's timestamp carries verbatim, then the PR's flag arming (independent fields, no interaction). The fixture break by adding metadata: {} to each affected fixture (tests/fork-adoption-plan.test.ts ×1, tests/resume-miss-timestamp-seed.test.ts ×3) — the exact same defect class this PR already fixed in its own [Bug][plugin] protectedTools 的 BLOCKED 映射导致纯文本 snapshot 返回 409 #2620 fixture. Production sessions always carry metadata (createSession initializes it), so the fixtures were the defective side; zero production-code change beyond what was already reviewed. Labeled commit: b963644a40.
  4. Verification evidence (merged head, local targeted runs): typecheck clean; issue5519-fork-cache-mark-inherit + fork-adoption-plan + anthropic-cache-control + resume-miss-timestamp-seed → 34/34 pass; fork-adoption-wires.test.ts keeps exactly its two known inherited-reds with the identical pre-merge signature ('responses parent must have a folded block (got 0)' — fixture precondition failing before any adoption code runs; already documented in the PR body as inherited from clean master fad9805bc). Final PR diff vs current master is minimal: 5 files, +187/−4.
  5. Behavior change / regression: none introduced by this resolution — both sides' behaviors are preserved byte-for-byte (the PR's own disclosed change, fork-first-turn breakpoints 1→≤3, is unchanged from the reviewed version). Steady-state sessions untouched; no config surface, no kernel touch, no wire-shape change.
  6. Current live state (verified in this run, not from memory): remote head = b963644a40; GitHub reports mergeable: true. The mirror check cache was still serving the stale 2026-11-02 snapshot (old sha) when I looked, so I cannot yet assert the outcome of the new check runs — they will appear on the next mirror poll.
  7. Residual risks / next steps: if a full-matrix shard goes red on the fork-adoption-wires signature above, that is the documented inherited failure and belongs under CI coordination issue CI Control Center: Centralized CI Failure Handling & Status Sync (Comment all CI issues here; do not open new issues) | CI 总控: CI 失败集中处理与状态同步(所有 CI 问题在此评论, 勿开新 issue) #4599, not this PR. Otherwise nothing further is expected from me on this branch; merging stays with the owner: [PR] fix: seed the Anthropic cache-breakpoint ladder on fork adoption (#5519) #5525

@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b)

Confirming for the record: this run is complete — the full 七问 summary was already posted as the previous comment in this thread (comment id 71320) and is not being repeated here.

State verified live in this run: branch 2026-11-02_fork-cache-mark-ladder-init = b963644a40 (master 58a8796224 merged in, conflict resolved as union of intent + fixture metadata: {} fixes, pushed fast-forward); GitHub reports mergeable: true; local targeted suites 34/34 green, typecheck clean. Nothing further pending from this lane — merging stays with the owner (#5525). If any check shard goes red on the documented inherited fork-adoption-wires signature, that routes to CI coordination issue #4599, not this PR.

@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

(ai: vllm-qwen/qwen3.8-27b)

复审(新 head b963644a4)— 结论维持「可合」。 本轮是同一任务在新 head 上的重触发。我先按 merge-base 隔离出本 PR 相对当前 master 的真实增量(merge-base = master tip 58a87962,分支已干净 rebase 到最新 master),避免把 master 吸收进来的大量无关改动误判成io本 PR 的工作。

自上次评审后真正新增的只有 1 个提交:

  • b963644a4 test(fork-adoption): give master's new applyForkAdoption fixtures the required metadata field —— 纯测试夹具卫生。rebase 到当前 master 后,master 新增了 4 个调用 applyForkAdoption 的夹具(2 个直接、2 个经 maybeAdoptResume),其 child Session 缺 metadata 字段;而本 PR 让 applyForkAdoption 无条件写 session.metadata.cacheMarkLadderInitPending,故这 4 处夹具需补 metadata:{}。4 处 hunk 全部只加 metadata:{}(各带一句准确 WHY 注释),零生产代码改动。方向正确:生产会话恒由 createSession(session.ts:1393)初始化 metadata,所以缺陷方是夹具——与本 PR 早已修的 fork-adoption-plan.test.ts [Bug][plugin] protectedTools 的 BLOCKED 映射导致纯文本 snapshot 返回 409 #2620 夹具缺口同类。作者本地验证(typecheck 干净、定向套件 34/34、既有 inherited-red 签名不变)与我独立核实的结论一致。

核心修复内容未变(rebase 前后我逐一比对,字节级一致):

  • src/fork-adoption.ts:四条采纳路径的唯一汇聚点武装一次性标志 session.metadata["cacheMarkLadderInitPending"]=true(带 WHY 注释)。
  • src/loop/cache-control.ts:computeAnthropicMessageMarks 在子会话首次 anthropic-owned 布点时按自身稳定区铺 ¼/½/尾三点(门 kept.length===0 && lastIndex>=3,否则回原单尾 push),并含 da7d767873 已更正的标志消费语义注释。

八问(精简版,详版见 floor 6)

  1. 是什么问题:fork/resume 采纳搬了 blocks/refs/token 快照却没搬 Anthropic 缓存断点账本,子会话首轮只能打一个尾部断点,首轮命中塌掉([bug] Fork first-turn cache breakpoints degrade to a single tail marker (anthropicCacheMarkIds not inherited) | [bug] fork 首轮缓存断点退化为单个尾部标记(anthropicCacheMarkIds 未继承) #5519 实测与父末轮公共前缀 0.03%)。
  2. 什么原因:applyForkAdoption 拷贝清单漏了断点账本,叠加单尾 push 无法为已稳定的早期前缀补点。
  3. 影响面/严重度:所有 anthropic-owned 的 fork/resume(主 dsh desktop fork);确定性成本问题,第 2 轮起自愈回 ~90%,无数据丢失/不可用 → p2 成立。
  4. 怎么修:唯一汇聚点武装一次性标志,子会话首轮按自身稳定区铺三点,此后回原粘性累积动态;刻意不逐字继承父 marks(父位置在子视图陈旧,且填满 CAP=3 会阻塞子自身尾 push)。
  5. 回归:稳态字节级不变(标志只在采纳瞬间武装、一次性消费);非 fork 走原 else 分支不变;client-managed 抑制发生在调用之前、不受影响;cap 永不超限(seed 从空账本起 ≤3 push)。未发现回归。
  6. 缓存:不破坏——此变更本身就是修断点账本;稳态命中率不变,fork 首轮命中深度改善。
  7. 设计方向:没改——纯 host 侧 metadata 标志 + 布点策略扩展;隔离增量里零 kernel/ 触碰,wire 形状不变(cache_control 点数本就是协议内变量)。
  8. 新配置:无——内部 metadata 标志,不进 config/env/CLI。

CI(mirror cache @ b963644a4):{total:30, failed:0, pending:0} —— 全部完成、零失败。完整 test 矩阵(ubuntu/windows × node22/24 各 shard)+ gate/static-gates/mysql-contract 全绿;重 e2e 车道按仓规 gated-skip(canary/env 门控,与上轮一致)。mergeable_state:blocked 仅因等待 review,CI 本身已全绿。

判定:可合(APPROVE)。 无新发现、无遗留项(NO OPEN ENDS)、未触碰 kernel/ 故无需决策升级。合并请 owner 操作:#5525

协调回报(一行):PR #5525 新 head b963644a4(rebase 到最新 master + 1 个机械性测试夹具修复)审核完成——可合,CI 全绿,待 owner 合并。(注:本次派发未给出独立的评审协调 issue 编号;#4599 为 CI 总控、本 PR 无 CI 失败不适用,故状态记录于本线程。)

@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b)

Verified live this run: there is no conflict to resolve and no red CI to fix — the branch is green and merge-ready. The blocker flag arrived after master moved again, but the authoritative sources say otherwise:

七问 summary

  1. What was done this run: fetched both heads, read the live PR state from GitHub, read the mirror check cache for the pushed head, diffed the 5 new master commits against the PR's file set, and ran a local git merge-tree dry-run of branch×master. No changes were needed, so nothing was pushed (branch head unchanged at b963644a40).
  2. What the "dirty" state actually was: staleness, not a real conflict. Master advanced 5 commits (58a8796224 → 33104b1f95, the compressAtFoldPoint removal work Remove the compressAtFoldPoint feature — it reorders resent history and caused an authorship-misattribution incident in a live session #6132/[PR] remove: the experimental compressAtFoldPoint feature — fold-point relocation (v1 #5471 + unreleased v2 #5949), #6132 #6150) after last night's conflict-resolution push; GitHub's async mergeability recompute had not settled when the blocker fired. Live now: mergeable: true, mergeable_state: behind — clean, just stale. The local git merge-tree --write-tree dry-run confirms a byte-clean merge (exit 0, zero conflict paths).
  3. Why no sync merge was done: the 5 new master commits touch 41 files with zero overlap with the PR's 5 files, and neither src/fork-adoption.ts nor src/loop/cache-control.ts references compressAtFoldPoint — no semantic interaction of any kind. A gratuitous sync merge would burn a full test-matrix re-run to prove what the dry-run merge already proves; it would also add a merge commit that widens future conflict surface. If the owner prefers an up-to-date base before merging, say so and I'll do one clean sync pass.
  4. CI evidence (mirror cache snapshot taken against exactly this head b963644a40): every executed check success — all test shards (ubuntu/windows × node 22/24), static-gates (both platforms), mysql-contract, gate; red-signal skipped; the e2e lanes skipped by their env-var gates by design. No shard went red, including the previously-watched fork-adoption-wires signature — nothing routes to CI Control Center: Centralized CI Failure Handling & Status Sync (Comment all CI issues here; do not open new issues) | CI 总控: CI 失败集中处理与状态同步(所有 CI 问题在此评论, 勿开新 issue) #4599 this run.
  5. Behavior change / regression: none introduced this run (zero commits). Last night's resolution remains as disclosed there: union-of-intent in applyForkAdoption + fixture-only metadata: {} additions, no production-code change beyond the reviewed [bug] Fork first-turn cache breakpoints degrade to a single tail marker (anthropicCacheMarkIds not inherited) | [bug] fork 首轮缓存断点退化为单个尾部标记(anthropicCacheMarkIds 未继承) #5519 diff.
  6. Current live state: branch = b963644a40 (verified via fetch, remote head matches); GitHub = open, mergeable: true, state behind (5 commits); checks green on this head per the cache above.
  7. Next steps: nothing pending from this lane — the PR is ready for the owner to merge whenever: [PR] fix: seed the Anthropic cache-breakpoint ladder on fork adoption (#5519) #5525. If a future master move produces a real textual or semantic conflict, the same lane will resolve it the same way (union of intent, targeted verification, labeled commits).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working dsh p2 scope/wiring

Projects

None yet

1 participant