# R12.1 任务报告

## 根因

- PK01 Sub2API 账号 #41 的原生 `created_at` 为 `2026-07-17T14:32:36.41159+08:00`，小数秒是 5 位。
- runtime 远端 Python 使用 `datetime.fromisoformat` 直接解析；目标 Python 对非 3/6 位小数秒返回失败，导致 #41 被计为创建时间未知并从 `--recent 2h` 严格结果中排除。
- 精确 `runtime get` 与全表仍能显示账号，因此原流程被迫增加全表和逐账号查询。

## 修复

- `parse_native_time` 在解析前把 ISO-8601 小数秒补齐或截断到 6 位，保持时区和原生 `created_at` 语义。
- 首次详情中 `created_at` 仍缺失且 `updated_at` 落窗时，精确重读一次；只有重读后的原生创建时间落窗才纳入，禁止用更新时间替代创建时间。
- recent 默认摘要新增 rechecked、recovered、updatedUnknownExcluded，并有界列出刚更新但创建时间仍不可解析的账号。
- Sub2API skill 同步最短路径与判定边界。

## 验证

- `bun scripts/cli.ts check --syntax-only`：11 项通过，0 项失败。
- `git diff --check`：通过。
- 从任务 worktree 执行只读 `runtime list --target PK01 --recent 2h`：一次返回 #41 与 #40，按创建时间倒序；`matched=2`、`unknownCreatedAt=0`、`rechecked=0`、`updatedUnknownExcluded=0`。
- 同一张表直接显示 #41 priority 8、#40 priority 2，两个账号均匹配 9 条 `codex-upstream-failover` 规则，不再需要全表与逐账号下钻。

## 边界

- 未修改 Sub2API 源码、版本、runtime、账号、YAML 或生产运行面；真实 smoke 仅执行原生只读查询。
