Repository navigation
v0.1.24 — 行式日志的单行契约(escVal 补转 CR)
·
22 commits
to master
since this release
一个被上一个 bug 藏起来的 bug
重建事故会话被漂移 #11 写坏的 118 行 [T] 时(按源重放、调用真实 foldOne),覆写后自检发现:逻辑行 218,物理行 642。
toolfold.mjs 的 escVal 转义了 \n,漏了 \r。Windows 工具正文是 \r\n,于是 cmd= / head= / tail= 里留下裸 CR;写进行式日志后 CR 自身被当换行 ⇒ 一行撑成多行 ⇒ 面板 parseTranscript 与任何按行解析的下游读到垃圾续行。
原事故日志里没暴露,纯属侥幸:漂移 #11 让 action='?' 走了 fallbackRule,根本没生成携带正文的字段。两个 bug 互相遮蔽,修好前者才让后者现形。
改动与验收
escVal:special判定加入\r,并补.replace(/\r/g,'\r')。foldOne的每条[T]/[V]保证单行。- 新增
tests/toolfold-single-line.test.mjs:pwsh / read / edit / grep / 未知工具五类输入(正文一律含\r\n)断言单行契约。反证:把escVal退回修复前,同一输入 →旧版输出含裸 CR: true,测试确实抓得住。 - 重建后的只增日志自检:物理行 218 = 逻辑行 218、无标记续行 0、问号行 0;
[T]118 行(域分布 fs 54 / shell 46 / web 11 / jobs 4 / todo 2 / fs-search 1),66 行带真实目标路径,另新增 11 行[V]数值锚点。行尾与原文件一致(宿主本就写 CRLF)。