# ISS-0085: Activity Hub 检查未被指标侧检测到的实例数量变化触发

## Background

ISS-0039 修复了"node restart 场景下应主动检查 Activity Hub"，该修复通过 collect_evidence.py
将 Activity Hub 查询纳入标准采集流程（A5 段）。

然而在 TCID-12704（cluster 10123293495242577103，2026-05-13 14:35 JST）中：
- collect_evidence.py 的确采集了 Activity Hub 事件
- 但 Agent 在初始诊断输出中将"3 TiDB 实例重启（db-tidb-1905/1906/1907）"识别为
  疑似异常信号，却没有在第一轮输出中明确引用 Activity Hub 事件来解释这些"重启"
- 正确的解释（ModifyClusterSize 34→33 scale-in）需要用户手动提示才获得

结果：用户的原始反馈——"didn't explain the client retry caused"——就源于此缺口。
scale-in 发生在事故开始后 2 分钟，是客户连接切断和重试的直接触发器。

## Observed Error

**workspace**: ws-1779156165000-34f5ef8b3（local replay）
**原始 prod workspace**: ws-1779071696491-aabaf929c

初始诊断（Message 2）包含：
```
3 TiDBインスタンスが再起動（db-tidb-1905/1906/1907）— 障害時間帯と相関の可能性
```

但未自动查看 Activity Hub 中的 `ModifyClusterSize` 事件来解释这些"重启"。

**follow-up（Message 4）**在收到明确提示后，agent 正确查出：
- 14:37:37 JST: `ModifyClusterSize started` (TiDB 34→33)
- 14:39:11 JST: `ModifyClusterSize succeeded`
- 14:50:30 JST: `ModifyClusterSize started` (TiDB 33→34)
- 14:53:36 JST: `ModifyClusterSize succeeded`（事故恢复）

## Root Cause Analysis

ISS-0039 修复的核心是"将 A5 Activity Hub 查询加入 collect_evidence.py"。数据是采集到了，
但 SKILL.md 中缺少明确的推理规则：**当诊断文本提到实例"重启"或组件数量变化时，必须引用
Activity Hub 事件来解释原因，而不是保留在"疑似相关"状态**。

当前 SKILL.md Node C/D 缺乏如下规则：
- 如果 metrics 中检测到实例 restart_count > 0 或 component_count 下降
  → 必须在结论中引用 Activity Hub 是否有对应的 Scale/Modify 事件
  → 若有：明确指出是计划内操作，说明对服务的影响（连接切断、重试）
  → 若无：标注"无人工操作记录，可能是自发故障"

## Fix Plan

### Step 1: 在 SKILL.md Node C/D 增加 Activity Hub 引用规则

找到 Node C（App-layer Triage）或 Node D（Component Deep-dive）中关于 component_health 或
实例重启分析的部分，增加：

```markdown
**Activity Hub 事件关联规则**（MANDATORY）：
- 若 component_health 显示实例 restart_count > 0，或 component_count 在事故窗口内下降
  → 必须查看 evidence_summary 中的 Activity Hub 事件（A5 段）
  → 找到对应时间窗口内的 ModifyClusterSize / ScaleResourcePool / RestartTiDB 事件
  → 在诊断结论中明确引用：是计划内 scale-in/out（连接切断 → 客户重试）还是自发故障

注意：scale-in 操作是"主动减少节点"，会立即终止该节点上的所有 TCP 连接，
导致连接池连接失效 → 客户报告"连接错误"/"请求重试"。这是最常见的"神秘断连"根因之一。
```

### Step 2: 验证

使用 TCID-12704 workspace 重跑诊断，验证无 follow-up 情况下 Agent 能自动：
1. 检测到 3 TiDB 实例"重启"
2. 引用 Activity Hub 中的 ModifyClusterSize 34→33 事件
3. 输出"scale-in 是客户断连和重试的直接原因"

### Step 3: 关联 ISS-0039

在 ISS-0039 修复提交中补充说明此扩展（或作为后续 PR）。
ISS-0039 的 collect_evidence.py 修复是正确的，问题在 SKILL.md 的推理规则中。

## Verification

- TCID-12704 regression 通过 expected.md rubric 第 3、4、5 项（Activity Hub + scale-in + recovery）
- 无需 human follow-up 即可触发

## Files to Modify

- `agentkit/skills/builtin/tidb-clinic-diagnosis/SKILL.md`
  - Node C 或 Node D 中添加 Activity Hub 事件关联规则
