# R13 任务报告

## 结论

AgentRun worktree 门禁的源码修复已在 PR #2313 合并，但正式资源命令仍通过 `config/agentrun.yaml#client.targetExecution` 在 NC01 `/root/unidesk` 完整重跑旧 UniDesk CLI。该固定 worktree 停在 `1bdc8b3a913e8ce1d0d47e3037fa99b2f664d378`，相对 `origin/master` 为 `ahead 3, behind 22`，且仍包含“Target 固定工作区存在未提交修改”旧逻辑，因此造成交付漂移。

本任务通过 PR [#2334](https://github.com/pikasTech/unidesk/pull/2334) 删除远端旧 CLI 重入。当前 CLI 直接复用既有 Target `lane-k8s-service-proxy` 请求 manager；Artificer target task 只通过 `trans <Target>:<targetWorkspace>` 执行 `pwd -P`，保留显式绝对路径和目录存在性校验，不读取 dirty、ahead/behind、branch、HEAD、origin、remote ref 或 diff。

## 提交

- `ba3b75d1`：登记 R13 MDTODO。
- `376c5d9e12544821e0430285d6bf1cd105ea5700`：移除 AgentRun 远端旧 CLI 重入并更新 YAML、skill、长期参考和测试。
- 分支：`fix/agentrun-remove-worktree-gate-rollout`。
- PR：[pikasTech/unidesk#2334](https://github.com/pikasTech/unidesk/pull/2334)，base=`master`，未合并。

## 验证

- 依赖：按 `bun.lock` 执行 `bun install --frozen-lockfile`，补齐已声明的 `postgres` 等依赖。
- 定向测试：`bun test --timeout 15000 scripts/src/agentrun.test.ts`，27 通过、0 失败、493 个断言。
- 静态检查：`git diff --check` 通过；目标探测源码只包含 `pwd -P`，不包含 Git 调用或 `cliPath`。
- dry-run：对 NC01 已知 dirty/ahead/behind 的 `/root/unidesk` 执行 Artificer `create task --dry-run -o json` 成功，返回 `mutation=false`、`transport=lane-k8s-service-proxy`、node=`NC01`、lane=`nc01-v02`、namespace=`agentrun-v02`、`gitStateInspected=false`。

## 真实 canary

- Target worktree：`/root/.worktrees/unidesk-agentrun-remove-worktree-gate-rollout`。
- source commit：`376c5d9e12544821e0430285d6bf1cd105ea5700`。
- 已知脏状态：未跟踪 `.agentrun-r13-dirty-canary`。
- 标题：`验收 AgentRun 脏工作区不阻断派单`。
- task：`qt_2e98504adf794a5dad5bd0bdf187a574`。
- attempt：`attempt_mrng17eo`。
- run：`run_46e680be0b8c41818973db505d27dbc6`。
- command：`cmd_042df55511564cc8b8873fac3befa04b`。
- runner job：`rjob_f0bd7c4d8329471fb54a94367025414e`，Kubernetes Job `agentrun-nc01-v02-runner-53862324c544`。
- session：`sess_artificer_174c92a134b0e836669a68ee`。
- 结果：create 成功、auto-dispatch=`dispatched`、runner Job 已创建、run 已 claim，未出现 dirty worktree 拒绝。
- 后续终态：runner 在 resource-bundle 阶段因 `required skill unidesk-code-queue is not materialized` 失败；该失败发生在 admission/dispatch 完成后，不属于本 PR 的 worktree 门禁修复范围。

## 运行面证据

调查时 AgentRun NC01/nc01-v02 manager source commit 为 `5d7ede07543d`，PipelineRun `agentrun-nc01-v02-ci-5d7ede07543d6f8d9924ce9853420a4c6051ez7tbs` 已成功，runtime digest 为 `sha256:1a23c9a8424452ec60d5c9c2818b8eb0c332a915f656a05de2164dfb4449ffbc`，Argo revision 为 `56b5f3ed00f2` 且 Synced/Healthy。旧拒绝来自 NC01 UniDesk CLI worktree，不来自 AgentRun manager 镜像。

`unidesk-host` PaC 对当时 `master` source `2e2aaf2569b7cd0eaee663a3fb63143b72b722b7` 的 PipelineRun `unidesk-host-7nvkz` 已成功，但只推进 GitOps，不更新 `/root/unidesk` host worktree，证明旧 `targetExecution` 把正式入口错误绑定到了交付链不管理的宿主源码目录。

## 风险与阻塞

- PR #2334 尚未合并；按用户要求不得自行合并。
- `unidesk-host` PaC 只由 `master` 合并事件触发，因此本修复对应的 PipelineRun、GitOps revision、runtime digest 和 post-merge canary 在合并前无法产生。
- 合并后应只读观察正常 PaC/GitOps/runtime 收敛，不得人工触发 PipelineRun、mirror、Argo 或 live patch；随后使用独立 dirty task worktree复验正式 `master` CLI。
- canary 暴露的 `unidesk-code-queue` required skill 缺失属于独立 resource-bundle 装配风险，不应并入本 PR。
- 未触碰 PK01、Sub2API、ApiState、Secret、外部哨兵或业务账号。
