Parent: #32
问题概述 / Summary
现有真实 Docker lifecycle foundation 已能创建、启动、等待、终止和清理容器,但所有权仍主要存在于单进程内。需要先建立持久启动意图、generation lease/fencing 与重启协调,才能允许产品层把 Run 绑定到真实容器。
当前基线 / Current baseline
- 固定 daemon endpoint、真实 create/start/wait、timeout/cancel、TERM/KILL、final inspect、delete/absence 已验证。
- 当前实现是 package-private、non-authorizing foundation。
- Docker 可用性不等于产品执行授权。
范围 / Scope
- 在任何 Docker 外部副作用前持久化 launch intent。
- 为 Run/Attempt/Container generation 建立 lease、owner 与 fencing token。
- 定义 created/started/exited/cleaning/cleaned/failed 的幂等转换。
- 启动时只协调带 Prayu ownership labels 且与持久记录精确匹配的容器。
- 恢复自然退出、超时、取消、进程崩溃与 daemon 短暂断连。
- 将协调结果记录为 append-only lifecycle/audit events。
非目标 / Non-goals
- 本 Issue 不开放 CLI、HTTP、Desktop 或模型执行入口。
- 不实现日志/Artifact 传输;由同父项其他子 Issue 负责。
- 不自动接管或删除无法证明属于 Prayu 的容器。
涉及目录 / Affected directories
internal/sandbox/
internal/runner/
internal/application/
internal/domain/
internal/store/
internal/events/
docs/adr/
- 上述目录对应测试文件
依赖 / Dependencies
- 复用当前真实 Docker lifecycle foundation;不得重写 daemon transport。
- 后续产品准入 Issue 依赖本 Issue。
验收条件 / Acceptance criteria
安全边界 / Security boundaries
持久记录只是执行意图,不是授权。每次恢复仍必须重新核验 Run、Workspace、权限快照、当前进程 capability 和容器身份。
Parent: #32
问题概述 / Summary
现有真实 Docker lifecycle foundation 已能创建、启动、等待、终止和清理容器,但所有权仍主要存在于单进程内。需要先建立持久启动意图、generation lease/fencing 与重启协调,才能允许产品层把 Run 绑定到真实容器。
当前基线 / Current baseline
范围 / Scope
非目标 / Non-goals
涉及目录 / Affected directories
internal/sandbox/internal/runner/internal/application/internal/domain/internal/store/internal/events/docs/adr/依赖 / Dependencies
验收条件 / Acceptance criteria
go test、race-sensitive 定向测试与go vet通过。安全边界 / Security boundaries
持久记录只是执行意图,不是授权。每次恢复仍必须重新核验 Run、Workspace、权限快照、当前进程 capability 和容器身份。