# Protected Spans

> 本文件是解释、示例与操作细则；行为合同的单源是 `SKILL.md`，两处表述不一致时以 `SKILL.md` 为准。

> 在追求“更像人”之前，先把不能漂的片段保护住。

这份文档把 `SKILL.md` 里的 no-touch 原则展开成一个可执行的预检清单。  
`v1.7.0` 先采用 prompt 内 checklist，不要求额外输出 `facts ledger` 格式。

使用顺序：

1. 判场景
2. 先扫一遍 protected spans
3. 再做删句、并句、换主语、降调
4. 回读时逐类核对 protected spans 是否还在

## 1. Protect first

先保护，再改写。默认要先划出来的内容有：

划定时分清两种要求：数值、名称、标识符、正式术语和引用原文按字面保留；状态、实验结果、条件与比较关系按含义保留，允许等义清理其中的非正式包装措辞。不是所有“带数字的结果短语”都是一个逐字禁改的 span。

例如普通进度说明 `质量复核只闭环了 3/10 组，另外 7 组未完成`，可改为 `质量复核只完成了 3/10 组，另外 7 组未完成`：数值、对象和部分完成状态都没变。若原文明确是字段名、日志原文或被讨论的术语，则仍逐字保留，不套这个改法。

### 1.1 Numbers, dates, ranges, units

- 数字
- 百分比
- 时间
- 日期
- 版本号
- 区间
- 时间范围与时间跨度（如“未来十年”“over the next decade”“三个月内”）
- 单位

默认规则：

- 不改数值
- 不随手四舍五入
- 不把精确说法改成模糊说法
- 不放大、缩小或模糊化时间跨度
- 不补原文没有的比较项
- 删除整句时按无源引用规则处理；如果保留相关论断，不得把原时间跨度改成另一个跨度

### 1.2 Names and attribution

- 人名
- 组织名
- 产品名
- 模块名
- 服务名
- issue / PR / RFC 编号
- 责任主体和观点归属

默认规则：

- 不换主体
- 不模糊“谁做的 / 谁说的 / 谁负责”
- 不把原来的判断改成像是别人已经证明过

### 1.3 Quoted text and titles

- 引号内原文
- 引用规范
- 文章标题
- 报告名
- 原话里的关键词

默认规则：

- 引号内容默认原样保留
- 只在用户明确要求时改引号内正文
- 不把引用改写成概述后再塞回引号

### 1.4 Commands, code, params, fields, paths

- 命令
- 代码块
- 接口名
- 参数名
- 字段名
- 配置项
- 文件路径
- 环境变量

默认规则：

- 拼写、大小写、符号、下划线、连字符都保留
- 不翻译代码语义
- 不把注释外的技术片段改成人话

### 1.5 Errors, logs, statuses, metrics

- 报错信息
- 日志原文
- HTTP 状态码
- 指标名
- 实验结果
- 监控数值
- 结论里的度量关系

默认规则：

- 不换错误类型
- 不丢时间范围、样本范围、比较基线
- 不把“观察到”改成“已经证明”

## 2. What may change around them

逐字保护片段外的这些内容通常可以改；表达状态或结果的普通叙述，也可以在含义不变的前提下清理这些包装：

- 开场套话
- 总结式收尾
- 商业黑话
- narrator 腔
- 姿态层
- 空洞判断包装

可以做的动作：

- 删掉 span 前后的废话
- 调整句序，但不改变事实关系
- 把抽象结论压回具体动作
- 合并重复句，但不要吞掉保护项

如果一句话只有靠改 protected span 才能变自然，优先保真，宁可保留一点生硬。

## 3. Scene notes

### `status`

重点保护：

- 时间线
- 当前判断
- 下一步
- 风险归属
- 指标和范围

不要为了更顺，把“风险”“阻塞”“未确认”改轻。

### `docs`

重点保护：

- 术语
- 条件
- 顺序
- 命令
- 配置
- 系统主语

不要为了口语化牺牲可检索性。

### `code-context`

重点保护：

- 代码本体
- 注释里描述的真实行为
- 参数
- 返回值
- 约束条件

可以改注释的 AI 腔，但不能把函数行为改错。

### `mixed`

重点保护：

- 引用边界
- 局部场景切换点
- 引号、代码块、复盘块、公告块里的原有格式

先判哪里是正文，哪里是引用或嵌入块，再决定哪些区域能动。

## 4. Worked examples

### A. `status`

原文：

> 昨天把连接池上限从 20 调到 100，504 先压下来了。后面再观察 24 小时，如果错误率还在 0.1% 以下就全量。

保护项：

- `20`
- `100`
- `504`
- `24 小时`
- `0.1%`

可改部分：

- `先压下来了`
- `后面再观察`

### B. `docs`

原文：

> 运行 `bin/migrate --tenant=prod` 后，如果日志出现 `schema mismatch`，先检查 `DB_SCHEMA_VERSION` 是否和线上一致。

保护项：

- `bin/migrate --tenant=prod`
- `schema mismatch`
- `DB_SCHEMA_VERSION`

可改部分：

- `先检查`
- 前后解释层

### C. `mixed`

原文：

> 用户说“别改我这句，原样保留”。正文里只要把“值得注意的是”这类套话清掉就行。

保护项：

- `“别改我这句，原样保留”`

可改部分：

- 引号外的正文说明

## 5. Final check

回读时至少核对这 5 件事：

1. 数字、日期、单位、版本号有没有漂
2. 主体、归属、责任关系有没有被换掉
3. 引号、代码、命令、路径、参数有没有被改坏
4. 错误、状态码、指标和比较关系有没有被写松
5. 有没有为了“更像人”补进原文没有的事实、来源或判断

看不准时，优先保留 protected span，不要赌。
