---
name: musepi-trim-cot-leakage
description: 清理"思维链泄漏"类文案——死设计会话引用（(决策 N)、审计码、草稿 §N、T4/P-I 阶段标签）、PR/栈视角（"这个 PR 加了…"）、变更叙述（"以前/不再/旧版/这版"）、评审对白（"评审中否了…"）、控制流叙述、含糊推迟（"大概够用/应该够了"）、夹带的工作语言残留。触发：审阅/清理注释、JSDoc、docs、AGENTS.md、CHANGELOG、i18n 文案里读起来像推理过程泄露的文字。
---

# 清理思维链泄漏

**思维链泄漏**是视角停留在写作会话、而不是仓库现状的文案：引用了只有那次会话才看
得见的产物，叙述"变更"而不是"状态"，或在对一个早已离开的评审者辩解。修复从来不是
只删——一段文字带有事实分句时，把每个事实改写成在 HEAD 上成立的说法，再删掉周围的
转写；一个事实分句都不带的（审计码、控制流叙述）直接整段删。**必读背景：**
`skill://musepi-prose-standard` 持有本 skill 套用的完整命题规则。这是指导，不是脚本。

## 唯一检验

对每个可疑段落问：**一个只读 HEAD（仓库现状 + git 历史）的读者，能否解开每个引用、
验证每个论断？** 不能 → 把存活的实情改写成仓库视角的说法，删掉其余。能 → 不是泄漏，
无论多像历史——但"可解析"只过本 skill 的杠：在现状面上（README、docs、JSDoc）可
解析的变更故事仍是变更叙述，按分类 3 归位。

## 分类

1. **死设计会话引用** —— `(决策 7)`、`(审计 C2)`、`设计 §4.7`、`方案 §1.4`、阶段标签
   （`T4`、`W3`、`P-I`）、"设计台账"、"(B 裁定)"。该决策有已提交的归属者就按名和路径
   引用，否则删掉引用并把事实分句改写成独立成立。
2. **PR/栈视角** —— "这个栈里后面的 PR"、"本 PR 新增"、"上一个 commit"。写已落地的
   机制或扩展点；未竟工作移到 `TODO` 标记或 issue。
3. **变更叙述与版本戳** —— "以前/不再/旧的 X"、"这版/v1/今天/现在"（与过去对比）。
   写当前行为；已修复的回归写成现在时反事实（"没有 X 就会发生 Y"），绝不写成仓库
   历史（"以前会 Y"）。
4. **评审对白** —— "评审中否了："、"评审者确认了"、草稿序号（"本 note 的 v5"）、
   轮次归属。把存活的决定与理由写成普通事实，删掉谁在何时说的。
5. **向评审者自辩** —— "这转换是安全的——它只是…"、"这是对的因为…"。一条注释自证
   其正确，是在跟评审者说话，不是在跟维护者说话。写出让代码安全的那个不变量，或
   代码已自明就整条删。
6. **复述与推导转写** —— 控制流叙述（"先 X 再 Y"）、测试走查、显然分支的证明。
   删；只留非显然的契约或不变量。
7. **含糊与计划残留** —— "暂时大概没问题"、"应该够了"、没有标记的推迟。提升为
   `TODO`/`FIXME` 或写成实际边界；删掉含糊本身。
8. **写作语言残留** —— 中英混排里的工作语言碎片（`端`、`设计稿`、`---- 私有 ----`
   分隔符）。翻译或删除。

## 什么不算泄漏（保留）

- **issue 引用** —— `#1234`、`TODO(name):`、`issue #N owns the follow-up` 在 HEAD
  上可解析，任何面都保留，包括 README。
- **已合并 PR 引用** —— 在 CHANGELOG 和 postmortem 里是佐证（CHANGELOG 本来就是
  变更史）。`docs/` 现状文不引 PR 号。
- **抑制理由** —— biome/oxlint-disable 的 reason、coverage-ignore 理由、空 catch
  的解释是必需文案：修正假理由，绝不删。
- **现在时反事实回归钉** —— "没有 X，Y 就发生"、"naive 的 X 会…"。
- **实测边界** —— `(实测: 512 层嵌套 ≈ 0.15s)`；"实测"这个词是有载重的。
- **运行时新旧对象** —— "旧连接排空后新连接才接受"是运行期生命周期，不是变更历史。
- **仓库外的按设计引用** —— RFC 9110 §10.1.5、Figma 框名；§-禁令针对未提交的内部
  草稿，不针对外部标准或自有 §-编号的已提交文档。
- **项目语态与体裁形式** —— "我们"作为项目语态。

## 工作流

1. **范围**：先要求明确 scope，不推断全仓；`musepi-prose-standard` 定义排除项——
   不动 `vendor/`、`node_modules/`、录制产物/快照（录制输出保留原声）。
2. **先只读审计**：跑 [recall batteries](references/recall-batteries.md)（带 `--hidden`
   搜 `.omp/`、`.agents/`、docs），再对每个命中做语义判断。batteries 是探针不是定义，
   所以还要不带模式通读范围内最密的文案（模块 JSDoc、README、docs、prompt .md）。
3. **按归属者修**：生成的目录 → 改生成器再重生成（`models.json` 改
   `scripts/generate-models.ts` 后 `bun run gen:models`）；i18n 域文件 → zh/en 同步改；
   模型可见字符串 → 措辞即行为，走 snapshot 支撑的变更而不是悄悄改写。
4. **删之前**列命题（`skill://musepi-prose-standard`），并查过度修正陷阱
   （[examples](references/examples.md)）：把义务改成背书、把假设说成已发布功能、
   删掉真事实、丢掉来源——都是要防的。
5. **验证**：重跑 batteries，期望只剩正当保留；确认每个留下的引用在 HEAD 可解析；
   对触碰的面跑相关门禁（`bun check`、相关测试、`bun run gen:models` 若动目录）。
