Repository navigation
[PR] fix(#2155): keep the nudge/self-heal probe armed on headerless zombie rounds (zcode regression from #4372) - #4423
Merged
Merged
Conversation
… rounds #4372's zcode profile (toolsHostScopedByDefault) made every no-tools plugin round read as unreachable, which starved zombieStreak — the #2155 degrade-to-proxy recovery could never fire for zcode sessions (red on master: tests/issue2155-self-heal.test.ts:270, 3/3). Discriminator: #4344's silent bridge sends the lane HEADER with an empty tool list; the zombie shape (plugin gone from the client) sends NO header on a sticky plugin-bound session. resolveLaneDecisions now takes pluginHeaderPresent and keeps compressReachable=true for headerless plugin rounds; the four prepares pass it from the live request headers. #4344's header-present silent case is untouched (matrix row pair added).
Contributor
📦 Built Package ArtifactBranch: Latest build — install this exact versionnpm install -g billion-context@0.0.5296-pr.4423.01101a1This exact version is immutable and reproducible. The rolling Recent builds (commit → version)
Download artifact
tar xzf billion-context-pr4423.tgz
npm install -g packageInstall instructions are refreshed on each push. |
added 3 commits
October 23, 2026 21:55
…ly symbols lock-sync: kernel/package.json is 0.0.160 but the root package-lock.json kernel entry still said 0.0.159 — the bump missed the lockfile regen, so 'npm install --package-lock-only' dirtied the tree and lock-sync failed. unused-exports: tests/corrupt-index-child.ts exported ENGPROOF_CHECK_NAMES / BANNER_CHECK_NAMES / CorruptIndexCheck / CorruptIndexVerdict but only the child module itself uses them (the parent tests import the derived ENGPROOF_CHECKS/BANNER_CHECKS arrays and the view helpers). Drop the export keyword; parents stay green (web-storage-banner, storage-engine-proofs both fail=0 locally).
The lock-sync guard regenerates BOTH lockfiles (root + kernel); the bump missed kernel/package-lock.json's two version lines too.
…_FILES The #4216/#4249 storage work made tests/storage-engine-proofs.test.ts and tests/web-storage-banner.test.ts spawn the corrupt-index-child helper, but they were never added to LIVE_FILES — the run-ci-tests SPAWN_RE tripwire (#3182/#1248) failed every ubuntu leg in 20s. Append-only per the slot note: existing zone bands are untouched.
Contributor
📦 Merged Build PublishedThis merge to master was published as npm install -g billion-context@0.0.770-master.402da66 # this exact build
npm install -g billion-context@master # always the newest merged build
|
This was referenced Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
什么坏了
master 上
tests/issue2155-self-heal.test.ts:270确定性失败(本地 3/3 复现):僵尸插件会话的 degrade-to-proxy 自愈永不触发。二分锁定 fdbddd0..8d24bf9 = #4372(zcode MCP dialect)。机制链:
toolsHostScopedByDefaultprofile([Feedback] Noticed during testing that Zcode doesn't seem to trigger compression very often. | [反馈]在测试途中发现Zcode好像不怎么会触发压缩 #4344 本意:桥不健康就别宣传工具);lane-decisions.ts的compressReachable对"没声明任何工具"的插件轮返回 false →compressSurfaceOn=false;prepare-*.ts的nudgeEligible/willInjectNudge以compressSurfaceOn为前提 → nudge 全灭;打桩证据(src/session-self-heal.ts evaluateSelfHealRound 输入 dump):绿版本 r2–r6
nudgeActive=true,红版本全部false。怎么修(判别式:头在不在)
resolveLaneDecisions新增可选输入pluginHeaderPresent(undefined = 观测不到,矩阵/旧调用方不触发);pluginMode && pluginHeaderPresent === false时compressReachable=true。四个 prepare 从pluginAgentHeader(req.headers)现场计算传入。降级发生后本来就切到代理注入工具,headerless 轮表面保持 ON 只是让探测器活着,无副作用;#4344 自己的测试(issue4344)全部带 header,不受影响(已验证)。
搭车的 master 卫生修复(cherry-pick 自 #4416,等价内容)
master 本身带着两个 hygiene 红(lock-sync、unused-exports、LIVE_FILES),所有从 master 切的 PR 都会撞上;cherry-pick 了 #4416 的三个提交让本 PR 自洽,与 #4416 内容一致,先后合并无冲突。
kernel-change: sync kernel/package-lock.json version lines to 0.0.160 (lockfile metadata only, no kernel source change)
测试
zcode headerless zombie round keeps the surface (#2155 probe must stay armed),与既有zcode no-tools drops the surface (#4344)构成正负对;Fixes #2155 回归(由 #4372 引入);与 #4344 语义共存。