Skip to content

[PR] release v0.1.202 - #3781

Merged
ranxianglei merged 2 commits into
masterfrom
2026-10-19_release-v0.1.202
Oct 19, 2026
Merged

ranxianglei merged 2 commits into
masterfrom
2026-10-19_release-v0.1.202

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Auto-fallback from the one-click release workflow: direct push to master was blocked by branch protection. Merging this PR publishes via the standard release.yml flow.

Changes since v0.1.201

@ranxianglei ranxianglei changed the title release v0.1.202 [PR] release v0.1.202 Oct 19, 2026
@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

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

接单 · 发版类 PR 全窗回归审计(进行中)

查重:不重复。 在途 open PR 中只有本条 #3781 是 v0.1.202 release PR,无并列第二个发版 PR。相邻条目:#3783 是「do-not-merge」的 master CI probe,#3782 是 kernel lock 同步修复(与本窗 kernel bump 链相关,见下)。

PR 形态已核对: head 8578340a5 相对 origin/master(2b40342ef)仅多一个纯版本 bump commit。按发版类 PR 政策,触发 v0.1.201(ff42dcc13)→ master 全窗回归审计,不是只看两行版本 diff——分段通读整窗 diff(--stat 总览 → 高危域[自动更新/dsh/lockfile/env 模板/network-proxy]精读 → 其余按目录分批),逐项过窗口内 69 个 fix/feat。

预审已钉死的一个高危域点(lockfile): master 上 kernel/package.json=0.0.136,但 kernel/package-lock.json=0.0.133(被 #3767 遗留)——真实不一致,但不阻塞本发布:CI 的 lock-sync gate(ci.yml:506)只重算并比对根 package-lock.json(根 lock 里 kernel=0.0.136、pi-subagents=0.2.1,均在同步态);没有任何 gate 检查 kernel 自己的 lock,kernel test 脚本也不走 frozen lockfile。该不一致已由在途 #3782(2 行改动)跟踪,非本 release 引入,无需塞进本 PR。

继续分段通读中,完成后按结构化八问给合并判定。

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor Author

📦 Built Package Artifact

Branch: 2026-10-19_release-v0.1.202 (e75e010)

Option A — Install this exact build (recommended)

npm install -g billion-context@0.0.4505-pr.3781.f885e08

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

Option B — Download artifact

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

Install instructions are refreshed on each push.

@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

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

发版类 PR · v0.1.201→release-head 全窗回归审计 — 结论:可合,无回归

查重:不重复(仅 #3781 是 v0.1.202 发版 PR;相邻 #3783=勿合的 CI 探针、#3782=kernel lock 同步修复)。
PR 形态:head 8578340a5 = release base 2b40342ef(#3770) + 恰好一个纯版本号提交 → 标准发版 PR,触发全窗审计(非两行版本 diff 审阅)。
审计窗口(已更正):权威发布内容 = v0.1.201(ff42dcc) .. 8578340a5,110 文件。审计期间共享 clone 的 origin/master 被 #3774(snapshot-render-ci-flake) 从 2b40342ef 推进到 5afa77fd9;已核对 #3774 仅改 snapshot-render.ts(+纯可观测 metadata 标记,degrade 仍原样返回 client view、绝不碰出站字节)+其测试(+#3771 静默回退盲区守卫),纯增量、不改出站行为、不改变任何回归结论,且不在本发布内(随下一版本)。逐文件核过的源/测试文件全部包含在发布窗口内。通读方式:--stat 总览 → 高危域逐行精读 → 其余按目录分批,未整吞 diff。

高危域逐项点名核查

重大行为变更清单(旧→新+原因,全部有意、已披露、带回归测试)

  1. fork 继承前缀门(This run failed with 409: "first child request does not match its inherited ordered prefix" | 本轮运行失败409 "first child request does not match its inherited ordered prefix" #3741):子会话首请求前缀哈希不匹配 从【永久 409 死锁】→【分类告警后采纳】(publicForkInputCheck 返回 {ok,reason})。分歧子会话首个请求以未折叠态发出=一次性 token 尖峰、永不损坏;保留 side-lane 否决权(publicForkPrefix 仍 false)。原因:原 409 是被拒请求永不计数、无清除/TTL 的死胡同。
  2. 代理存活探测([Bug?] Under high load, health check timeouts appear to be misinterpreted as "proxy unavailable": large session requests | [Bug?] 高负载下 health 探活超时疑似被当成「代理不可用」:大会话请求被本地拒发(0.1.199 / plugin native) #3654):TCP 连上但健康探针超时 从【判死→重生进同一进程(twin 碰撞 autoRestartOnUpdate + occupied target port -> orphan process leak: new instance silently hops to the next port, old instance never exits #3044)】→【判 BUSY(存活但事件循环饱和,如大压缩),持有并抖动复探≤10s;busy 替换实例照路由(请求排队);twin 碰撞退出码 3 改为采纳已在服务的实例而非报错】。真死(ECONNREFUSED)仍走毫秒级快速路径。
  3. prompt_cache_key 盖章(openai wire: prompt_cache_key stamped unconditionally — breaks strict-schema upstreams (NVIDIA NIM 400), no config escape #2645/上游侧失效导致缓存命中只有80%用的api反代 workbuddy glm5.3 #2218):盖章面 从【仅 loopback/admin 改写】→【所有目的形态】(修远程池亲和丢失);保护从静态门→运行时出口 A/B:出口 400 携带 key 则去 key 重发一次,确认拒绝即进程内记忆该 origin+model 直到重启(acp_status/web 可见)。
  4. 超尺寸本地拒答文案([dsh] Cannot intercept dsh requests? Dead scope retransmission + post-update dual instances trigger #2924 oversize 422 r | [dsh] 无法拦截dsh请求? 死 scope 重发 + 更新后双实例引发 #2924 oversize 422 重试风暴(用户全量日志定案,dsh 0.2.1rc1) #3589):422 补救话术 从【重试本轮】→【重启一次客户端宿主(会话状态已落盘,无损)】;状态码/x-bili-gate 头不变。
  5. JSONC 配置容忍(JSONC doc examples vs bare JSON.parse loader — copying the docs silently drops the config | 文档示例是 JSONC(含 // 注释),loader 却用裸 JSON.parse——照文档抄配置会静默失效 #3572/External summary credential feature entirely unusable + fully opaque failures + no retry | 外部摘要(externalSummary)凭据功能整体不可用 + 失败全程黑箱 + 无重试 #3488):启动凭据审计 从【严格 JSON(注释配置静默跳过全局 externalSummary 审计)】→【容忍 JSONC(与运行时加载器一致)】。
  6. 不透明媒体计费(Image errors accumulating in the conversation | 对话中图片错误堆积 #3398):未知形状媒体 从【不计价/flat 回退(曾致 side request(max_tokens<=200)绕过 preflight 且不检查载荷体积,携带全量历史直转上游导致 400 #554 小载体 413)】→【按字节 bytes/4 比例计价】;折叠侧栏为其加 [media: …] 占位避免静默丢失。
  7. WS 车道字节背压([Bug] Jimp is active, but image accumulation still triggers Responses WS 1009; duplicate request size not reduced (v0.1. | [Bug] Jimp 已生效,图片累积仍触发 Responses WS 1009;重复请求未缩小(v0.1.200) #3701,新特性+新配置):Responses WS 出站帧超软预算(默认 10MiB,0 关闭)时 从【原样发送(网关 close 1009 零事件丢弃整请求)】→【先从出站副本归档/降分辨率最老的非保护图片,仍超则一次有界缩小重发】;close-1009-零事件 从【计入告警/熔断(可能砖掉健康端点)】→【排除出熔断核算】。HTTP 车道不受影响。
  8. claude/zcode MCP 会话内看门狗(Hook-model clients (claude/zcode) have no mid-session self-heal when the proxy dies — ECONNREFUSED until next session #1821):车道代理会话中途死掉 从【搁置到下次会话启动(zcode 旧 attached 门把 lane-owned 也拦了)】→【仅显式用户 pin 才只等待;lane-owned 走 ensureProxyRunning 恢复,会话中途自愈】;claude MCP 面 从【无条件 mcp add(可能覆盖同名外部 server)】→【幂等+内容所有权(迁移 dist/mcp.js→dist/claude-mcp-entry.js,外部 server 绝不触碰)】。
  9. kernel nudge 引用(The nudge growth reference point, once clamped by a single high-water mark, never recedes — long sessions must wait unti | nudge 增长参考点被单次高水位钳死后永不回落,长会话只能等到 75% OVER-LIMIT 才压缩 #3674,host+kernel 协同):nudge 引用 从【事件门控漂移重置(亚区间下降会死区)+host 侧 reanchorNudgeOnUsageDrop 兜底】→【低水位单调下行(任意 grade 下一读数自纠正),host 镜像删除】。节奏幅度(flat 50K,KDD#8)不变。
  10. kernel 图片 id(Image message ids re-mint whenever an earlier image leaves the visible tail (membership-based ClusterCounter suffix) — prefix-cache breaks per fold, feeds #3748 storage growth #3751):图片核心消息 id 从【纯文本投影】→【载荷指纹寻址】;非图片 id 字节不变;存量图片会话升级时重铸图片 raw-id(order-centric reconcile fix(dsh): model switch drops all folds — fold-reconcile #2396 detect-only cannot re-anchor rewritten tool-call ids → doom-probe 502 session death #2915 吸收,无复用/重复违规)。
  11. snapshot-render(Snapshot rendering: proxy-lane outbound is now rendered authoritatively server-side; existing sessions are immune to ker | 快照渲染:proxy 车道出站从服务端正史渲染,存量会话对内核升级免疫(#3752 根治) #3756,新子系统):默认 0% 休眠(BILI_ROLLOUT_SNAPSHOT_RENDER=1 才启用)→ 本发布零行为变化。
  12. sourcemap(Remove sourcemaps during bundling to reduce plugin size. | 打包去掉sourcemap 减少插件体积 #3777):npm tarball 从【含 ~109MiB .map】→【不含】(无运行时消费者,仅本地调试);零运行时影响。
  13. Cowork pck 盖章 + pi/omp anthropic 车道([Bug] Anthropic requests leak prompt_cache_key when Cowork transport bypasses native fetch interception #2583/[Bug] bili omp 扩展 stampPromptCacheKey 无条件注入顶层 prompt_cache_key —— 严格 schema 上游(opencode zen anthropic 端点)全量 400 #1403):pck 盖章抑制面 从【仅未路由回退分支】→【所有盖章路径(cert-MITM 车道此前漏抑制→Anthropic 严格 schema 每次委派 400)】;pi/omp Cowork anthropic 流量 从【node:https 直连绕过 bili(未压缩不可见)】→【用户未设代理时经可压缩代理】。
  14. overflow-arm 钳制(fix: overflow-arm stored above the headroom-reserved judging limit → unbounded CONTEXT_WINDOW_EXCEEDED loop #3738/acp_delegate_wait reports "Failed" on a normal wait timeout while the delegate is still running #3740):overflow arm 钳制到 headroom-reserved 判定上限(防 arm 越过可用余量)。
  15. hermes 上下文窗解析([PR] fix(hermes-plugin): resolve the real context window from the host #3730):请求路径窗查询 从【每次问宿主】→【记忆化(命中 1h/未命中 30s TTL),<64K 窗不入共享缓存(防投毒),全程 fail-open】。

测试有效性

强覆盖——每个重大行为变更都有专属回归测试:issue3654-health-probe-three-state(+576)、issue3701-ws-byte-budget(+478)、snapshot-render(+611)、fix-arm-headroom-clamp(+501)、issue3398-opaque-media-reserve(+323)、issue2645-pck-probe(+273)、claude-mcp-entry(+440)、zcode-mcp-entry(+147)、issue3661-malformed-proxy-args-replay(+178)、issue3572/3488、plugin-fork+fork-side-request-lane、issue2218、web-diagnostics-enrichment、hermes-native、omp-native-identity、issue3573-cold-load。issue1595-nudge-reanchor.test.ts 删除(与 kernel #3674 协同,场景转为 kernel 测试)。golden storage-render/*.json 再生(已给理由);wire-contract/kernel.json 未动(flat-50K nudge 常量/提示/工具表稳定)。断言有牙(如 assertDActive 显式抛错命名 degrade 原因,防静默回退读绿)。

结构化八问

  1. 是什么问题:这是 v0.1.202 发版 PR(workflow 直推 master 被分支保护挡下后的标准回退发布路径);任务是发版前全窗回归审查,判定能否安全发布,不是修单一 bug。
  2. 什么原因导致:不涉及单一故障根因——是对 ~69 个已合入 fix/feat 的合并视角批量回归审查。
  3. 影响范围与严重程度:覆盖所有升级用户经 bili 的请求路径(压缩/计费/代理存活/安装车道/持久化/面板)。本窗无破坏性变更,全部为可用性/正确性修复或默认关闭的新特性。严重度:无回归;若干有意行为变更(见清单),均已披露且带测试。
  4. 怎么修复的:n/a(审计任务)。方法:分段通读全窗 diff(高危域逐行精读,未整吞)+逐项过既有行为清单+测试有效性核查+lockfile/CI 门核对。
  5. 是否有回归问题:无。逐项核过既有行为:fail-fast 未退化为吞错(fork 门硬拒转采纳是有意可用性调整且保留 side-lane 否决;oversize 拒答状态码不变);阈值/时序/输出格式变化均为有意并已披露(WS 预算默认 10MiB、nudge 低水位、pck 盖章面、422 文案等);缓存/重试策略未静默失效(egress-shed 只动出站副本且确定性;pck 撤 key 为进程内记忆可重启重置)。
  6. 是否破坏缓存:否。前缀缓存友好——egress-shed 仅改出站副本、确定性(同输入同输出);pck 出口 A/B 失败才撤 key(进程内、重启重置、acp_status/web 可见);snapshot-render 默认 0% 休眠;kernel 图片 id 载荷寻址的重铸由 order-centric reconcile(fix(dsh): model switch drops all folds — fold-reconcile #2396 detect-only cannot re-anchor rewritten tool-call ids → doom-probe 502 session death #2915)吸收。
  7. 是否改了设计方向:新增子系统均为增量且默认关/可选(snapshot-render 0% 休眠、egress-shed WS 字节背压、三态 liveness、MCP 会话内看门狗、pck 出口探测),未转向既有架构边界。唯一方向性调整:fork 继承前缀门由「硬拒绝」转「建议式采纳」(This run failed with 409: "first child request does not match its inherited ordered prefix" | 本轮运行失败409 "first child request does not match its inherited ordered prefix" #3741,可用性优先,保留否决权)——属有意调整而非失控漂移。
  8. 是否引入了新的配置:是——network.wsOutboundBytes / BILI_WS_OUTBOUND_BYTES(默认 10MiB,0 关闭 WS 预发送 shed;HTTP 上限 network.outboundBodyBytes 不变),已在 CONFIGURATION.md en+zh 记录(L161/L1790)。另有沿用既有 BILI_ROLLOUT_* canary 约定的 BILI_ROLLOUT_SNAPSHOT_RENDER(默认 0%,休眠)。无其它新 env/config 字段。

观察(非缺陷、不阻塞)

claude/zcode MCP 看门狗用布尔健康探针(2s)而非三态 liveness;因有 3 次失败阈值 + ensureProxyRunning 的 twin-collision 采纳兜底,任何「busy 误读为 dead」都收敛到采纳而非砖机,功能安全。仅为一致性备注,无需处理。

判定

本版本引入回归:无。 全窗(110 文件)逐域核毕,既有行为未被无意破坏,行为变更均有意且带测试,lockfile 根锁同步通过。唯一发现(kernel/package-lock.json 停 0.0.133)已在途 #3782 跟踪、非阻塞、不并入本 PR。可合——merge 由人执行,CI 在 push head 上跑全局把关(本地未跑全量套件,符合测试纪律)。

ranxianglei added a commit that referenced this pull request Oct 19, 2026
…on-ids

[PR] fix: escape pck-banner session ids before innerHTML (#2645, found in #3781 release review)
@ranxianglei
ranxianglei merged commit 6deb454 into master Oct 19, 2026
42 of 43 checks passed
ranxianglei pushed a commit to yanhuojiyusheng/billion-context that referenced this pull request Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant