Repository navigation
v3.3.13 — 补 issue #451 的「半修」:水位三字段投影不全 + 前端从未消费
一句话
v3.3.11 声称「水位三字段已透出、面板可核对走没走代理压缩兜底」,实测发现两处都没做完。本版补齐。
缺陷形态(重启后实测发现)
① 后端:三个投影点里只有一个漏字段
handoff-state 有 3 个 waterLevel 构造点(rec 分支 / else 分支 / 全局 state 分支)。其中 else 分支(有 sessionId 但该会话尚无水位记录时走的那条)没有 meterViaProxy / estimatedTokens / realUsageTokens:
6751: } else {
6752: const wi = await this.waterWindowForSession(sessionId)
6753: water = {
6754: ratio: 0, tokens: 0, window: ..., meter: '',
6755: ...
6756: } ← 三字段不在这里
⇒ 调用方恰好走到这条分支就拿到 undefined,而另两个分支正常。典型的「半修」,故障难复现。现补齐(取值语义 = 未走兜底:false / 0 / 0)。
② 前端:这三个字段从未被消费
lib/client.js 对 meterViaProxy / estimatedTokens / realUsageTokens 的引用数为 0(对照:officialRatio 2 处、thresholdMode 3 处都有消费点)⇒ v3.3.11 的 CHANGELOG 那句「面板可核对」是空头支票。
现新增「代理压缩双数对照」行:显示「官方估算 X token / provider 实测 Y token」,i18n 三语(zh/en/ja)各 +1 键。
③ 为什么 3.3.11 的守卫没拦住
a30 套件 D6b 把计数写死为「记录 1 处 + 两条投影各 1 处 = 3」—— 而实际有 3 个构造点。正是这条过期判据让漏字段的分支保持绿色。现改为跟着实际构造点数走(waterCtorCount + 1),a30 从 82 → 83 断言。
对普通用户的影响:零
新行受 wl.meterViaProxy === true 门控 —— 未使用 billion-context 代理压缩的用户永远为 false,不渲染任何新节点,界面与 3.3.12 逐字节等价。
验证
- 串行全量回归 PASS 439 / FAIL 0 / TIMEOUT 0(
--jobs=1 --timeout=180000,618.7s,439/439 套件)。 - 新增
tests/smoke/smoke-test-v3313-water-projection.mjs(29 断言):- A 组真跑
handoff-state三分支(全局视图 / else 分支 / 带兜底状态),逐分支断言三键齐全与取值语义(含真值传播实测900000/420000); - B 组断言前端真的消费(渲染锚点 + 门控 + 两数都被读取 + 三语齐备);
- C 组负路径;D 组结构判据(三构造点全带三键);
- E 组变异必红:删掉 else 分支三字段 →
fail=1;去掉前端门控 →fail=2。
- A 组真跑
- ★D 组首次实现对变异不敏感(硬编码读真实文件,注入路径未生效 → M1 变异仍绿)。已修为读可注入路径,M1 才真正变红 —— 这条本身就是「守卫没鉴别力」的实例。
- 三把基线锁按实测重钉并附归因:
r26E372C0DA04…→F84BC89E…、iter5-skin127db190…→9caf68af…、settings-archive-intervalec132f81…→6f21c2ad…。 - tarball 三重校验:registry
dist.shasum= 下载件 SHA1 =bc4e1de03aa164ff7e70ec06b68803a5113dba42;解包实测 246 文件、version=3.3.13、指纹行dsh-028-water-proxy-pair、水卡新行与 i18n 均在包内、tests/与docs/不在包内、凭据类文件 0。
仍在问题中 / 未验证
- 真实链路仍未本机验证:本机未安装 billion-context 代理型插件,
meterViaProxy恒为false。本批以「预置state.waterLevelProxyCompat后真跑handoff-state」验证真值传播,未在真有该插件的机器上跑过。 paramSource字段仍是「后端投影、前端未消费」—— 不属于 #451 的承诺范围(同批字段里多投影的一个),本次未改,留作后续清理。- 本轮回归中
smoke-test-issue207-processes曾 1 次失败(EPERM: rename cont-seq.json.tmp,Windows 文件占用),单跑连跑 6 次全 PASS,判为并发夹具偶发;最终一轮 439/439 全绿。