# R2.1 纯 Kafka Trace 序列权威修复报告

## 上下文

- 前端根因：
  - [HWLAB #2475](https://github.com/pikasTech/HWLAB/issues/2475#issuecomment-4935381417)
- 运行面证据：
  - [HWLAB #2477](https://github.com/pikasTech/HWLAB/issues/2477#issuecomment-4935385934)

## 完成结果

- 共享 Trace renderer 按 `runnerTrace.eventSource` 选择序列权威：
  - `hwlab-kafka-sse` 使用 `sourceSeq`；
  - `trace-api` 和其他 durable 路径继续只使用 `projectedSeq`。
- live Kafka 事件保持前端 ingress 数组顺序：
  - 不按 `sourceSeq` 重新排序；
  - 优先以 `sourceEventId` 去重；
  - 缺少该字段时使用 `runId + sourceSeq`；
  - 不伪造 `projectedSeq`。
- Trace 行显式携带 `sequenceAuthority`：
  - DOM 通用属性为 `data-event-seq` 与 `data-event-seq-authority`；
  - 只有 durable 行继续暴露 `data-projected-seq`。
- live Trace 合并保持：
  - source identity 去重；
  - terminal 事件不清空既有事件；
  - `eventCount` 等于已保存事件数。

## 验证

- production mapper 验证：
  - inner event 携带 `sourceSeq`；
  - inner event 不产生 `projectedSeq`。
- renderer 与状态验证：
  - source-only assistant、tool 和 terminal 能生成可读行；
  - 行顺序与 ingress 顺序一致；
  - durable Trace 缺少 `projectedSeq` 时仍拒绝渲染；
  - 重复 `sourceEventId` 不产生重复行。
- 定向测试结果：
  - Bun 后端、renderer、merge 和 SSE API：`50 pass`；
  - TraceTimeline 与调试面板组件：`4 pass`；
  - v03 GitOps render 目标用例：`1 pass`。

## 边界

- 未启用或调用 projector、read model、snapshot、sync、recovery replay、gap-fill 或 polling。
- 未部署运行面。
- 未修改父 issue [HWLAB #2474](https://github.com/pikasTech/HWLAB/issues/2474)。
