# 仅改用户点名项 · 禁止擅自改删报表（最高优先级 · 强制）

> **优先级**：高于一切「顺手优化 / 看起来更完整 / 方便下次」的冲动。
> **必加载**：任何会 `saveReportDevInfo` / `deleteReport` / `lifecycle delete` / `rollbackReport` / 改查询·权限·快照·数据集 的任务开始前。
> **CLI**：`e10-cli report fix --help`（打印本政策）；映射见 `e10-cli report -cli.md` §一。

---

## 〇、一句话

**用户没点名的：不读全表乱改、不执行、不删除、不重建。**
已搭建好的配置视为成品；Agent **只允许**调整用户**本轮明确说明**的点。

---

## 一、硬禁止（违反即事故）

| 禁止 | 说明 |
|------|------|
| **禁止擅自删除报表** | 未明确说「删除 / 清理 / 删壳」时，禁止 `deleteReport`、`lifecycle delete`、`cleanup shells`（清理空壳仅当用户要求或失败删壳流程且目标确为空壳） |
| **禁止擅自改未点名配置** | 未点名的单元格、合并、样式、行高、父格、公式、查询条件、数据集、权限、快照、分组、名称等 → **一律不动** |
| **禁止「额外」命令** | 不为「验证方便」「对齐规范」「顺便修好」而主动跑改写类 API / 脚本；只读探测也须最小化 |
| **禁止整表覆盖式「修复」** | 禁止为改一点而重做整张表、从兄弟报表 clone、无 spans 重建导致拆合并 |
| **禁止扩大解释范围** | 「改列宽」≠ 改样式；「冻结」≠ 改布局；「居左」≠ 改主题；「某处不对」≠ 整表重扫 |

---

## 二、允许做什么

| 条件 | 允许 |
|------|------|
| 用户本轮明确列出的项 | 仅这些项的最小 patch |
| 写布局必须整表回传 workbook | **语义**只改点名项；其余 fields/style/spans **原样写回** |
| 落库自检 | 裁剪到改动面；发现无关损坏 → **先问用户**再动，禁止自行扩大修复面 |
| 失败删空壳 | 仅 `failure-cleanup` 定义的未落库空壳，且遵守该指南；**禁止**删用户已有正式报表 |

---

## 三、执行前自检（强制打勾）

每次准备调用会改线上报表的 API / CLI / 脚本前：

1. [ ] 用户原话点名的改动列表是什么？（写下来）
2. [ ] 本次命令/脚本是否**严格落在该列表内**？
3. [ ] 是否包含删除、重建、整表 save、改样式/合并/查询等**未点名**动作？→ 有则 **删掉该步骤**
4. [ ] 若不确定是否在范围内 → **先问用户，禁止猜着改**

---

## 四、典型违规（已发生过 · 禁止再犯）

| 用户只要 | Agent 错误加戏 | 后果 |
|----------|----------------|------|
| 列宽 + 冻结 + 居左 | 整表重建 workbook、丢 spans、压行高 | 合并拆开、样式变了 |
| 修一个条件格式 | 重配整表 / 删其它报表 | 配置被破坏 |
| 无明确删除指令 | `cleanup` / `deleteReport` | 报表进回收站 |

---

## 五、与其它文档

| 文档 | 关系 |
|------|------|
| `targeted-fix-guide.md` | 定点改的细则（本文件是总闸） |
| `safe-partial-save-guide.md` | 整表回传 ≠ 允许语义上乱改 |
| `failure-cleanup-and-nonblocking-guide.md` | 唯一允许的「删壳」边界 |
| `e10-cli report -cli.md` | CLI 映射；破坏性命令须用户点名才可跑 |
| `layout-showlocation-freeze-guide.md` | 列宽/冻结/居左仍须保 spans/样式 |

---

## 六、CLI 对照

```bash
# 打印本政策（Agent 改配置前可先跑一遍提醒自己）
e10-cli report fix --help

# 破坏性命令 —— 仅当用户明确要求时使用
e10-cli report lifecycle delete ...
e10-cli report cleanup ...
e10-cli report restore ...
```
