Skip to content

build-docs.ts --update-import-baseline 用 JSON.stringify 写原始字符,与仓内 ASCII 转义编码惯例冲突 —— 每次运行产生 ~275 行纯编码 churn 淹没真实变化 #5990

Description

@qq9340100

#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 面)。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions