# R6.1 阶段报告

## 结论

Artificer 易用派单入口已在两个独立分支完成实现、本地验证、提交和 PR 创建，尚未合并、发布或执行真实 R6.3 canary，因此 R6.1 保持进行中。

## 根因

- 旧派单把目标私有仓库误当成 runner primary resource bundle：
  - 初始 `workspaceRef` 携带了不合法的 repo/branch 字段，服务端以 `schema-invalid` 拒绝；
  - 修正 schema 后，runner 又尝试直接拉取私有 `pikainc/selfmedia` bundle，并以 `repo-not-found` 失败。
- 旧流程把创建、派发、Target 工作区校验拆散，调用者需要手写 schema 或补第二条 dispatch 命令。
- runner primary workspace 与真正任务 Target 没有形成可验证的执行边界。

## 已实现设计

- UniDesk YAML 统一声明 `client.transport=target-trans`、marker、CLI 相对路径和 Target 上的 UniDesk 工作区。
- 外层命令经 `trans <Target>:<unideskWorkspace>` 重入 Target，再完成预检、创建、自动派发和观察。
- Artificer 任务继续继承默认 UniDesk bundle；目标源码不再作为 runner primary bundle。
- 目标源码的探测、Git、编辑、验证和运行面观察固定使用 `trans <Target>:<targetWorkspace>`。
- `targetWorkspace` 必须是任务专属 clean worktree；preflight 校验 origin、branch、HEAD 与远端 ref commit。
- preflight 失败返回 `mutation=false` 且不创建 task；成功时披露合法 workspaceRef、bundle、session、SecretRef presence 和源码身份。
- live submit 后自动 dispatch；稳定 idempotency key 和并发回读防止重试重复派发。
- `unidesk-subagent` 固化原生子代理与 Artificer 均先登记 MDTODO，prompt 与报告回链同一 MDTODO ID。
- AgentRun Artificer AipodSpec 强制 required skill `unidesk-trans`、runner tools bundle 和 `unidesk-ssh` SecretRef。

## 提交与 PR

- AgentRun：
  - 分支：`fix/artificer-source-override`；
  - 提交：`3d1d8a8a4a41d17053d8c1c0ad3d541272355846`；
  - PR：[pikasTech/agentrun#349](https://github.com/pikasTech/agentrun/pull/349)。
- UniDesk：
  - 分支：`fix/artificer-target-dispatch-ux`；
  - 提交：`43124d01e8977f1b12878a852e223b5deb02a20b`；
  - PR：[pikasTech/unidesk#1911](https://github.com/pikasTech/unidesk/pull/1911)。

## 验证

- UniDesk：
  - `bun test scripts/src/agentrun.test.ts`：20 tests、397 assertions 通过；
  - `bun scripts/cli.ts agentrun create --help`：单命令 Target 参数展示正确；
  - `git diff --check`：通过。
- AgentRun：
  - `bun run src/selftest/run.ts 81-artificer-nonrecursive-prompt 90-runner-image-tools`：11 assertions 通过；
  - `git diff --check`：通过。

## 后续验收

- 先审查并合并 AgentRun PR，使 owning AipodSpec 进入受控运行面。
- 再审查并合并 UniDesk PR，使 Target 派单入口进入主线。
- 从最新 `feat/r6-ocr-visual-planner` 创建并推送 `/root/.worktrees/selfmedia/r6-ocr-visual-planner`。
- 先用同一 R6.3 命令执行 dry-run，再执行 live；确认只创建一个 task/attempt 且自动生成 run/session。
- 从 runner 证据确认实际通过 `trans NC01:/root/.worktrees/selfmedia/r6-ocr-visual-planner` 完成读取、编辑、验证和 Git 操作。
