Repository navigation
·
17 commits
to master
since this release
症状
面板「最近一次折叠」的百分比失真。真机读数:659%、917%、382400%。
根因:分子分母来自不同折
shrink = transcriptBytes / shadowedBytes
└─ 累计转录(foldText 全长) └─ 本折遮蔽字节
首次折叠时二者同源(累计=本折),所以看着正常;增量折叠上分子含历史全部转录、分母只算本折 ⇒ 结构性大于 1,且折得越多越离谱。这不是"折叠没收益",是混合口径。同源问题还有两处 console 输出。
修法
- 抽出纯函数
foldShrinkOf():本折口径 = 本次新增转录 ÷ 本次被转写的新原料;缺增量数据的旧记录回退旧算式,字段恒为数值 - 三处消费方(fold-attempt 日志 / fold-committed 日志 / last-fold 落盘)全部改走它;记录自带
foldShrinkScope说明口径 transcriptBytes(累计转录长度)原样保留 —— 它本身没错,只是不该当收益指标- 面板改为显示本折的
incrementalRawBytes → appendedBytes B (占比%),旧记录缺字段时自动回退
按历史重算
重算 12 个文件,跳过 11 个(v1.10.25 之前的记录无增量字段,按设计不动)
session-de4959d2 6.5863 (659%) → 0.6230 (1.61×)
session-5fe3512e 9.1685 (917%) → 0.3464 (2.89×)
session-ffab17e9 3824.05 (382400%) → 0.9000 (1.11×)
session-8e692134 0.1004 → 0.1434 (6.97×)
session-bbfd2f6a 0.1998 → 0.0973 (10.28×)
每个文件先备份(.bak-<stamp>-before-shrinkfix),旧值另存 shrinkLegacy,不做无痕覆盖。
正确读数(真机会话 5fe3512e 五笔,可对外引用)
第 1 折 465,068 → 57,099 B 7.84× 第 4 折 197,939 → 37,186 B 5.32×
第 2 折 648,362 → 114,123 B 5.68× 第 5 折 4,946 → 3,162 B 1.56×
第 3 折 293,978 → 80,954 B 3.63× 合计 1,610,293 → 292,524 B 5.50×
验收
tests/fold-ratio.test.mjs 11 条断言全绿(含用真机读数当基准、两笔天文数字的回归、分母缺失回退、以及一条"本折口径 ≠ 累计除本折"的反回归断言)。同仓另三套仍全绿:当前轮保护 7、漂移 #11 18、toolfold 单行契约 16。