# R12 AgentRun runner 子进程回收任务报告

## 结论

已修复 release runner 将 Bun 直接置为容器 PID 1 导致 `timeout`/`git` 子进程无法回收的问题。最终根因不是镜像缺少 init，而是 runner Job 的 Kubernetes `command` 覆盖了镜像 `/sbin/tini --` Entrypoint；修复将启动脚本声明改为 `args`，保留现有 boot、task/session、Kafka、持久化、lease、timeout、provider、SecretRef 和 workspace 语义。

## 交付

- AgentRun PR [#373](https://github.com/pikasTech/agentrun/pull/373) 在 runtime image 安装并声明 `tini` Entrypoint。
- AgentRun PR [#374](https://github.com/pikasTech/agentrun/pull/374) 移除 Job 对 Entrypoint 的覆盖，合并提交为 `c88661566a9e0379fa4afad1ccb1aab030912c29`。
- 正常 release 自动链成功生成镜像 `sha256:712e999f59f6d4a837bb664f2af291b66e5df09f4db33ddcbbb5e35774815d77` 和 GitOps revision `16410d3427b7`；未人工触发 PipelineRun 或 Argo sync。

## 运行面验收

- 新 manager 启动日志确认 source commit 为 `c88661566a9e0379fa4afad1ccb1aab030912c29`。
- 运行面镜像配置显示 Entrypoint 为 `/sbin/tini --`；manager 实际加载的 `src/runner/k8s-job.ts` 使用 `args`。
- 自然业务 run `run_571fd8af447a4f8696a916f8a7e7d42d` 创建新 runner `agentrun-nc01-release-runner-8c657bded67e-555px`：Pod 使用新镜像、`command` 为空、`args` 为现有 runner boot 脚本。
- 容器进程树为 `tini` PID 1 → Bun PID 7 → Node PID 154 → Codex PID 161。
- 在 backend 初始化、resource bundle 物化和真实 commandExecution 前后两次采样，runner zombie 均为 0。
- 发布前旧 runner 未被中断，继续使用旧镜像自然完成；未触碰 Webterm，未运行 Vitest。

## 关联内存证据

旧 AgentRun runner 退出后总 zombie 从 226 降至约 69，剩余主要来自仍运行的发布前旧 runner。新 runner 未复现增长。NC01 真实 `MemAvailable` 仍随业务在 2.7 至 3.9 GiB 波动，因此未为验收额外创建合成任务，也未启动 WebProbe。
