# R1.5.9.1 任务报告

## 交付

- Issue：[pikasTech/unidesk#2060](https://github.com/pikasTech/unidesk/issues/2060)。
- PR：[pikasTech/unidesk#2066](https://github.com/pikasTech/unidesk/pull/2066)。
- 实现提交：`0a580644`、`9800ca5c`；分支已吸收运行面补正并基于最新目标基线推进。
- 关联运行面补正 [#2056](https://github.com/pikasTech/unidesk/pull/2056) 已进入 `master`，本修复覆盖 PostgreSQL、迁移 Job、API 和 Worker 的完整启动链。

## 结果

- `start --confirm` 只提交由 `target/instance` 唯一定位的远端任务并立即返回 `start-submitted`、`jobId`、namespace 和 `mutation=true`。
- 同一 `target/instance/commit` 重入只解释已有状态；实例改用其他 commit 返回 `start-instance-conflict`，不创建并行任务。
- `status` 用 YAML 声明的短 request timeout 返回运行中、成功、失败、取消和不存在状态，并包含阶段、时间、终态 code、exit code 与有限事件尾部。
- `taskState.statusRequestTimeoutSeconds` 与 `taskState.logTailLines` 只校验正安全整数，不再由代码硬编码 30/100 策略上限；fixture 以 31/101 验证 YAML 数值可直接渲染。
- namespace 或资源查询失败分别提升为顶层 `runtime-query-failed`、`runtime-resource-query-failed`，同时用 `taskCode` 保留启动任务状态；JSON 与默认文本输出均可见。
- `stop` 保持 namespace 精确归属检查，运行任务通过 `startTaskDisposition` 披露取消处置。
- 状态目录不保存 Secret、DSN、manifest 正文或命令 stderr；含 Secret 的 owner-only runner 启动后立即删除，临时 manifest 在终态清理。
- 配置、版本与 OTel 一致性仍是 `blocking=false` warning；apply、迁移、rollout 和运行面查询的实际失败保持失败终态。

## 验证

- `bun --check scripts/src/pikaoa-test-target.ts`：通过。
- `bun test scripts/src/pikaoa-test-target-async.test.ts`：2/2 通过。
- fixture 覆盖：不存在、运行中、成功、迁移失败、重复重入、stop 取消、namespace 查询失败、资源查询失败、默认文本可见和 Secret/DSN 不泄露。
- `bun scripts/cli.ts check --syntax-only`：11/11 通过。
- validation-only 原入口：`configured=true remoteQueried=false mutation=false`，未调用远端 capture。
- `git diff --check`：通过。

## 边界与剩余风险

- 未登记或猜测真实测试 target，未连接集群，未修改正式 CI/CD、生产配置或公网暴露。
- 当前没有获准的专用测试 target，因此没有真实 target-side 运行证据；首次 YAML target 登记和原入口验收继续由 #2058 负责。
- 运行中判断复用单一远端状态目录与 PID，没有新增租约、第二状态库或控制器。主机硬重启等极端中断由 `start-worker-missing` 显式暴露，不自动重放 mutation。
