Skip to content

[PR] release full-CI probe: run the FULL matrix on master tip (empty commit) - #4412

Merged
ranxianglei merged 5 commits into
masterfrom
2026-10-23_release-ci-full-probe
Oct 23, 2026
Merged

ranxianglei merged 5 commits into
masterfrom
2026-10-23_release-ci-full-probe

Conversation

@ranxianglei

Copy link
Copy Markdown
Owner

空提交分支,仅用于给 master 当前头跑全量 12 腚 CI(ci:full)。无任何代码改动,不需要合并——发版前验证用。

No code change. This branch exists to run the FULL CI matrix on master's
tip (ci:full label) for release validation.
@ranxianglei ranxianglei added the ci:full Run the FULL CI matrix (all e2e lanes + 12-leg test matrix) on this PR label Oct 23, 2026
@ranxianglei ranxianglei changed the title release full-CI probe: run the FULL matrix on master tip (empty commit) [PR] release full-CI probe: run the FULL matrix on master tip (empty commit) Oct 23, 2026
@ranxianglei

Copy link
Copy Markdown
Owner Author

(ai: zhipuai-lb/glm-5.3)

v0.1.204 → master(126 commits)全面回归审查结论

四条车道并行审查(自更新/发布流水线、dsh、缓存、可用性/kernel/其他),完整报告见文末链接。先说总评:升级是净利好,没有发现会挡发版的 p1 回归;但有一个 kernel 遗留子洞、两个 p2 缺口需要决策。

P1(需要决策:修不修、何时修)

#4400 没有被 87bb2c4 关闭 —— 带 tool_addition 块的折叠孤儿 system 仍会打死会话。
kernel/src/wire/anthropic.ts:366-389 的 isDirectiveOnlySystem 只豁免「空 content + output_config」;折叠后幸存的、带 tool_addition/tool_removal 块的 system 仍被 re-voice 成 user → Anthropic 直接 400(WC-022 台账 tests/wire-contract.test.ts:80-90 钉过的拒绝形状)→ 会话永久打死,和 #4292 原始 bug 同级死法。且 kernel/tests/issue4292-orphan-system-guard.test.ts:81-107 把这个坏形状当预期钉死了。修法明确:豁免带 tool 块的 system(passthrough 测试 :105-116 证明这是合法流量)+ 修钉死断言。属 kernel/ 改动,按边界规则等 owner 点头。

P2 × 2

① 一键发版直推路径只跑 CORE 矩阵,不跑 FULL(正撞本次发版关注点)。
release-manual.yml:162-180 直推路径(direct == 'true')的 dispatch 没有 CI_FULL_DISPATCH,发布 sha 上只落 CORE(9 legs);对照 fallback 路径 :202-207 显式设了 CI_FULL_DISPATCH: "1"(#3539 已把 fallback 修成 FULL,直推漏了)。后果:只在 windows+node-24 现形的回归可以在任何 CI leg 变红之前就发布出去。gate 判定逻辑本身无洞(取消=红、超时=拒、sha 绑定)。修法:直推路径同样加 CI_FULL_DISPATCH: "1",纯 workflow 改动,可走常规 PR。
(另:窗口内 10-23 16:32–19:16 曾因 ci.yml 重复顶层 concurrency: 键全灭 2h44m,已修 c90e6ea2+#4405;盲窗内落地的 6 个合并(含 #4396 kernel 变更)没有 CI 证据,建议按 sha 补跑一次。)

② 插件管道 settle 不分主/辅轮 —— 一次辅助轮结算会拆掉主车道的安全装置。
src/cache-ledger.ts:1579-1640 + src/plugin.ts:2138:非 dsh 宿主(dsh 已被 #1916 人格分裂豁免)的辅助轮(classify/标题生成)若没被识别为 side,一次 50 token 的结算会:清掉紧急收缩臂(:1600)和溢出证据(:1635)、清掉重建计量锚(:1626,#1592 幽灵路径复发)、销毁校准待配对(每工具调用前都发 classify 的宿主会持续饿死 k̂ 校准环)、把辅助轮高命中小请求混进主会话缓存记账(:1642)。与 #4383 同根但更宽;#4413 修的是「冻结」半边,这半边需单独 issue + 按车道门控结算。

P3(择机处理,不挡发版)

审查过、干净的(结论)

附:CI 停摆监督发现(与发版直接相关)

本轮 one-click(run 39949043963)自 20:01 起 queued 未动;当前全仓库 24 run 排队、0 运行,12:22:38Z 起一批 run 被同时 cancel。GitHub 平台 operational、仓库 public → 疑账号侧 Actions 停摆(支付/用量策略),需要 owner 看 https://github.com/settings/billing 或重触发。恢复前 release 分支不会创建、所有 PR CI 不会跑。


完整报告:

  • 可用性/kernel:/home/dog/tmp/bili-review-204-master-availability-kernel.md(repo 外本地文件,如需可贴全文)
  • dsh:/home/dog/tmp/dsh-lane-review-v0.1.204-master.md
  • 缓存:/home/dog/tmp/cache-lane-review-v0.1.204-to-master.md
  • 自更新/发布:ngk2 报告全文(本地 delegate 输出)

(ai 生成,已人工复核关键结论;P1/P2 均附代码级证据链,欢迎逐条挑战。)

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

📦 Built Package Artifact

Branch: 2026-10-23_release-ci-full-probe (2d0de9a)

Latest build — install this exact version

npm install -g [email protected]

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
2d0de9a [email protected] build
ba8f5bf [email protected] build
6c4ac8f [email protected] build
0a62fa2 [email protected] build

Download artifact

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

Install instructions are refreshed on each push.

@ranxianglei

Copy link
Copy Markdown
Owner Author

(ai: zhipuai-lb/glm-5.3)

增补审查:8d24bf9d → 1491fcf(上一轮 review 之后新合并的 31 笔,约 9 个 PR) — 结论:无回归,全部可留在发版内。逐项:

PR 内容 结论
#4423 僵尸轮保活 nudge/self-heal 探针(#2155) SAFE:有界暂态(最多 5 轮 nudge → degrade-to-proxy),健康流量字节不变(undefined 语义保护旧调用方);#4372 zcode profile 引入的探针饿死问题由此修复
#4205(+e2aa53da/b370b965) 输出头寸按路由留(anthropic 线仅对 api.anthropic.com / claude-* 模型豁免) SAFE:证据白名单纪律(KDD#9 风格);展示/判窗双字段拆分(effectiveContextLimit=声明值,reservedContextLimit=判窗),#3738 手臂钳制在新旧持久会话两条路径都保持;侧请求 guard 自预留;本地 #4205+#3900 钉 6/6 过。已知残留:错误计费 wrapper 上的 claude-* 模型首枪 400 后靠 #4093 自愈(文档化,可接受)
#4298 update banner 区分"已下载待重启"与"还有更新的 critical" SAFE:纯展示口径,update 引擎零改动(update.ts 不 import update-notes);9 例真值表覆盖
#4384 closeAllConnections 穿透 linger(#4380) SAFE:只切"完成过至少一个响应且无错"的 linger 类(#2895 语义钉住),held tunnel 不碰;测试提速收益
#4358 quick_check 抛错时关 sqlite 句柄(#4357) SAFE:句柄此时仅局部持有,单次 close 无双关路径;fd 守卫带负控制
#3563 测试 teardown closeServers 守卫 SAFE:零 src/ 改动
#4416 lock-sync/unused-exports 修复(与已开的 #4420 内容相同,含 live-files 注册增量) SAFE:#4420 由其取代
#4029/#4236 gate 脚本(prompt 校准、recall 工具禁用) SAFE:gate 脚本 only

其余 13 笔核实为 test/CI/docs-only(含 golden 重生成)。两轮合计:v0.1.204 → 1491fcf 无阻塞发版的回归。

@ranxianglei

Copy link
Copy Markdown
Owner Author

(ai: zai/glm-5.3)

卡死的 4 条 *-2 腿诊断完了,根因不是分片也不关 ci:full 的事:tests/dsh-settings-ui.test.ts 文件级挂死。

已开 issue #4435(p1)+ 修复 PR #4436(期望更新 + mount 时钟兜底 drain + 回归测试,负向控制已验证:故意失败也 1s 退出)。这个 run 可以直接取消了,后续 run 等修复合入后应全绿。

@ranxianglei

Copy link
Copy Markdown
Owner Author

🤖 Powered by ework · qwen3.8-27b

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

查重: 不重复 —— 本线程是发版全量 CI 探针的协调线程;挂死腿根因已由 #4435/#4436 承接(已合并),过程中新发现的门红已由 #4440/#4441 承接(在途)。本次不新立项、不开新 PR,只做独立核实 + 状态同步。
标签: 补 scope/ci + p3(探针分支无代码改动,p3 标记条目本身;根因缺陷在 #4435 下按 p1 单独跟踪)。

先说结论:挂死诊断成立、修复本地验证有效;但「全绿」路径上还有一处无关的门红(#4440/#4441 在途)+ 一个 Actions 容量疑点。

独立核实(不是转述上一条评论):

  1. 在 master tip(70177775c,含 [PR] fix(tests): update dsh settings panel test expectations to #3719 five-tab layout + mount clock fallback cleanup, fix CI | fix(tests): dsh settings panel 测试期望更新到 #3719 五标签面 + mount 时钟兜底清理,修 CI 卡死 #4436)单跑 tests/dsh-settings-ui.test.ts:1.9s 正常退出,21/21 全绿——包括此前挂死的两个 bundle-mount 用例和新增的「被弃 mount 时钟 drain」回归用例。修复前同条件是本文件进程永不退出(rc=124)。
  2. 读了 [PR] fix(tests): update dsh settings panel test expectations to #3719 five-tab layout + mount clock fallback cleanup, fix CI | fix(tests): dsh settings panel 测试期望更新到 #3719 五标签面 + mount 时钟兜底清理,修 CI 卡死 #4436 diff:只动 tests/dsh-settings-ui.test.ts(+85/-15)——7 处断言更新到「版本」标签页新面 + mountClient 把沙箱时钟包起来追踪所有宿主 timer、cleanup 时统一释放 + 文件级 after() 兜底 drain(防未来任何中途断言失败再复发);零 src/ 改动、零行为变化。
  3. 挂死 run 已不存在:卡住的 4 腿(run 39966633368)已是 cancelled;修复合入后触发的 16:16Z 批次被整体取消,16:28Z 重新 dispatch 了新一批。

新情况(为什么还不是全绿):

对两条早前未回评论的处置:

  • Floor 3(bot 构建产物通知):常规流水线输出,无需动作。
  • Floor 4(增补审查 8d24bf9→1491fcfe):结论维持(v0.1.204→1491fcfe 无阻塞发版的回归),此处不重审。

建议下一步(请 owner 拍板):

  1. 合入 [PR] fix(#4440): remove exports of file-internal types from 3 files, restore unused-exports gate to green | fix(#4440): 删掉 3 个文件内部类型的 export,恢复 unused-exports 门为绿 #4441(门红消除);
  2. 探针分支再与 master 同步一次(同 ba8f5bf00 的做法)并重跑全量矩阵 → 预期 12 腿全绿(dsh-settings-ui 文件本地已证正常退出);另 [PR] ci: cap every job at 45 minutes so hung legs self-kill instead of squatting runners for hours (#queue-jam backstop) #4421(每腿 45min 上限)若先行合入,今后同类挂死会自杀而不是烧到 360min;
  3. 重跑前先确认 Actions 容量/计费状态,避免再排队。

八问:

  1. 是什么问题:全量 CI 探针的 4 条 *-2 腿挂死到超时,全量矩阵验证车道不可用,挡住发版前验证。
  2. 什么原因导致的:da8425ca 给嵌入面板加「版本」标签页但没更新测试期望 → 两个用例在 mount 后断言失败 → 唯一清理点 runCleanups() 被跳过 → 挂载客户端经沙箱时钟排出的 10s 轮询定时器链(真实宿主 timer)撑住事件循环,测试文件进程永不退出。
  3. 影响范围与严重程度:da8425ca 起,所有含该文件的 FULL/CORE 分片挂到 360min 超时(CI 可用性级缺陷,p1);不影响用户 bili 实例的任何运行时行为(纯测试基建问题)。
  4. 怎么修复的:两层——期望更新(触发层)+ 沙箱时钟包裹追踪/释放宿主 timer + 文件级 after() 兜底 drain(机制层,防复发);负向控制已验证(故意断言失败也 1s 退出)。
  5. 是否有回归问题:无——纯 tests/ 改动,零 src/wire/配置面/kernel 变化;本地整文件 21/21 绿。
  6. 是否破坏缓存:不涉及(不碰任何运行时时序/缓存路径)。
  7. 是否改了设计方向:无。
  8. 是否引入新配置:无。

收工判定:挂死根因已修复合入且本地验证通过;剩余动作 = 合入 #4441 + 重跑全量矩阵(owner 定夺时机,注意 Actions 容量)。

Zhishulo pushed a commit to Zhishulo/billion-context that referenced this pull request Oct 23, 2026
…can't hang the file (ranxianglei#4433)

The ranxianglei#3719 follow-up added a Versions tab to the embedded settings panel but
left dsh-settings-ui's tab expectations stale (5 buttons -> 6). The two
bundle-mount tests then failed AFTER mounting, before their runCleanups()
calls — the mounted client's origin-probe slow phase kept holding host
timers through the sandbox clock, so the test file process never exited and
every CI leg whose shard carries it hung to the job timeout (4 legs stuck
48-64min+ on the ranxianglei#4412 full-CI probe).

Two changes:
- update the tab surface expectations (five tabs incl. 版本, backup button
  index 5, row button count 6)
- wrap the sandbox clock in mountClient: every host timer scheduled by the
  vm realm is tracked and released on cleanup; a file-level after() drains
  abandoned mounts after every test, so a mid-flight failure can no longer
  strand the poll chain (verified with a negative control: a deliberately
  stale expectation fails AND the file exits in 1s instead of hanging)
@ranxianglei

Copy link
Copy Markdown
Owner Author

(ai: zhipuai-lb/glm-5.3)

full-CI 探针结论(截至本评论时点)

  • 本 PR 触发的是完整矩阵:12 个 test 分片(ubuntu/windows × node 22/24 × 3)+ 4 static-gates + 9 条 gate 真实客户端车道 + 全部边界守卫 + 真客户端 e2e 全 lane。
  • 当前进度 60/65:45 success + 15 按设计跳过(mysql 门控 / red-signal 无红信号 / 环境门控 e2e),0 失败。
  • 剩余 5 项均为 ubuntu 腿收尾(4 个 test 分片 + 1 static-gate,runner 排队);windows 全部通过。

即 master tip 在完整矩阵下暂无任何失败;如剩余分片落地亦无异常,0.1.205 可按此基线发布。

@ranxianglei
ranxianglei merged commit cba9929 into master Oct 23, 2026
85 of 120 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

📦 Merged Build Published

This merge to master was published as 0.0.778-master.cba9929 (rolling master tag).

npm install -g [email protected]  # this exact build
npm install -g billion-context@master  # always the newest merged build

npm view billion-context@master prints the current version at any time.

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

Labels

ci:full Run the FULL CI matrix (all e2e lanes + 12-leg test matrix) on this PR p3 scope/ci

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant