Skip to content

release v0.1.176 - #1783

Merged
ranxianglei merged 4 commits into
masterfrom
2026-09-30_release-v0.1.176
Oct 1, 2026
Merged

ranxianglei merged 4 commits into
masterfrom
2026-09-30_release-v0.1.176

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.175

@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 收到 release v0.1.176 fallback PR。这是 one-click release 被 branch protection 挡下后的自动兜底 PR(正文含 ework-agent-pr 标记),不重做,按发版类 PR 流程审查:拉分支核对 diff、确认 CI、并按 owner policy 对 v0.1.175→v0.1.176 全区间做回归审计。稍后给出结论。

@github-actions

github-actions Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor Author

📦 Built Package Artifact

Branch: 2026-09-30_release-v0.1.176 (44f4773)

Option A — Install this exact build (recommended)

npm install -g billion-context@0.0.1761-pr.1783.c0e39ac

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-pr1783.tgz
npm install -g package

Install instructions are refreshed on each push.

@ranxianglei

Copy link
Copy Markdown
Owner

有新进来两个pr 注意

@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 收到,已看这两个新 PR:

与 release PR #1783 的关系:两者都基于当前 master,#1783 的 diff 只有 package.json/lock 的版本行,无文本冲突。顺序上两种都行——先合 #1783,则 #1779/#1780 进下一个版本(v0.1.177);若要把这两个塞进 v0.1.176,需要先把它们合入 master 再让 fallback 流程更新 release 分支(它已经自动 merge 过一次 master 到 e95f3c6)。默认建议:#1783 按现状合出 v0.1.176,两个新 PR 随后走正常流程。是否要等它们进本版本由你拍板。

继续做 v0.1.175→v0.1.176 区间回归审计,结论稍后补。

@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 一句话摘要:纯版本号 release PR(0.1.175→0.1.176,diff 仅 package.json/package-lock.json);已对 v0.1.175..最终 head 44f47734 全区间 55 个内容 commit 做完整回归审计——本版本引入回归:无;CI 仅 1 处瞬态红(Windows 测试 job 的既有 dsh-native 时序 flake,非本版引入,已触发重跑)。建议可合。

结构化七问

1. 是什么问题
one-click release workflow 直推 master 被 branch protection 拦下,自动 fallback 开此 PR;PR 本身无代码变更。实质工作是审计本版携带的 v0.1.175 以来全部变更(分支期间三次自动合入 master,最终 head = master tip 834f7d14 + version bump)。

2. 什么原因导致的(针对唯一的 CI 红)
test (windows-latest, 24) 挂 1/3469:#1130 apply() attach mode: runtime death of the shared proxy re-probes and falls back to spawn,Error: timeout waiting for plugin headers stamped(tests/dsh-native.test.ts:1303 → waitFor:415,固定 5s wall-clock 健康预算)。根因是既有测试类:真实子进程 spawn + 固定 5s 预算 + 共享 preferred-port zone,Windows runner 负载下子进程启动超预算。证据链:

  • 同一签名跨 Node 版本、跨 head、每次挂的测试名都不同(win22@48e606e9 挂 #983 maybeRetry,win24@44f4773 挂 #1130 attach-mode——两者都是 v0.1.175 就存在的测试);
  • 本地复现:release head 紧循环不回收孤儿子进程 → 4/5 失败且每次不同测试;带回收 → 1/5;基线 v0.1.175 同流程 5/5 通过;
  • 其余 8 个 CI job(E2E real codex / fake-codex / e2e-native-{dsh,opencode,pi} / local-registry / Windows overlay)全绿;本地 pre-flight @44f47734 全绿(typecheck + test + build,3469 tests / 3450 pass / 0 fail / 19 skip)。

3. 怎么修复的
release PR 不含代码改动,不涉及。flake 若需根治:放宽/重试 waitFor 预算或隔离端口区——按 loop-guard(#1783 为 bot 立项),我不自行拆 issue,留你决定是否单独立项。

4. 是否有回归问题
逐项审了全部 55 个内容 commit 触碰路径的既有行为:本版本引入回归:无。高危模式逐条过:fail-fast 变吞错(无——zero-injection 路由保持 loud-400 refuse-to-guess,witnessHash 对非对象 args 返回空串但下游仍落 loud 路径)、阈值/时序漂移(见下方清单,均为有意披露项)、输出格式漂移(wire-contract goldens 仅移除 conversation_id 参数块,sanctioned 脚本再生成,抽查无隐性 schema 漂移)、缓存/增量游标(见第 5 问)。

5. 是否破坏缓存
无负面影响,反而改善:zero-injection 移除模型可见 conversation id(#1611)使 wire byte-stable,正是为提升 prefix-cache 继承;ccr retrieval 载体从 host-synthesized system message 移到 tool result(自身信任层),不影响前缀;activePack 回读与 affinity union 写只动状态持久化,不动缓存键。

6. 是否改了设计方向
两处方向性变更,均 owner 批准/跨仓 lockstep:(a) zero-injection session identity——id-less MCP tool call 改由出站 tool_use witness(tool-ring,cap 32/TTL 10min)路由,conversation id 不再暴露给模型(#1685/#1611);(b) ccr retrieved originals 在 tool result 内交付(kernel v2 契约 lockstep,GHSA jc6g v2 安全理由),#1343 queued-delivery 退役。其余均在现有架构内。

7. 是否引入了新的配置
有,均 owner 拍板且文档镜像(CONFIGURATION.md/.zh-CN.md):(a) providers[<name>].compactionOptIn——non-http(s) baseUrl provider opt-in,#1392,按 owner 决定折进 providers 表(无孤儿 section,grep 确认);(b) providers[<name>].bind——named provider lane aliasing + dead-field guard,#1469。无新 BILI_* env、无新 CLI flag。(OMP 的 PI_OPENAI_STREAM_FIRST_EVENT_TIMEOUT_MS=1800000 是 bili 拥有 OMP 流量时的内部进程 env,非用户配置面。)

重大行为变更清单(old→new+原因)

机械核查(全过)

  • release commit 规范:单一 release v0.1.176 commit,diff vs base 仅版本行 ✔
  • npm latest = 0.1.175 = bump 前 master 版本(drift guard 过)✔
  • acp-kernel exact pin 0.0.99 + npm 已 live(ship-first 顺序满足)✔
  • 本地 pre-flight @44f47734:typecheck/test/build 全绿(3469/3450 pass/0 fail/19 skip)✔

CI 状态 @44f47734

8/9 绿;唯一红 = test (windows-latest, 24)(上述 flake)。我已触发该 job 重跑(HTTP 201),结果出来我会补一条跟进。另注:此前你提醒的两个 PR #1779(preflight summary length budget)/#1780(nudge-low-effort feat,含新配置字段)仍 open、基于当前 master,与本版本 diff(仅版本行)无冲突,将随下个版本发布。

判定

可合:内容层面零回归、本地全绿、机械核查全过;合并前确认 windows job 重跑转绿即可(若合并前 master 再前进导致 head 移动,只需对增量做差异复审,机制同上)。我不会代合并——请你在 #1783 操作。

@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 跟进:已触发的 test (windows-latest, 24) 重跑通过(run #36743724187 现全绿)——与审计结论一致,属瞬态时序 flake,非本版回归。

至此 head 44f47734 上 9/9 CI job 全绿(含 E2E real codex / fake-codex / e2e-native-{dsh,opencode,pi} / local-registry / Windows overlay)+ 本地 pre-flight 全绿。PR 已具备合并条件,请在 #1783 操作合并(合并后 release.yml 自动发布 v0.1.176)。

@ranxianglei

Copy link
Copy Markdown
Owner

应该又进来许多 审查了吗

@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 刚查过:没有新的东西进入本版范围——master tip 仍是我审计时的 834f7d14(#1776 合入后没再动过),release head 也仍是 44f47734(分支未再自动合入)。所以已发的那份全区间审计(v0.1.175..44f4773,55 个内容 commit)仍然完整有效,无需补审。

你看到的"进来许多"是新开的 PR(都基于当前 master、均未合入,因此不在 v0.1.176 窗口内,将随后续版本发布):

这些各有自己的 review 线程,不在本 issue 范围内。若其中任何几个在你合并前进了 master,workflow 会自动把它们带进 release 分支(此前已发生三次)——届时只需对增量做差异复审,叫我一声或直接看新 head 的 CI 即可。当前状态:9/9 CI 绿 + 本地 pre-flight 绿 + 审计结论"可合"不变。

@ranxianglei
ranxianglei merged commit 7906902 into master Oct 1, 2026
22 of 23 checks passed
ranxianglei added a commit that referenced this pull request Oct 1, 2026
…g-guard

fix(dsh): stale verifyAttachAndRecover landings must never clobber the self-healed register (#1783)
antclt pushed a commit to antclt/billion-context that referenced this pull request Oct 1, 2026
…e self-healed register

windows-22 CI on the v0.1.176 release PR (ranxianglei#1783) deadlocked the ranxianglei#983
self-heal test: the apply() attach chain resolves long after it started
(loopback probe + evidence grace + process spawn are all slow there), and
in the meantime maybeRetry can already have healed the register onto a
new origin — the late landing then wiped register.base/toolsReady
unconditionally, or registerTools' catch armed a global 10s retryAt
against a base the register had already moved past, freezing every later
heal attempt behind the wall.

Three changes, one contract: a landing may only write the register while
it still owns it (base undefined, or still the stale origin the chain set
out to replace):

- landingOwnsRegister() guards both wipe sites and the fallback origin
  reset in verifyAttachAndRecover
- the unfreeze wipe also clears retryAt — a back-off armed against the
  stale base dies with it
- registerTools scopes its back-off to the base that actually failed

Two deterministic regression tests pin the interleavings (slow preset
probe; slow spawn seam) — both fail on master, pass with the fix.
ranxianglei added a commit that referenced this pull request Oct 4, 2026
A re-activation after a HEALTHY registration used to leave the bili tools
dead until dsh restarted — the same #2082 symptom reached from the success
ordering. apply() reset register.dead and activeCtx, but not
register.toolsReady: the tools registered into the deactivated context die
with it, while every registerTools()/maybeRetry() early-returns on the
stale stamp, so the new context never re-registers (and headersFor keeps
stamping plugin mode for a lane whose dsh side has no tools).

Clear toolsReady (and retryAt, per #1783's fresh-activation rule) when
apply() sees a context change. Scoped to a context CHANGE: a same-context
re-apply keeps its registration (the attach verify path already re-checks
on its own).

tests/issue2101-dsh-reactivation.test.ts: the success-ordering
re-activation test times out on the unfixed tree (verified) and passes
with the clear; a same-context re-apply stays healthy.
@ranxianglei
ranxianglei deleted the 2026-09-30_release-v0.1.176 branch October 15, 2026 05:32
ranxianglei pushed a commit that referenced this pull request Oct 17, 2026
…n commits

Round-2 CI (u24s1) timed out '#983 maybeRetry self-heals a base-less register
after a failed respawn' (15s waitFor). The giveUp generation guard was also
applied to the spawnFallback landing, but a fresh-spawn landing is live by
construction — it cannot resurrect anything — and the self-heal contract
(#983/#1783) requires exactly these late landings to re-base a given-up
register. A giveUp that lands between fallback start and landing must not
suppress the heal.

The guard now covers only verifyAttachAndRecover's three commits of an
EXISTING origin (equal/newer branch, rotation-refusal branch, pinned-recovery
branch), whose liveness was probed earlier and may be stale at commit time —
the exact #3380 resurrection hazard, proven by the measured incident-test
timeline (giveUp T589.23 < refusal commit T592.18).

Local: dsh-native.test.ts 55/55, #983 self-heal 20x stable, issue3380 6/6,
issue3544 16/16, native-intercept 62/62, launcher 313/313, typecheck clean.
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