# R1.6 任务报告

## 结论

- 完成 HWLAB #2586 的 P5 同源 API/read model 对齐。
- PR #2590 已 guarded merge 到 `v0.3`。
- Cloud API 统一投影以下事实：
  - CaseRun 持久 record；
  - 已归档 evidence/run。
- Web API、store、types 与面板只消费统一 read model：
  - 不再按 completed 状态二次请求 aggregate；
  - 不在客户端择值 terminal、blocker、job、artifact 与 refs。

## 数据流与边界

- `POST /v1/caserun/runs` 保持短 202：
  - 只返回 run identity、status 与 status URL。
- `GET /v1/caserun/runs/:runId` 同形投影：
  - queued、running、completed、failed；
  - status、stage、terminal 与 typed blocker；
  - job/artifact facts；
  - events、aggregate、manifest、replay、trace 与 HWPOD refs。
- events/aggregate 详情携带相同 run/case identity 与 source authority。
- 未修改 `tools/src/hwlab-caserun-*`。
- 未从以下来源合成执行事实：
  - stdout；
  - Agent final；
  - trace 正文；
  - 本地 registry。
- 未新增 database、独立 projector service 或 authority。

## 交付证据

- Issue：<https://github.com/pikasTech/HWLAB/issues/2586>，已关闭。
- PR：<https://github.com/pikasTech/HWLAB/pull/2590>。
- 实现提交：`4da075404f6b0afceac9db924a819bf15e50ed7c`。
- merge commit：`de43ed550801ede29cacc52138cba9fe7d8e51a1`。
- Artificer 主任务：
  - run：`run_723de970c3244337842120d03d84dd1c`；
  - 终态：completed/authoritative。
- Artificer post-task：
  - run：`run_aa6241ef9aff4a098d982556aec2dddb`；
  - 结论：无需新增 issue 或代码/文档改动。

## 验证

- `bun test internal/cloud/server-caserun-http.test.ts`：
  - 合并前 3/3 通过；
  - 合并后语义 smoke 3/3 通过。
- Web production build：
  - 通过；
  - 2164 modules transformed。
- `git diff --check`：通过。
- changed-file 边界：
  - Cloud API focused server/test；
  - Web CaseRun API/store/types/panel；
  - 合计 6 个文件。
- source-shape 负向检索未发现：
  - `caserunAPI.aggregate`；
  - `aggregate.value`；
  - `currentRun?.summary`；
  - Web `runtimeApiUrl` 客户端 fallback。

## 残余边界

- 受控 `web-probe` preflight 被 NC01/v03 `web_login_secret_missing` 阻塞：
  - 浏览器未启动；
  - 未绕过认证；
  - 未直接调用 Playwright。
- 全量 `web:check` 存在未修改文件的既有 nullable 类型错误：
  - 文件：`agent-observer.ts:272-275`；
  - 不属于本任务范围。
- NC01/v03 是 PaC source authority：
  - 固定 `/root/hwlab-v03` 未人工 pull/sync；
  - 真实公网原入口验收留给 R1.7/P6。
- `rollout=not-applicable`。
