# HATT / delivcoal 消融方法原理、数据流与正负结果评估

> 更新时间：2026-08-07  
> 范围：`v0.12` 以来与 delivcoal 直接相关的 HATT、探索、Idle、特殊动作和动态重组实验。  
> 结论口径：优先采用 full-random、独立测试 seed、每 checkpoint 128 episodes、至少 3 个训练 seed 的结果。早期 nearest 探索或单 seed 实验只作为定位线索，不与当前 sector+coverage 主结果直接横比。

## 1. 执行摘要

当前最有证据支持的 delivcoal 方法是：

```text
HATT v2.0
  + agent-relative sector exploration
  + searched-area coverage features
  + uniform Idle time cost
  + event reconfiguration
```

当前裁决：

| 消融方向 | 当前判断 | 是否进入主线 |
| --- | --- | ---: |
| HATT 结构化实体与任务解码 | 相对标准 MAPPO 有巨大优势，但需补参数量匹配 MLP | 是 |
| coverage 探索状态 | 当前最强、跨 seed 可复现的正向组件 | 是 |
| event 重组 | 比 learned off-event opening 更稳、更少切换 | 是 |
| uniform Idle time cost | 避免人为把 Idle 设成特殊惩罚项 | 是 |
| detached 特殊动作联盟表示 | nearest 旧配置曾改善；sector 配置明确有害 | 否 |
| learned / hierarchical gate | 建模语义正确，但额外 learned opening 有害 | 否，保留为消融 |
| recurrence | 没有替代 coverage，也未形成稳定额外收益 | 否 |
| finite Idle timeout | 只限制单次等待，不能修复反复选择 Idle | 否 |
| No-Idle | 诊断上有效，但删除动作不是最终语义方案 | 诊断对照 |
| resource / set-context decoder | nearest 单 seed 中有高分，缺少当前协议复现 | 未冻结 |
| reserve Idle | 当前环境没有支持其稳定物理收益 | 否 |

最新统一协议下的核心结果：

| 方法 | best success | p90 success | last success | best TCR |
| --- | ---: | ---: | ---: | ---: |
| HATT plain + event | 37.5% | 25.3% | 22.4% | 86.7% |
| HATT detached + event | 8.6% | 7.6% | 7.6% | 65.1% |
| HATT coverage + event | **69.8%** | **64.6%** | **62.0%** | **96.2%** |
| HATT detached+coverage + event | 60.2% | 60.2% | 60.9% | 94.3% |
| 标准 MAPPO coverage + event | 14.6% | 1.8% | 3.7% | 71.7% |

## 2. 共同环境与基础数据流

### 2.1 环境决策层

每个智能体不直接输出连续运动控制，而是选择一个高层任务槽：

```text
Deliver task slots
Explore control slots
Idle control slot
Resupply control slot
```

环境根据任务选择执行路径规划、探索、配送、补给、死亡和任务完成逻辑。联盟由“当前选择同一 Deliver 任务的智能体集合”隐式形成。

### 2.2 HATT actor 数据流

```text
结构化局部观测
  ├─ ego    → self encoder
  ├─ others → other encoder → agent-agent relation attention
  └─ tasks  → task encoder
                         ↓
          按当前 task id 聚合 coalition
          sum / mean / member count
                         ↓
       agent context × candidate task context
                         ↓
      shared agent-task decoder + action mask
                         ↓
               categorical task action
```

HATT 的关键归纳偏置是：自身、队友和任务保持独立实体维；所有任务槽共享候选边评分器；任务分数显式依赖当前联盟上下文。

### 2.3 标准 MAPPO actor 数据流

```text
ego / others / tasks / coverage
              ↓ flatten
         fixed-position vector
              ↓ MLP
      logits for every task slot
```

MAPPO 能使用相同原始观测，但不显式保留实体集合、任务槽参数共享或联盟聚合结构。

### 2.4 共同训练路径

```text
actor action
   ↓
environment transition
   ↓
reward / done / active mask / available actions
   ↓
on-policy rollout buffer
   ↓
centralized critic + GAE
   ↓
PPO clipped update
```

因此，多数 actor 消融只改变策略表示或动作决策时机，不改变 critic、奖励和 PPO 主体。

## 3. HATT 与标准 MAPPO

### 原理

- MAPPO：将观测展平，用普通 MLP 学习任务槽之间的关系。
- HATT：分别编码 agent/task，通过关系注意力和任务联盟聚合后共享解码。

### 当前严格匹配结果

两者统一使用 sector、coverage、uniform Idle cost、event 重组、1500 episodes、32-episode validation 和独立 128-episode test。

| checkpoint | HATT success | MAPPO success | HATT TCR | MAPPO TCR |
| --- | ---: | ---: | ---: | ---: |
| best | **69.8%** | 14.6% | **96.2%** | 71.7% |
| p90 | **64.6%** | 1.8% | **95.4%** | 52.7% |
| last | **62.0%** | 3.7% | **95.1%** | 58.8% |

同一测试场景的 best 配对中，三个训练 seed 分别出现 81/74/70 个“仅 HATT 成功”的场景，而“仅 MAPPO 成功”只有 3/7/3 个。last 配对为 73/75/78 对 0/2/0。

### 正向结论

- 优势同时出现在 best、p90 和 last，不依赖挑选峰值。
- HATT 发现率约 97%，MAPPO best 约 72%。
- HATT best 平均死亡数约 0.02，MAPPO 约 0.69。
- HATT 联盟变化也更少：约 4.17 对 5.58 次/100 alive steps。

### 边界与待补消融

- HATT actor 约 262k 参数，标准 MAPPO actor 约 27k；HATT actor 大约 9.6 倍。
- HATT actor+critic 约 291k，MAPPO约 56k。
- 因此当前已经证明“现有完整 HATT 方法优于标准 MAPPO”，但尚需 `hidden_size≈204` 的总参数量匹配 MAPPO 排除纯容量解释。
- 还应做 Deliver task-slot permutation，直接检验 HATT 的任务集合等变性。

### 当前裁决

保留 HATT 为主线；标准 MAPPO 是必要基线；参数量匹配 MAPPO 是下一项最高优先级消融。

## 4. Decoder 信息路径消融

### 变体与数据流

| 变体 | 新增路径 | 目标 |
| --- | --- | --- |
| `raw` | raw task row → decoder | 防止 task encoder 丢失原始量纲信息 |
| `physics` | 距离、载荷、需求等物理量 → decoder | 显式提供运输可行性 |
| `taskattn` | agent-conditioned task attention → decoder | 增强任务集合比较 |
| `resource` | 资源阶段/缺口信息 → decoder | 表达剩余载荷与任务需求关系 |
| `setctx` | available task mean/max → decoder | 提供候选集合上下文 |

共同形式为：

```text
HATT agent/task context
       + optional raw/physics/resource/set features
                         ↓ concat/fusion
                    task decoder
```

### 历史结果

早期 nearest、单训练 seed 测试中：

| 变体 | best success | last success |
| --- | ---: | ---: |
| base info-a | 31.2% | 12.5% |
| raw | 31.2% | 6.2% |
| physics | 53.1% | 6.2% |
| taskattn | 40.6% | 15.6% |
| resource | 90.6% | 78.1% |
| setctx | 84.4% | 71.9% |
| setctx-stable | 84.4% | 78.1% |

### 正向结果

- physics、resource 和 setctx 说明 decoder 确实受益于运输资源与候选集合信息。
- resource/setctx 在当时协议下不仅提高 best，也提高 last，提供了“信息瓶颈存在”的线索。

### 负向结果与边界

- raw 并没有稳定改善，说明简单拼接更多输入不是解法。
- 这些高分来自 nearest 探索和单 seed，nearest 带有“直接朝最近未知任务移动”的强先验。
- 后续真实 sector 探索暴露出更主要的 coverage 状态缺失，因此不能把 resource/setctx 的旧高分直接当作当前最终组件。
- 多条 decoder 信息路径没有单独解释 Idle、自维持和后期退化。

### 当前裁决

作为历史定位证据保留；在 coverage 主线稳定前不继续扩展 decoder 输入。若未来恢复，应在 sector+coverage+event 的统一协议下重新做最小对照。

## 5. Idle 语义消融

### 5.1 Finite Idle timeout

#### 原理与数据流

```text
actor selects Idle
       ↓
environment holds agent
       ↓ after K=25 steps
force active mask → actor redecides
```

它只改变环境何时重新请求动作，不改变 actor 的 Idle logit。

#### 历史结果

Idle-25 批次中：

| 方法 | best success | p90 | last | harmful idle(best) |
| --- | ---: | ---: | ---: | ---: |
| HATT Idle-25 | 77.1% | 32.8% | 34.6% | 5.17% |
| HATT No-Idle | 87.8% | — | — | 0% |
| MAPPO Idle-25 | 90.4% | 89.6% | 89.8% | 0.01% |

HATT p90/last 会在 timeout 唤醒后再次选择 Idle；best 与 last 的成功率差约 42.5 个百分点。

#### 裁决

负向。timeout 是环境替策略提供退出机会，不能修复策略语义，不进入最终方法。

### 5.2 No-Idle

#### 原理

在 available-action mask 中永久屏蔽 Idle，其他动作和网络不变。

#### 正向结果

- 同场景配对中 No-Idle 比 Idle-25 高约 10.7 个百分点。
- 证明当前策略没有稳定利用 Idle，Idle 在当时主要是有害自由度。

#### 负向边界

- 删除 Idle 不能回答“何时合理等待”。
- 它可能掩盖补给、任务未发现或未来任务到达时真实需要的待命行为。

#### 裁决

保留为诊断上界，不作为最终环境定义。

### 5.3 Uniform Idle time cost

#### 原理

旧 shaped reward 对不同动作类型施加不同时间成本。uniform 模式让 Idle 与其他宏动作承担相同每步时间成本：

```text
old: action type → different step cost
new: every alive step → same time cost
```

#### 结果

- 去掉 Idle 的额外惩罚后，HATT best 曾明显改善。
- 但控制状态诊断表明改善不是因为模型学会合理 reserve。

#### 裁决

保留。它减少奖励人为偏置，但不把 Idle 本身定义成目标。

### 5.4 Idle coalition context 干预

#### 原理

原 HATT 会把 Idle 当作普通任务槽，并把所有 Idle 智能体聚合成一个“Idle 联盟”。固定状态干预分别清空：

- Idle coalition sum/mean/count；
- Idle assigned bit；
- 或扫描 0–11 个 Idle 成员。

#### 正向因果证据

- reset 状态清空 Idle coalition 后，9/9 checkpoint 的 Idle margin 都下降。
- p90/last 对大 Idle 联盟形成一致正响应；0→11成员时 last 的 Idle 概率平均增加约 0.234。
- assigned bit 单独变化小于 0.01，不是主因。

#### 边界

- 清空局部上下文不能让所有坏 checkpoint 翻转为非 Idle。
- 不同训练 seed 的后期 Idle 漂移方向存在异质性。
- 因而“Idle 联盟污染”是真实局部缺陷，但不是全部失败原因。

## 6. 特殊动作表示消融

### 6.1 Detached special-action representation

#### 原理与数据流

Deliver 保留联盟语义；Explore、Idle、Resupply 被视为控制状态：

```text
Deliver slot:
  task encoding + assigned relation + coalition sum/mean/count

Special slot:
  task/control encoding
  assigned relation = 0
  coalition aggregation = 0
```

decoder 仍然共享，detached 只移除特殊动作的虚假联盟关系。

#### 早期正向结果

在 nearest、无 timeout 的旧配置中：

| 方法 | best | p90 | last |
| --- | ---: | ---: | ---: |
| plain HATT | 30.0% | 14.6% | 28.9% |
| detached HATT | **87.2%** | 12.0% | 12.0% |
| MAPPO | 91.1% | 91.1% | 91.7% |

detached best 的大幅提升支持了“特殊动作污染联盟表示”的局部假设。

#### 当前负向结果

在 sector+event 三 seed统一配置中：

| 对照 | best success | last success | 联盟变化/100步(best) |
| --- | ---: | ---: | ---: |
| plain | 37.5% | 22.4% | 3.64 |
| detached | 8.6% | 7.6% | 6.72 |
| coverage | 69.8% | 62.0% | 4.17 |
| detached+coverage | 60.2% | 60.9% | 5.20 |

detached 单独严重退化；与 coverage 组合也低于 coverage，并增加切换。

#### 解释

- nearest 只有一个强先验 Explore 槽；sector 有 8 个方向性 Explore 候选。
- 移除特殊槽关系后，网络可能更难维持方向性控制动作的一致状态，产生频繁重选。
- 早期收益不是跨动作语义可迁移的稳定结构优势。

#### 裁决

不进入当前主线。作为“配置依赖的表示干预”记录，不再把早期 best 高分当作普适证据。

### 6.2 Split special-action head

#### 原理

Deliver 使用共享 HATT task decoder；Explore/Idle/Resupply 由独立 control head 打分，再合并 logits。

```text
Deliver contexts → shared task decoder ┐
agent + deliver set summary → control head ├→ merged logits
availability mask                       ┘
```

#### 结果与裁决

该方向增强了动作类型分离，但没有形成跨 seed、跨 checkpoint 的稳定最终优势。它还牺牲了“所有候选槽共享评分器”的简洁性。当前不进入主线。

### 6.3 Type embedding / type gate

#### 原理

- type embedding：为 Explore/Deliver/Idle/Resupply 加可学习类型向量。
- type gate：用任务类型控制共享表示的融合强度。

#### 三 seed结果

| 方法 | best success均值 | last success均值 |
| --- | ---: | ---: |
| type embedding | 19.8% | 14.8% |
| type gate | 20.8% | 17.4% |

#### 裁决

负向。仅告诉网络“类型不同”不足以修复探索状态、Idle动力学或联盟重组问题。

## 7. 探索机制消融

### 7.1 Nearest exploration

#### 原理

Explore 动作直接把智能体引向最近的未发现任务。

#### 正向与负向

- 训练容易、发现率高，适合早期排查配送和联盟逻辑。
- 但它向策略泄露了未知任务位置，是过强 oracle，不能作为真实探索结论。

#### 裁决

仅作诊断环境，不作为当前正式主线。

### 7.2 Sector exploration

#### 原理与数据流

每个 agent 看到从自身当前位置出发的多个方向候选：

```text
agent position + sector angle + map boundary
                    ↓
          agent-relative waypoint
                    ↓
       environment movement / search
```

配套语义修复：

- 到达 waypoint 后重新决策；
- 新任务发现时打断旧探索动作；
- 屏蔽边界处无有效移动距离的方向。

#### 结果

消除了“走到目标后仍保持无意义探索”和边界短腿问题，但仅有 sector 几何仍不足以避免重复搜索。

### 7.3 Coverage features

#### 原理与数据流

环境维护搜索覆盖网格，并为每个 agent-sector 候选计算：

- 沿候选路径可以新增覆盖的面积；
- 路径实际长度；
- 全局未覆盖比例。

```text
searched-area grid + agent-relative candidate path
                         ↓
new coverage / path length / global uncovered ratio
                         ↓
              corresponding Explore task row
                         ↓
                 HATT candidate decoder
```

coverage 是 observer-relative，因此不能把所有 agent 的 task rows 编码一次后广播；`hatt_shared_task_obs` 必须关闭。

#### 当前三 seed结果

| 指标 | plain | coverage | 改变 |
| --- | ---: | ---: | ---: |
| best success | 37.5% | **69.8%** | +32.3 pp |
| last success | 22.4% | **62.0%** | +39.6 pp |
| best TCR | 86.7% | **96.2%** | +9.5 pp |
| last TCR | 78.4% | **95.1%** | +16.7 pp |
| best discovered ratio | 87.7% | **97.3%** | +9.6 pp |
| best dead agents | 0.268 | **0.021** | -0.247 |

三个 seed 的 coverage best success 为 71.1%、78.1%、60.2%；last 为 57.8%、66.4%、61.7%。

#### 裁决

强正向，进入主线。它是当前最稳定、最可解释的实质性能来源。

### 7.4 Recurrence

#### 原理

在 agent representation 后加入 RNN，用隐状态记忆历史搜索与动作序列。

#### 结果

- recurrence 单独没有复现 coverage 的提升。
- coverage+RNN 没有形成比 feed-forward coverage 更清晰的稳定优势。

#### 解释与裁决

缺失的是“哪些区域已经搜索过”的显式任务状态，而不只是一般时间记忆。coverage 比 RNN 更直接、更可审计。当前不进入主线。

### 7.5 All-visible / delivery-only 诊断

#### 原理

- all-visible：reset 时所有 Deliver 任务直接可见。
- delivery-only：保持动作维度但屏蔽 Explore。

#### 作用

这两项不作为最终任务，而用于拆分：

```text
发现失败？
还是发现后配送/补给失败？
```

#### 裁决

保留为诊断协议。结果证明探索和配送不能只看总 success 混合判断。

## 8. Reserve Idle 消融

### 原理

构造第二批任务延迟出现的控制场景，对比：

- 多余 agent 加入当前任务；
- 原地待命，等待未来任务；
- 改变待命位置；
- 加入短期服务承诺；
- 调整卸货方式。

### 正向发现

- reserve 可能减少总移动距离。
- 当未来任务到达过程、等待位置、能耗和服务承诺明确时，reserve 可能有机制价值。

### 负向发现

- 原地等待没有稳定缩短总完成时间。
- HATT 没有稳定学会保留空闲运力。
- 按比例卸货或重新分配没有自动产生 reserve 收益。
- 当前环境缺乏使长期 reserve 成为自然最优策略的约束。

### 裁决

不把长期 Idle 作为当前显式目标。若未来研究 reserve，必须先定义任务到达过程、等待位置、能耗预算和服务承诺。

## 9. 动态联盟重组消融

### 9.1 重组模式

| 模式 | 决策时机 | 数据流 |
| --- | --- | --- |
| legacy | 历史 active-mask 逻辑 | env trigger → actor |
| always | 每次机会都重选 | every opportunity → actor |
| periodic | 固定间隔重选 | elapsed interval → actor |
| event | 新任务/任务完成/当前任务失效等事件 | event flags → actor |
| urgency | 紧迫度超过阈值 | urgency aggregate → actor |
| learned | 网络决定保持或重选 | context → gate → decoder |

### 9.2 Always / periodic / urgency

#### 结果

- always 容易频繁重选、待命增加和探索不足。
- periodic 引入固定时间尺度，但不能适应任务事件。
- urgency 只覆盖任务压力，不能完整表达当前任务失效、全队停住或发现事件。

#### 裁决

不进入主线。

### 9.3 Event

#### 原理

环境只在有意义事件时激活 agent 重新选择：

```text
new task discovered
task completed
current task invalid/completed
mandatory recovery state
              ↓
       actor redecision
```

#### 结果

event 是当前最稳的简单重组基线。它避免 always 的频繁扰动，又不会像 closed 那样永久保持初始控制动作。

#### 裁决

进入主线。

### 9.4 Learned mixture gate

#### 原理

用连续 gate 在“保持当前动作分布”和“重新解码分布”之间混合。

#### 问题

gate 与最终离散动作没有形成清晰的独立 PPO 动作；解释性弱，容易出现概率饱和。只增加事件 context 后仍未稳定提高成功率。

### 9.5 Switch gate

#### 原理

gate 直接表示“离开当前任务”的概率。

#### 问题

“重新考虑”被错误等价为“必须离开当前任务”。即使重新决策，当前任务仍可能是最优动作，因此 switch 语义过强。

#### 裁决

作为失败的建模消融保留。

### 9.6 Hierarchical gate

#### 原理与 PPO 数据流

```text
active decision opportunity
          ↓
Bernoulli gate z ~ p(z|state)
   ├─ z=0: retain current task
   └─ z=1: task decoder samples a

joint log probability:
log p(z|s) + z · log p(a|s,z=1)
```

rollout buffer 同时保存 task action 和 gate action；PPO update 使用保存的 gate action 重算 joint log-prob，避免更新时重新采样 gate 导致 ratio 错位。mandatory event 可以强制 `z=1`。

#### 正向结果

- 语义正确、可解释，并与 PPO replay 对齐。
- 没有早期 mixture/switch 的动作语义混乱。
- cost0.05 下，非事件状态能学会关闭大量普通决策机会。

#### 三 seed性能

cost0.05 best success 为 28.1%、25.0%、17.2%，均值 23.4%；last均值18.0%。没有稳定超过 event。

### 9.7 Gate override 因果干预

对同一 hierarchical checkpoint、同一测试场景，仅改变 gate override：

| best干预 | success | TCR | 联盟变化/100步 |
| --- | ---: | ---: | ---: |
| event-only | **23.2%** | **82.0%** | **3.20** |
| event-or-learned | 18.5% | 80.9% | 3.66 |
| force-open | 19.8% | 80.1% | 4.04 |
| force-closed | 0% | 0% | 0 |

event-only 在三个 seed 上都优于 event-or-learned。说明当前 learned gate 在事件外增加的开启总体有害。

#### 指标修正

旧 `gate_learned_open_rate` 只排除了 context[10] mandatory，没有排除 event override 使用的 context[0/1/3]，导致 event-only 仍显示约13%的“learned”开启。代码已改为完整 event-trigger 口径，并新增：

- `gate_event_trigger_open_rate`；
- `gate_off_trigger_open_rate`；
- `coalition_changes_per_gate_open`。

#### 当前裁决

- event 进入主线。
- hierarchical gate 保留为方法学正确但性能负向的消融。
- 暂停继续搜索 decision cost；若重启研究，应学习“相对 event 基线的反事实重组优势”，而不是继续依赖稀疏终局回报。

## 10. Checkpoint 与训练稳定性消融

### 问题

早期训练期评估只使用8个 episodes。成功率约20%时，其二项标准误约14个百分点，而且 success 只能以12.5个百分点跳动，`actor_eval_best` 很容易选中偶然高点。

### 修改

- validation 从8 episodes提高到32；
- validation seed固定为10000；
- final test使用独立seed 50000；
- 保存 last、validation best 和 p90 checkpoint；
- final test每 checkpoint 128 episodes。

### 结果

- HATT coverage：best 69.8%、p90 64.6%、last 62.0%，三个口径均强。
- MAPPO coverage：best 14.6%、p90 1.8%、last 3.7%；best虽然能捕捉短暂峰值，但没有改变总体落后结论。

### 裁决

以后不能只报告 best。至少报告训练 seed均值/SD以及 best、p90、last；正式最终比较使用独立 test seed。

## 11. 当前推荐方法的数据流

```text
Env searched-area grid
        + agent-relative sector geometry
                      ↓
          per-agent Explore task rows
                      ↓
ego / others / tasks / action availability
                      ↓
       HATT typed entity encoders
                      ↓
 agent-agent attention + Deliver coalition aggregation
                      ↓
       shared agent-task candidate decoder
                      ↓
          event-triggered task decision
                      ↓
  environment movement / discovery / delivery / resupply
                      ↓
      centralized critic + PPO/GAE update
```

固定组件：

- `graph_model: hatt_v2_0`
- `explore_action_mode: sector`
- `explore_coverage_features: true`
- `hatt_shared_task_obs: false`
- `idle_time_cost_mode: uniform`
- `reconfiguration_mode: event`

排除组件：

- detached；
- learned gate；
- recurrence；
- finite Idle timeout；
-长期 reserve Idle。

## 12. 证据强度分层

### A级：当前可冻结

- coverage 对 plain 的三 seed统一协议优势。
- HATT coverage 对标准 MAPPO coverage 的三 seed同配置优势。
- event-only 对 event-or-learned 的同 checkpoint 因果优势。
- detached 在 sector/event 下无增益且增加切换。

### B级：机制定位成立，但不是最终方法

- 大 Idle coalition 会提高后期 Idle margin。
- No-Idle 优于 Idle-25，说明旧策略没有合理使用 Idle。
- timeout 不能阻止反复 Idle。
- all-visible/delivery-only 能拆分探索与配送失败。

### C级：需要当前协议复现

- resource/setctx 的 nearest 单 seed高分。
- detached 在 nearest 环境中的高 best。
- type/split head 的动作类型建模收益。
- reserve 在更明确物理机制下的潜在价值。

## 13. 下一步实验

1. **参数量匹配 MAPPO**：`hidden_size≈204`，总参数量与 HATT 接近，seed 1–3。
2. **任务槽置换**：复用当前 HATT/MAPPO best与last，置换 Deliver slots，检验任务集合等变性。
3. **扩展 seed 4/5**：在参数量对照完成后，为 HATT coverage/event 与最强 MAPPO 补五 seed统计。
4. **capcoal**：用统一 checkpoint 和独立 test 协议确认能力匹配优势。
5. **MRTA**：先诊断观测、动作和任务槽语义，再决定是否训练新结构；不直接照搬 delivcoal coverage。
6. **暂不新增围捕/攻击环境**：先完成已有环境和参数量/置换证据链。

## 14. 主要实验产物索引

以下均可通过训练进度页按 run 名定位：

- `20260805-1630_delivcoal_hatt-v20-detached-coverage-event-factorial`
- `20260805-1630_delivcoal_hatt-v20-hier-gate-causal-s1`
- `20260805-1630_delivcoal_hatt-v20-hier-gate-causal-s2-s3`
- `20260807-0132_delivcoal_mappo-coverage-event-matched`
- `20260729-1311_delivcoal_hatt-sector-coverage-recurrent-delivcoal`
- `20260725-2214_delivcoal_hatt-v20-detached-causal-delivcoal`
- `20260723-1617_delivcoal_idle-semantics-delivcoal`
- `20260721-2358_delivcoal_hatt-v20-information-path-delivcoal`
- `20260722-1102_delivcoal_hatt-v20-resource-setctx-fix-delivcoal`
- `20260726-1725_delivcoal_hatt-v20-type-conditioned-delivcoal`

## 15. 最终结论

当前证据不支持“把所有曾经有效的改动叠加起来”。不同组件存在明显配置依赖：detached 在 nearest 中提高 best，却在 sector 中严重退化；learned gate 的结构更干净，却没有产生有效的额外重组；RNN 增加记忆，却不如显式 coverage 状态。

真正跨 seed、跨 checkpoint 稳定成立的是：**用 HATT 保留 agent-task 关系结构，用 coverage 补足探索状态，用 event 限制重组时机。** 下一阶段应围绕参数量匹配和任务槽置换证明这一优势来自结构归纳偏置，再扩展到更多 seed 和其他既有环境。
