# R2.2.5 任务报告

## 结果

- 已增强 `runtime errors` 的只读分析：默认 Kubernetes 风格表格披露运行实例实际 OpenAI response-header timeout、来源、通用 timeout 是否适用、各分组 TTFT/总耗时分位数、固定候选和跨组观测下限。
- 实际 timeout 按 Sub2API 的 config file、process env、内置默认值优先级解析，只输出目标字段和来源，不输出 Secret；PK01 当前为 process env `0`，即 OpenAI timeout 禁用，通用 600 秒不适用于 OpenAI。
- 使用原生 dashboard `ttft`，不再用总耗时冒充 TTFT；错误 `duration_ms` 无覆盖时显示 `-`，不把零误判为没有慢失败。
- all-groups 概要返回每组 TTFT P99/Duration P99，并按当前分页内最大 TTFT P99 加 15 秒、向上取整到 15 秒生成观测下限；该值只用于排除明显过低候选，不是下发建议。
- 已增强 `trace` 时间线：利用原生索引时间戳和最终 `latency_ms` 重建请求参考起点，显示首次 failover、选号失败、最终响应和 failover-to-final 的相对耗时；客户 deadline 不存在时明确显示不可用。

## 真实只读证据

- 24 小时 all-groups：25,334 请求、364 客户错误，客户错误率 1.44%，上游错误率 3.92%。
- group 2：TTFT P99 285,323ms、最大 857,722ms；30/45/60 秒均低于已成功请求 P99，跨组观测下限为 315 秒。
- group 3：TTFT P99 168,299ms、最大 1,558,296ms；其单组观测下限为 195 秒。
- request `cf6b6257-9640-414f-918d-c55180fb6a8d`：总耗时 41,599ms，约 41,598ms 后首次 failover，约 1ms 后 `context canceled` 并最终 502。
- request `4ee54daa-f41c-4f50-bd72-11080c38e299`：总耗时 730,835ms，约 730,834ms 后首次 failover，约 1ms 后 `context canceled` 并最终 502。
- 结论：当前穿透错误的直接时间线证据是首次上游等待占用了几乎全部请求生命周期，切号本身并不慢；客户 deadline 未被 Ops 记录，不能计算真正剩余预算。

## 验证

- `bun --check`：`runtime.ts`、`remote-python-sync.ts`、`render.ts`、`output.ts` 均通过。
- `git diff --check` 通过。
- `bun test scripts/src/output.test.ts`：2 pass，0 fail。
- `runtime.ts` 为 1954 行，保持在 2000 行以下。
- 已真实回归 24 小时 all-groups、group 2/group 3 详情及两条代表 request trace。

## 变更边界

本任务只修改 UniDesk CLI 和 skill 参考，没有修改 Sub2API 源码、owning YAML、PK01 环境变量、容器或运行面配置。
