# ISS-0087: Agent 将 scale-in 后 +3.3% 负载重分配归因为延迟根因，缺乏定量分析

## Background

TCID-12704（cluster 10123293495242577103，2026-05-13 14:35 JST）：用户通过 GitHub issue #562
提问："During the incident, just one TiDB node was down, and 33 TiDB nodes were still alive,
which means that the increasing workload should be just +3.3%. I don't think +3.3% workload had
large impacts. Can you elaborate it?"

在 TCID-12704 postmortem（cases/TCID-12704/postmortem.md）中，Agent 识别了：
- 初始根因：`coupon_attached_items` 查询驱动 TiDB CPU 达到 75%
- scale-in 34→33 → TCP 连接断开 → 客户重试

## Observed Error

在诊断输出中，Agent 将 scale-in（34→33）造成的服务影响部分归因于"负载重分配
导致剩余 33 个节点压力进一步增加"，表述为延迟继续升高的原因之一。

但用户指出：34→33 的变化仅意味着剩余节点承载 +3.3% 的额外负载。在事故发生时
TiDB CPU 已达 75%，+3.3% 的差异对 CPU 水位的影响是：
- 75% × (34/33) ≈ 77.3%，增加约 2.3 个百分点
- 这个增量很小，不足以解释为什么延迟继续显著升高

实际上，延迟继续升高的原因更可能是：
1. 客户端重试风暴——断连的客户端大量重试，重试请求本身带来额外负载
2. 连接池重建——新连接建立需要 TiDB 资源，在高负载期间代价更高
3. 断连导致事务回滚和重建——增加了 TiKV I/O

Agent 如果引用"负载重分配"作为延迟原因，必须进行定量分析，而不是笼统表述。

## Root Cause Analysis

Agent 对 scale-in 的影响缺乏定量推理能力：
1. 未计算 scale-in 前后各节点的 CPU 水位变化（75% × 34/33 = 77.3%，仅 +2.3pp）
2. 未考虑重试风暴的放大效应
3. 将 scale-in 的影响笼统描述为"剩余节点压力进一步增加"，缺乏数量级概念

正确的推理路径：
- scale-in 本身的直接影响：负载分摊增加 3.3%，已处于 CPU 高水位时轻微放大
- scale-in 的间接影响：TCP 连接断开 → 客户端重试 → 重试请求成为新增负载
  （这才是量级显著的影响，解释了为什么延迟在 scale-in 后继续上升）
- 正确结论：scale-in 的主要影响是连接断开引发重试，而非 +3.3% 的负载转移

## Fix Plan

### Step 1: 在 SKILL.md 增加 scale-in 影响定量分析规则

在 Node C/D 关于 Activity Hub scale-in 事件分析部分增加：

```markdown
**Scale-in 影响定量分析规则**：
当检测到 ModifyClusterSize scale-in 事件时，必须进行定量分析：

1. **直接负载重分配**：
   - 计算方式：CPU水位 × (n/(n-k))，其中 n=原节点数，k=缩减节点数
   - 示例：75% CPU，34→33（k=1），新水位 = 75% × 34/33 ≈ 77.3%，增加约 2.3pp
   - 判断：增幅 < 5pp → 负载重分配影响有限，不是延迟继续升高的主要原因

2. **间接影响（通常影响更大）**：
   - TCP 连接断开 → 客户端重试 → 额外负载（重试请求数量取决于连接池规模）
   - 连接池重建开销（TLS handshake、认证等）
   - 进行中事务回滚 → TiKV write 放大

3. **输出要求**：
   - 明确区分"直接负载转移（+X.X%）"和"重试引发的间接负载增加"
   - 不要笼统表述"剩余节点压力增加"，必须给出量化估计
```

### Step 2: 验证

使用 TCID-12704 重跑，验证诊断输出：
1. 明确给出 scale-in 后负载增加的量化估计（≈+2.3pp，而非泛化描述）
2. 明确指出连接断开引发重试是延迟继续上升的主因
3. 能够正确回答用户问题："+3.3% workload increase had large impacts?"
   → 答案：直接负载转移影响有限（约+2.3pp CPU），但连接断开引发的重试是主要间接影响

## Files to Modify

- `agentkit/skills/builtin/tidb-clinic-diagnosis/SKILL.md`
  - Node C/D Activity Hub scale-in 分析部分增加定量分析规则
