# R4.1 阶段报告 ## 状态 - 任务仍在进行中,来源为 [AgentRun #309](https://github.com/pikasTech/agentrun/issues/309)。 - manager 根因修复已通过 [PR #311](https://github.com/pikasTech/agentrun/pull/311) 合并到 `v0.2`,merge commit 为 `b7a15b77e0040f2c602f09629835f2a438132d61`。 - UniDesk 只读分类对齐由 [UniDesk #1820](https://github.com/pikasTech/unidesk/issues/1820) 和 R4.1.1 接续;完成前不关闭 R4.1。 ## 根因与修复 - 终态 run/cancel 事务未释放 `claimed_by`、`lease_expires_at` 和 PostgreSQL lease。 - retention 将终态 Pod 的 terminated container 错当成当前 active。 - 修复让终态事务原子释放 claim/lease,并以 DB fence 与 Kubernetes CAS 修复历史漂移;fresh claim、Running/Ready Pod 和事实不完整继续 fail closed。 ## 临时缓解 - 历史容量一度为 `20/20`;受控观察恢复到 `4/20` 后,两个未配置 `dsflash-go` 的 `FailedMount` 探针通过正式 `agentrun cancel run/...` 终态化,未裸删 Job/Pod。 - 缓解期间容量保持 available,最低观测到 `3/20`、`availableSlots=17`;临时缓解不等于根因修复。 ## 自动交付 - PR merge 自动产生唯一外层 PaC 事件,PipelineRun 成功,source 为 `b7a15b7`。 - 新镜像已构建,Argo `Synced/Healthy`,runtime `1/1` 且 digest 对齐。 - 未人工触发、sync、flush、创建 PipelineRun 或 patch 运行面。 ## NC01 验收 - 正式 task `qt_385e04018ef04783a74d0ee86fbb8819` 经 Queue create/dispatch 完成,result 为 `RUNNER_RETENTION_ACCEPTANCE_OK`。 - 新 manager 的 `runner-job-created` 事件将两个历史对象分类为 `terminal-run-stale-claim`,并给出 `repairKind=release-terminal-run-claim`;fresh active runner 继续 protected。 - Artificer command 完成时保留 warm runner fresh claim;随后正式 cancel 使 run 进入 `cancelled`,`claimedBy=null`、`leaseExpiresAt=null`,验证终态事务立即释放 claim。 ## 验证与剩余项 - 子代理已通过 runner retention/terminal lifecycle 定向合同 40 项、durable dispatch 10 项、变更模块 build 和 `git diff --check`。 - 隔离 PostgreSQL URL 未声明,因此未反解运行面 Secret,也未执行真实 PostgreSQL 集成入口。 - UniDesk `cleanup-runners` observer 仍沿用旧分类,未把 manager 已确认的两个终态 claim 显示为 candidate;由 #1820 修复并完成默认 compact CLI 验收。