feat(v0.1): add per-session RWO PVC foundation for true session state persistence
PR A for #770: docs + migration 007 + RBAC + types foundation. - 新增 failureKind session-store-evicted,用于区分 PVC 缺失与真协议错误 - 新增 migration 007_v01_session_state_storage:sessions 表增加 storage_* 列 + 索引 - mgr SA RBAC 增量:persistentvolumeclaims: [create, get, list, watch, delete] - 6 份 SPEC 升级(runtime-assembly / hwlab-manual-dispatch / backend-codex T7b / agentrun-runner / agentrun-mgr / services) - 显式禁止:fake app-server mock、replacement threadId、runner 启动后 copy/restore、idleTimeoutMs 拉永驻 - selftest 断言更新到 007_v01_session_state_storage 后续 PR B/C 在此基础上接入 mgr 端 PVC 生命周期 + runner 端 mount + backend 端 observability。
This commit is contained in:
@@ -90,6 +90,19 @@ Runner inbound API 只允许本地或私有诊断,不作为业务客户端入
|
||||
| Tenant policy boundary | Run schema 合同 | 保留,P0 | 作为 `Run` 的必填字段和最小校验存在,不做独立 policy engine;tenant 的业务授权仍由 UniDesk/HWLAB 判定。 | 并入 `spec-v01-agentrun-mgr.md` |
|
||||
| Observability | 最小事件/日志合同 | 保留,P1 子项 | 作为 manager/runner 的 event、terminal status、failureKind、logPath 和 redaction 最小合同,不拆独立观测系统。 | 并入 `spec-v01-agentrun-mgr.md`、`spec-v01-agentrun-runner.md` |
|
||||
| `agentrun-scheduler` | 长驻调度器 | Deferred | M1-M3 稳定后再实现自动 pending scan、capacity selection 和 runner Job 创建。 | `spec-v01-scheduler.md` |
|
||||
|
||||
### v0.1.1 Session state 持久化
|
||||
|
||||
`v0.1` 的 `P1 SessionRef 持久化` 已从「metadata-only」升级为「per-session RWO PVC 直接挂载」:
|
||||
|
||||
- `agentrun-mgr`:负责 session 创建时同步创建 PVC(`POST /api/v1/sessions`)、删 PVC(`DELETE /api/v1/sessions/:id/storage`)、runner 上报摘要(`POST /api/v1/sessions/:id/storage/refresh`)、GC 循环、运行前 PVC 存在性检查。
|
||||
- `agentrun-runner`:Job manifest 渲染 `agentrun-sessions` PVC volume,把 PVC 直接挂到 `${CODEX_HOME}/<codex_rollout_subdir>`,env 透传 PVC name / namespace / mount path / codex rollout subdir。
|
||||
- `codex-app-server-stdio` backend:在 `initialize` 之后 emit `codex-rollout-storage-mounted` 事件;`AGENTRUN_SESSION_PVC_NAME` 已设 + `thread/resume` 返回 `no rollout found` 时升级为 `session-store-evicted`。
|
||||
- 接受方(HWLAB Cloud Web Workbench):收到 `session-store-evicted` 时走 reset UX,**不**写入 fake 续接。
|
||||
|
||||
Manager SA RBAC 增量:`persistentvolumeclaims: [create, get, list, watch, delete]`。Runner SA 不需新增 PVC 相关权限(挂载走 Pod spec)。PVC storage class / size / 命名规则由 env 收敛(`AGENTRUN_SESSION_STORAGE_CLASS`、`AGENTRUN_SESSION_STORAGE_SIZE`)。
|
||||
|
||||
禁止路径:fake app-server mock 通过;强制重发同 sessionId 同 threadId 蒙混;`thread/resume:no rollout found` 改写为 `thread/start` + replacement threadId(PR #78 已否决);`idleTimeoutMs` 拉成永驻当成本特性;runner Job 启动后再做 copy/restore(撤掉的路径,禁止复活)。
|
||||
| AgentRun Queue | 系统能力 | 新增,P0 规格 | 直接吸收 UniDesk Code Queue 的队列能力;第一版只做 RESTful API、CLI 和轻量轮询,不做 Event/OA/integrations,不迁移历史数据。 | `spec-v01-queue.md` |
|
||||
| 多 backend 路由 | 系统能力 | Deferred | `v0.1` 不做跨 backend kind 的自动路由和调度;仅支持同一 Codex stdio backend kind 下的 `codex`/`deepseek`/`minimax-m3` profile 手动选择。旧 MiniMax/OpenCode 直连路线不进入 Queue 首版。 | 后续版本 spec |
|
||||
| UI | 前端 | Deferred | `v0.1` 不要求独立 UI;UniDesk/HWLAB canary 可通过 CLI/API 验证。 | 后续版本 spec |
|
||||
|
||||
Reference in New Issue
Block a user