# AgentRun 运行可靠性

来源：[AgentRun #294](https://github.com/pikasTech/agentrun/issues/294)。

范围：长期跟踪 AgentRun admission、dispatch、runner、resource bundle、provider 建立、终态失败可见性与自动交付可靠性。单次故障作为 MDTODO ITEM 纳入，不为每个 issue 新建文件。


## R1 [completed]

依据 [AgentRun #294](https://github.com/pikasTech/agentrun/issues/294) 恢复 Artificer resource-bundle Git 获取与失败可见性，完成任务后将详细报告写入[任务报告](./details/agentrun-resource-bundle-git-fetch/R1_Task_Report.md)。
### R1.1 [completed]

用固定四个 run 单步披露 bundle source、fetch 阶段、脱敏 remote/credential sourceRef 与首个失败分类，完成任务后将详细报告写入[任务报告](./details/agentrun-resource-bundle-git-fetch/R1.1_Task_Report.md)。
### R1.2 [completed]

在 YAML/sourceRef 或 AgentRun runner/resource-bundle 权威路径修复 code 128，并统一 task terminal failure 摘要，完成任务后将详细报告写入[任务报告](./details/agentrun-resource-bundle-git-fetch/R1.2_Task_Report.md)。
### R1.3 [completed]

通过 PR 合并自动 CI/CD 后重派同类 Artificer 任务，验收 bundle materialized、provider established 和业务执行开始，完成任务后将详细报告写入[任务报告](./details/agentrun-resource-bundle-git-fetch/R1.3_Task_Report.md)。

## R2 [completed]

在不改变产品事件、持久化、trace authority 或跨服务职责的前提下，清理 AgentRun/HWLAB 观测诊断 CLI 支线；来源 [UniDesk #1619](https://github.com/pikasTech/unidesk/issues/1619) 与 [UniDesk #1796](https://github.com/pikasTech/unidesk/issues/1796)，任何架构变更均跳过，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R2_Task_Report.md)。

### R2.1 [completed]

落实 [UniDesk #1619](https://github.com/pikasTech/unidesk/issues/1619)：仅在 CLI 输出层增加有界 plan 默认视图和 observability scoped help，显式 full/raw 保持完整；禁止提高 stdout 阈值、修改 YAML 或运行面，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R2.1_Task_Report.md)。

### R2.2 [completed]

落实 [UniDesk #1796](https://github.com/pikasTech/unidesk/issues/1796)：仅修既有诊断层的 lane 选择、commandId 过滤和 missing-command-terminal-span 的 unknown/instrumentation-gap 分类；禁止新增第二事实源或改变 trace authority，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R2.2_Task_Report.md)。

### R2.3 [completed]

由主代理完成架构 diff review、定向 CLI 验收、PR 合并与 issue 收口；只接受局部诊断/可见性修改，rollout 不适用，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R2.3_Task_Report.md)。

### R2.4 [completed]

登记 [UniDesk #1801](https://github.com/pikasTech/unidesk/issues/1801)：diagnose 的 command/result 读取会向同一业务 trace 补记 command_result span，使重复读取改变 instrumentation completeness；该问题涉及 trace context 与诊断证据隔离，本轮按架构变更边界跳过，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R2.4_Task_Report.md)。

## R3 [completed]

依据 [AgentRun #307](https://github.com/pikasTech/agentrun/issues/307) 实现 Queue Q5 的同 task 不可变 attempt 历史与显式终态失败 retry，禁止通过重置 task 或复制 task 合同绕过资源语义，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R3_Task_Report.md)。

### R3.1 [completed]

在 AgentRun 增加正式 `agentrun_queue_attempts` 存储、现有 latestAttempt 回填和不可变历史查询；task.latestAttempt 只保留为摘要指针，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R3.1_Task_Report.md)。

### R3.2 [completed]

实现服务端 `POST /api/v1/queue/tasks/:id/retry`：同 task 新 attempt、retry key 幂等、failed/blocked 白名单、completed/cancelled fail closed，并让 dry-run 全校验且零写入，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R3.2_Task_Report.md)。

### R3.3 [completed]

在 UniDesk 受控 CLI 增加 task retry 资源入口，完成内存/PostgreSQL 并发测试、PR 自动交付和固定任务 `qt_5b65a086385a49bdb874cf8f9d191169` 的 bundle/provider/业务启动验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R3.3_Task_Report.md)。

## R4 [in_progress]

完善 AgentRun runner 生命周期、claim 释放、容量门禁与 manager 权威回收，使终态一致性、并发安全和有界诊断形成单一可靠合同，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R4_Task_Report.md)。

### R4.1 [in_progress]

解决 [AgentRun #309](https://github.com/pikasTech/agentrun/issues/309)：终态 run/command 与终态 Pod 不得因陈旧 runClaimedBy 被判假活并占满 maxRunners；对齐 [AgentRun #280](https://github.com/pikasTech/agentrun/issues/280) 的 retention 边界，由 manager 原子释放 claim、终态化和 CAS 回收，完成并发测试、自动交付及 NC01 受控 CLI 验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R4.1_Task_Report.md)。

#### R4.1.1 [in_progress]

解决 [UniDesk #1820](https://github.com/pikasTech/unidesk/issues/1820)：对齐 cleanup-runners 只读 observer 与 AgentRun manager retention 的终态 claim 分类，默认有界披露 terminal-run-stale-claim、repairKind 和一致的 candidate/protected 计数；manager 保持唯一回收 authority，禁止增加删除入口或第二事实源，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R4.1.1_Task_Report.md)。
### R4.2

支线登记 [AgentRun #284](https://github.com/pikasTech/agentrun/issues/284)：Provider Secret activation fence 属于额外合同、租约与围栏架构，未经用户再次明确授权不得实现、合并、部署或作为 Artificer/.pika 主线门禁；保留 issue 仅供历史上下文，不依赖 #324，也不调度子代理执行，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R4.2_Task_Report.md)。
### R4.3

解决 [AgentRun #330](https://github.com/pikasTech/agentrun/issues/330)：修复 manager 已选定 inactive runner 后删除其关联 Secret 失败导致 dispatch 无法释放容量；只处理对象归属、NotFound 幂等和 typed failure，禁止扩展合同、租约、安全机制、围栏或容量架构，自动上线后以原 task qt_fd1c18a8bb04490d8bbb838885d1f436 成功 dispatch 验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R4.3_Task_Report.md)。
### R4.4 [completed]

解决 [AgentRun #332](https://github.com/pikasTech/agentrun/issues/332)：修正终态 runner 与 manager 基础设施事件的假活分类，让既有周期 reconciler 自动回收所有 inactive runner；不新增合同、租约、安全机制、围栏、CAS 或容量架构，以 NC01 空闲容量收敛到 0/20 验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R4.4_Task_Report.md)。
## R5 [in_progress]

完善 Artificer AipodSpec、primary workspace、resource bundle 物化与业务 turn admission，使声明式源码快照、能力 bundle 和失败可见性形成单一合同，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5_Task_Report.md)。

### R5.1 [in_progress]

解决 [AgentRun #310](https://github.com/pikasTech/agentrun/issues/310)：Artificer 已报告 resource-bundle-materialized 却未物化 primary UniDesk workspace；禁止 agent 自行 clone、借用宿主 worktree 或 trans 源码旁路。旧 task 已错误进入不可变 completed，修复自动交付后须以相同 cadence 与哨兵报告业务目标创建新的 Artificer task，并以 Artificer 自身完成作为验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.1_Task_Report.md)。

#### R5.1.1 [in_progress]

审核并修复 [AgentRun PR #312](https://github.com/pikasTech/agentrun/pull/312) 后续暴露的 session workspace 连续性与源码清洁性：真实 Artificer run `run_d2cd5c7b9c4149a28dd6e8403c77fa01` 已在 seq=8 精确物化 UniDesk master `d3f6d1cd335b` 到 primary workspace `.`，但 seq=35 因受管 capability bundle 覆盖产生 `.agents/skills/*` 与 `tools/` untracked 而错误判定源码已脏并 fail closed；修复必须让受管覆盖不污染 Git source view、不得隐藏真实源码改动，并保持同 session 后续 run/runner 的 source/workspace identity 与安全恢复。PR merge 后只允许自动交付，再用两项固定 Artificer 业务目标验收；禁止主代理代做、agent clone、宿主 worktree、trans 源码旁路或人工 CI/CD，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.1.1_Task_Report.md)。

### R5.2 [completed]

解决 [AgentRun #313](https://github.com/pikasTech/agentrun/issues/313)：真实 Artificer task `qt_5cbeb5c338974d14b4d55336a412fc00` 的 AipodSpec 摘要声明 github-ssh SecretRef，但 task input 的 `executionPolicy.toolCredentials` 仅保留 github-pr 与 unidesk-ssh，证明 volume credential 在 create/render/admission 阶段已丢失，既有 runner 子进程继承修复无法生效；补齐声明到 task、runner mount、backend commandExecution 的完整投影，使真实 git SSH push 可用。缺 key、known_hosts 或环境继承时必须脱敏 typed fail closed；禁止 `/root/.ssh`、ssh-keyscan、token URL、匿名 transport、人工 CI/CD 或主代理代做业务任务，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.2_Task_Report.md)。

### R5.3 [in_progress]

解决 [AgentRun #219](https://github.com/pikasTech/agentrun/issues/219) 的 Final Response 重复与历史 assistant_message 整段重放：PR #314 自动上线后的真实 Artificer run `run_d2cd5c7b9c4149a28dd6e8403c77fa01` 已由有界单事件 CLI 确认 seq=22/27/36 是三个 `completed-agent-message`（itemId A/B/C），seq=38/39/40 却又以相同 A/B/C 发出 `agent-message-delta-progress` 的 terminal `progressFlush`，seq=42 才是指向 C 的无正文 final seal；根因是 completed item 未从 delta progress state 精确封口，`finalize()` 再次 flush，并非 Kafka/SSE 或文本重复。按 itemId 修复 AgentRun/Codex backend progress/completion 生命周期，保留不同 itemId 同文消息语义并确保无正文 seal 只作 authority control；禁止 HWLAB/Workbench 文本去重、tail 合并或 Kafka/SSE 补洞，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.3_Task_Report.md)。

#### R5.3.1 [in_progress]

继续解决 [AgentRun #219](https://github.com/pikasTech/agentrun/issues/219)：真实验收 run_3bd02d10ee534b8ca29176f15a893555 的 seq 136/137 是同一 itemId、完成前的累计 agent-message-delta-progress，seq 138 才是 durable completed body；三者都编码为 assistant_message，导致 timeline 显示三条近似 final response。将 live delta/progress、durable completed body、bodyless final seal 与 terminal status 在权威 event contract 中明确区分，同时保留实时可见性和 #316 的 late-replay/itemId/seal 修复；禁止 HWLAB/Workbench 文本去重、tail merge 或 Kafka/SSE 补洞，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.3.1_Task_Report.md)。

### R5.4 [completed]

解决 [AgentRun #319](https://github.com/pikasTech/agentrun/issues/319)：Artificer 既有 session send 在 new-turn runner admission 的 kubectl get jobs 失败后，已写入 run_22008379b6ac48e188032c1091c0741b 与 pending command，却没有 runner-job-created/typed terminal，session 永久显示 waiting-runner。将 session new-turn 改为 durable、幂等、可恢复的 runner dispatch 合同；admission/Job 失败必须写前 fail closed 或原子终态化并释放 session identity，覆盖 Memory/PostgreSQL、K8s failure、并发与 restart；禁止复制 task/session、数据库修补、第二清理 authority 或人工 CI/CD，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.4_Task_Report.md)。

### R5.5 [in_progress]

解决 [AgentRun #322](https://github.com/pikasTech/agentrun/issues/322)：PR #321 自动发布并原位恢复旧 run/command 后，durable dispatcher 在正式 NC01/nc01-v02 manager 内以类型化 runner-kubernetes-observation-failed 重试并终态化，精确失败为 kubectl get jobs exit=1，Artificer backend 未建立。调查并修复 manager 的 Kubernetes identity/namespace/RBAC/kubectl transport 与 bounded redacted 诊断，保持 durable intent、typed terminal、session release 和 Kafka event 合同；禁止回退同步 HTTP kubectl、扩大容量、删 Runner、数据库修补、复制 task/session 或人工 CI/CD。自动发布后必须在同一 Artificer session 继续原只读哨兵报告并进入 backend turn，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.5_Task_Report.md)。

#### R5.5.1 [in_progress]

解决 [AgentRun #324](https://github.com/pikasTech/agentrun/issues/324)：同一 session 首次 run 已将 UniDesk bundle 物化到 session workspace，但新 Runner 续跑 cwd 回退为镜像内 AgentRun 源码；恢复 durable session workspace/resource binding、PVC mount 与 workdir，并让 session describe 有界披露绑定和 mismatch，禁止 clone、prompt cd、宿主路径 fallback、新 task/session 或人工 CI/CD，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.5.1_Task_Report.md)。

### R5.6 [completed]

解决 [UniDesk #1883](https://github.com/pikasTech/unidesk/issues/1883) 与 [AgentRun #342](https://github.com/pikasTech/agentrun/issues/342)：让 Artificer runner 的受控 trans 复用 UniDesk Windows route 解析与 frontend transport，支持 D518:win 及 win/<drive>/<path> 原入口；区分 primary source workspace 与用户授权的远端 tool target，删除 unsupported-operation 和 host path 误判，不新增节点特例、旁路 SSH 或隐藏 fallback。两个 PR 自动上线后用最短 Artificer canary 验收 pwd、ls、cat 和 apply-patch，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.6_Task_Report.md)。

### R5.7 [in_progress]

解决 [UniDesk #1957](https://github.com/pikasTech/unidesk/issues/1957) 与 [AgentRun #375](https://github.com/pikasTech/agentrun/issues/375)：修复 Artificer resource bundle 缺失 `$post-task` skill；只沿 `agent_skills` 权威源、AgentRun AipodSpec、resource bundle 和 runner 投影物化，禁止 prompt 复制、手工补文件、第二 authority 或人工 CI/CD，以真实 Artificer follow-up 直接加载 `$post-task` 验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.7_Task_Report.md)。

### R5.8 [in_progress]

解决 [UniDesk #2014](https://github.com/pikasTech/unidesk/issues/2014)：把 `config/unidesk-cli.yaml#github.auth.repositoryOverrides` 的既有私有仓凭据通过 YAML-first tool credential/resource bundle 投影给 Artificer，使受控 `unidesk-gh` 可读取、创建和评论任务私有仓 PR；Secret 只披露 SecretRef presence/fingerprint/valuesPrinted=false，不新增第二 GitHub 客户端、权限契约、租约或围栏，并与 PikaOA MVP 主线并行且不作为业务门禁，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.8_Task_Report.md)。
### R5.9 [in_progress]

解决 [AgentRun #356](https://github.com/pikasTech/agentrun/issues/356)：修复 runner Job 已不存在且 lease 过期后，非终态 active turn admission 仍以 `session-turn-admission-active` 阻塞同 session `send`；按既有 SPEC 在 memory/PostgreSQL authority 内原子终结或隔离陈旧 admission 并创建新 run/turn/runner，保留 fresh active steer/并发拒绝，不新增第二 session authority、租约、围栏或客户端 retry，并与 PikaOA MVP 并行且不作为业务门禁，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.9_Task_Report.md)。
### R5.10 [completed]

解决 [AgentRun #363](https://github.com/pikasTech/agentrun/issues/363)：旧 PipelineRun 在新 revision 已发布后才解除 admission 排队并把 `nc01-v0.2-gitops` 回退到旧 sourceCommit，导致 Artificer 重新加载已删除的 `sub2api` AipodSpec；PaC promote 必须以 source branch 最新 revision 为 authority，把过期运行处理为 `warning=true`、`blocking=false`、成功 no-op，禁止覆盖更新 GitOps，并通过自动 PaC 恢复 pika/grok AipodSpec。禁止人工 PipelineRun、Argo sync、数据库修改、第二 authority或 fallback；调试 patch 只允许按 `$unidesk-daddev` P2 最小可逆执行，终态必须由 owning YAML/源码和自动 CI/CD 收敛，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.10_Task_Report.md)。

## R6 [completed]

将“先恢复运行面再工程化”固化为 unidesk-subagent 的泛化主线规则：运行面恢复关键路径由主代理控制，低耦合工程化任务及时并行，恢复后继续完成工程化交付；将单 PR 收口、复用 guarded merge 内建 preflight、避免仅补 merge SHA 的重复 PR 和减少碎片化 GitHub 查询固化到 unidesk-gh 及相关 reference，并让 merge 默认摘要直接披露 merge commit 与 mergedAt，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R6_Task_Report.md)。

## R7 [completed]

将 Artificer 固化为所有执行型子代理任务的强制默认执行面：用户只说“子代理”时必须使用 Artificer；只有用户明确指定原生子代理，或 Artificer 经有界 readiness/真实派单证据确认故障不可用时，才允许原生子代理执行；禁止主代理因方便、速度、空闲槽或历史习惯自行降级，并要求 Artificer 恢复后立即停止原生扩展并交接，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R7_Task_Report.md)。

## R8 [in_progress]

解决 [UniDesk #2103](https://github.com/pikasTech/unidesk/issues/2103)：将 `agentrun events` 的主工作流改为保留 `--after-seq` 分片游标并使用 `--expect <N>`、`--timeout <duration>` 的 manager/API 长轮询；达到期望新增事件数立即返回，超时返回已观察事件及明确 timeout/next cursor，禁止 CLI 本地高频忙轮询或无输出，并同步 CLI、manager、测试与 `unidesk-agentrun` skill 文档，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R8_Task_Report.md)。

### R8.1

解决 [AgentRun #377](https://github.com/pikasTech/agentrun/issues/377)：定位并修复 `events --expect/--timeout` 并发长轮询期间 manager 健康探针超时、KafkaJS 负 timeout 与 durable dispatch 无 runner 的因果链；保持既有 PostgreSQL/Kafka event authority、dispatcher/reconciler 与只读长轮询合同，不新增第二 authority、scheduler、租约或客户端 retry，通过正常 PR/自动 CI/CD 和并发 long-poll、health latency、dispatch/restart recovery 验收，且不得由 Artificer 递归修复自身，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R8.1_Task_Report.md)。
## R9 [completed]

解决 [UniDesk #2176](https://github.com/pikasTech/unidesk/issues/2176)：调查 post-task dispatch 将 R8、R7.1、R7.2 三个不同 Artificer task 误判为 Issue #1888 重复任务并统一取消的 P0 事故；追溯引入提交，错误 PR 先语义回滚，再以完整 logical-operation fingerprint 约束去重范围。不同 payload/workspace/MDTODO 必须互不影响，identity 不完整或观察陈旧时只 warning 且禁止 destructive cancellation；同一操作重放返回原 task。补 OTel typed evidence 与四任务回归，禁止锁、租约、第二状态库、PK01、Vitest和人工 CI/CD，正常 PR merge 后从原入口验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R9_Task_Report.md)。

## R10 [in_progress]

解决 [UniDesk #2202](https://github.com/pikasTech/unidesk/issues/2202)：从最新 master 重建跨仓 Artificer MDTODO 终态核对，派单时显式记录 MDTODO 独立 route、workspace 与 file authority，禁止从产品 targetWorkspace 扫描猜测；结果侧只读核对，缺失、歧义或不可读仅 typed warning、mutation=false 且保持真实 final response 可见，不新增锁、租约、第二状态库、证明链或围栏，不修改 PK01、不运行 Vitest或人工 CI/CD，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R10_Task_Report.md)。

### R10.1 [in_progress]

重做 [UniDesk #2202](https://github.com/pikasTech/unidesk/issues/2202) 的跨仓 MDTODO 终态权威：从最新 master 建立全新 worktree/session，显式 route/workspace/file 必须由受控 route 读取而非当前进程本地 readFile；run/task 元数据或文件缺失、歧义、不可读均附加 mutation=false typed warning 且绝不抑制真实 final response；补真实跨 route 测试，禁止复用或修补已关闭 PR #2210，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R10.1_Task_Report.md)。

## R11 [completed]

依据 [UniDesk #2273](https://github.com/pikasTech/unidesk/issues/2273) 修复 Artificer skill 更名后的 requiredSkills 装配漂移：让 YAML-owned AipodSpec 从旧 unidesk-code-queue 切换到唯一正式 unidesk-agentrun，不恢复旧目录或 fallback；通过独立 worktree、定向渲染测试、正常 PR 自动交付和全新 Artificer canary 证明 required skills 可 materialize，不修改 PK01、SelfMedia、D518、凭据或 live AipodSpec，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R11_Task_Report.md)。

### R11.1 [completed]

依据 [UniDesk #2275](https://github.com/pikasTech/unidesk/issues/2275) 泛化改进 AipodSpec 装配漂移调查入口：让默认 `agentrun describe aipodspec/<name>` 的人类、JSON、YAML 有界投影同时披露 required skill 名称、总数与省略数，使同类 source-of-truth 对照无需 `--full` 或临时 dump；保持 SecretRef-only、运行面零变更，并以一次定向 smoke 验证，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R11.1_Task_Report.md)。

### R11.2 [completed]

解决 [AgentRun #378](https://github.com/pikasTech/agentrun/issues/378)：将辅助 skill 物化缺失从 runner 启动 blocker 降级为结构化 warning 并继续模型执行，保留 prompt、provider 凭据、primary workspace 与 runner 可执行环境等核心资源 fail-closed；同时把 Artificer 旧 skill 名更正为唯一正式 `unidesk-agentrun`，补 warning 可见性、可用 skill 注入和核心资源失败回归，走正常 PR 与自动交付后由主代理以全新 Artificer canary 验收，不修改 live 对象或 CI/CD 基础设施，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R11.2_Task_Report.md)。
## R12 [completed]

解决 [AgentRun #372](https://github.com/pikasTech/agentrun/issues/372)：修复 release runner 以 Bun 直接作为容器 PID 1、无法回收 Codex/Git 孤儿后代而持续累积 `timeout`/`git` zombie；在 runtime image 使用轻量 init 作为唯一 PID 1 并 exec 现有 boot 链，不改变 task/session、Kafka 实时/回放、持久化、lease、timeout、provider、SecretRef 或 workspace authority；经 release 自动交付后验证新 runner zombie 不再增长，不运行 Vitest、不人工补 CI/CD且不触碰 Webterm，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R12_Task_Report.md)。

## R13 [in_progress]

解决 [UniDesk #2331](https://github.com/pikasTech/unidesk/issues/2331)：PR #2313 已移除 AgentRun task worktree Git 状态门禁，但 NC01 正式 create task 仍返回旧 dirty worktree 拒绝；由原生子代理定位源码、PaC/GitOps 与运行面 revision 漂移，完成最小修复、正常 PR/自动交付和带 dirty task worktree 的全新 Artificer canary，禁止递归修复、人工 PipelineRun、live patch、恢复门禁或修改 PK01/Sub2API/ApiState，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R13_Task_Report.md)。

## R14 [completed]

解决 [agent_skills #16](https://github.com/pikasTech/agent_skills/issues/16)：让 resource bundle 中声明的 skill 在全新 checkout 后可直接读取，收敛 `humanizer-zh` 的唯一源码 authority，并增加轻量 gitlink/`.gitmodules`/`SKILL.md` 预检；未声明、不可解析或物化后缺少可读 `SKILL.md` 时输出具体路径与原因，合法 submodule 和普通 skill 目录继续通过，不修改 AgentRun、SelfMedia、release、生产或 CI/CD 公共服务，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R14_Task_Report.md)。

## R15 [completed]

解决 `lab-dev.hwpod.com` Workbench 在 trace `f04d1fa8a6eecf03a5a306840d502454` 返回 `admission_promotion_unavailable`：精准纠正提交 `1a070a9d` 将 development 错接 `nc01-release` 的 YAML 路由，使 NC01/v03 使用 AgentRun dev lane；保留统一管理员密码迁移，API key 继续作为独立凭据并通过受控 Secret 分发适配，完成自动交付和公网 Workbench 新 `hi` turn 验收，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R15_Task_Report.md)。

## R16

继续解决 [UniDesk #2154](https://github.com/pikasTech/unidesk/issues/2154) 的 HWLAB 双环境 AgentRun 工具凭据投影：development 已通过显式 `codeAgentRuntime.toolSecretNames`、native runtime GitOps postprocess/verify 和公网 Workbench fresh `hi` turn 完成 L0/L2 回归；待用户对本次 L3 明确授权后，通过 release PR 自动滚动 production，确认 `lab.hwpod.com` 使用 production AgentRun lane 的显式工具 SecretRef 并得到 terminal Final Response。禁止恢复旧 Secret、fallback、人工 PipelineRun、mirror sync 或 Argo sync，完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R16_Task_Report.md)。
