diff --git a/docs/MDTODO/agentrun-runtime-reliability.md b/docs/MDTODO/agentrun-runtime-reliability.md index 5223f677..81bb18ba 100644 --- a/docs/MDTODO/agentrun-runtime-reliability.md +++ b/docs/MDTODO/agentrun-runtime-reliability.md @@ -54,14 +54,18 @@ 在 UniDesk 受控 CLI 增加 task retry 资源入口,完成内存/PostgreSQL 并发测试、PR 自动交付和固定任务 `qt_5b65a086385a49bdb874cf8f9d191169` 的 bundle/provider/业务启动验收,完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R3.3_Task_Report.md)。 -## R4 +## R4 [in_progress] 完善 AgentRun runner 生命周期、claim 释放、容量门禁与 manager 权威回收,使终态一致性、并发安全和有界诊断形成单一可靠合同,完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R4_Task_Report.md)。 -### R4.1 +### 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)。 + ## R5 完善 Artificer AipodSpec、primary workspace、resource bundle 物化与业务 turn admission,使声明式源码快照、能力 bundle 和失败可见性形成单一合同,完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5_Task_Report.md)。 diff --git a/docs/MDTODO/details/agentrun-runtime-reliability/R4.1_Task_Report.md b/docs/MDTODO/details/agentrun-runtime-reliability/R4.1_Task_Report.md new file mode 100644 index 00000000..6d5a7f89 --- /dev/null +++ b/docs/MDTODO/details/agentrun-runtime-reliability/R4.1_Task_Report.md @@ -0,0 +1,36 @@ +# 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 验收。