在 #5832(PR #5976)实施过程中实证发现,dev 报告记录、PM 代立案(查重:docs-import-surface 三仓 open issue 零命中)。
现象
packages/spec/docs-import-surface.baseline.json 仓内落盘用 ASCII 转义编码(如 —),而 packages/spec/scripts/build-docs.ts 的 --update-import-baseline 路径用 JSON.stringify 写原始字符。两种编码在 JSON.parse 后逐条等价(门禁读 parse 后条目,判定不受影响),但文件字节不同 —— 每次跑该命令都会把整个文件重写为原始字符编码,产生约 275 行与内容无关的编码 churn,把真实的 1-2 行变化淹没在 diff 里。
为什么值得记录
- 复核者(人或 PM)面对 275 行 diff 无法一眼分辨「真实基线变化」与「编码翻转」,恰好违背该 ratchet 文件「只减不增、变化应当显眼」的设计意图;
- 下一个跑
--update-import-baseline 的 dev 若不知道这层,会把编码翻转原样提交,后一个 dev 又翻回来 —— 同一文件在两种编码间震荡。
PR #5976 的临时处置:取生成器输出后按仓内既有编码惯例重新序列化,使 diff 只剩 1 行真实变化(内容 100% 来自生成器)。根治是让 --update-import-baseline 的写盘端与仓内编码惯例一致(或反过来,把基线统一为原始字符并留一次性转换提交)。
落点
packages/spec/scripts/build-docs.ts(写盘序列化)+ packages/spec/docs-import-surface.baseline.json(编码现状)。
Refs: #5832、PR #5976。
观察级:今日无用户可见后果,修法半小时内。留 finding 交发现分诊轮定级;域标签按纪律留分诊座位补(落点在 packages/spec/scripts/**,疑似 domain:spec-tooling 面)。
在 #5832(PR #5976)实施过程中实证发现,dev 报告记录、PM 代立案(查重:
docs-import-surface三仓 open issue 零命中)。现象
packages/spec/docs-import-surface.baseline.json仓内落盘用 ASCII 转义编码(如—),而packages/spec/scripts/build-docs.ts的--update-import-baseline路径用JSON.stringify写原始字符。两种编码在JSON.parse后逐条等价(门禁读 parse 后条目,判定不受影响),但文件字节不同 —— 每次跑该命令都会把整个文件重写为原始字符编码,产生约 275 行与内容无关的编码 churn,把真实的 1-2 行变化淹没在 diff 里。为什么值得记录
--update-import-baseline的 dev 若不知道这层,会把编码翻转原样提交,后一个 dev 又翻回来 —— 同一文件在两种编码间震荡。PR #5976 的临时处置:取生成器输出后按仓内既有编码惯例重新序列化,使 diff 只剩 1 行真实变化(内容 100% 来自生成器)。根治是让
--update-import-baseline的写盘端与仓内编码惯例一致(或反过来,把基线统一为原始字符并留一次性转换提交)。落点
packages/spec/scripts/build-docs.ts(写盘序列化)+packages/spec/docs-import-surface.baseline.json(编码现状)。Refs: #5832、PR #5976。
观察级:今日无用户可见后果,修法半小时内。留
finding交发现分诊轮定级;域标签按纪律留分诊座位补(落点在packages/spec/scripts/**,疑似domain:spec-tooling面)。