diff --git a/AGENTS.md b/AGENTS.md
index 6aeb262..90f8373 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -26,7 +26,7 @@ AgentRun 是面向 UniDesk 与 HWLAB 的共享 Agent 执行基础设施。本仓
- P0: AgentRun 必须按纵向 MVP 开发,不能一开始并行铺开成多服务大重写。
- P0: 先证明最小 `runner + 一个 backend`;再加入 `agentrun-mgr` 的 durable facts 和手动启动 runner;最后再加入自动 scheduler。
-- P0: 现有 UniDesk Code Queue 和 HWLAB Code Agent 路径默认不被 AgentRun 替换。AgentRun 先作为新的共享执行面,通过 canary 集成逐步验证。
+- P0: UniDesk Code Queue 的下一阶段收敛方向是被 AgentRun Queue 直接吸收;不得做长期 adapter 过渡、双写或旧 API/UI/CLI 兼容层。旧 Code Queue 只保留冻结/归档语义,新任务进入 AgentRun Queue。
- P0: `v0.1` 面向 HWLAB v0.2 的下一阶段目标是先通过 `agentrun-mgr` 手动调度 API 提供 canary 服务;HWLAB `hwlab-cloud-api` 负责显式创建 run/command 并启动 runner Job,自动 scheduler 不作为前置条件。
## Critical RESTful MVP Rule
@@ -55,6 +55,7 @@ AgentRun 是面向 UniDesk 与 HWLAB 的共享 Agent 执行基础设施。本仓
- `docs/reference/spec-v01-postgres.md`:v0.1 Postgres durable store、schema migration 和 SecretRef 规格。
- `docs/reference/spec-v01-secret-distribution.md`:v0.1 Code Agent provider credential 和运行时 Secret 分发规格。
- `docs/reference/spec-v01-runtime-assembly.md`:v0.1 runner/backend 启动前的四要素 RuntimeAssembly 装配模型,覆盖 BackendImageRef、ProfileRef、SessionRef 和 Git-only ResourceBundleRef。
+- `docs/reference/spec-v01-queue.md`:v0.1 AgentRun Queue 直接吸收 UniDesk Code Queue 的 RESTful API、CLI、数据模型、Session 边界和验收规格。
- `docs/reference/spec-v01-hwlab-manual-dispatch.md`:v0.1 通过手动调度 API 为 HWLAB v0.2 提供 canary Code Agent 服务的目标、缺口和增强计划。
- `docs/reference/spec-v01-validation.md`:v0.1 两层验证模型,自测试允许 mock,综合联调必须 100% 真实。
- `docs/reference/spec-v01-agentrun-mgr.md`:v0.1 manager REST API、tenant boundary、runner claim 和 event/status authority。
diff --git a/docs/reference/architecture.md b/docs/reference/architecture.md
index 84944ba..742d7da 100644
--- a/docs/reference/architecture.md
+++ b/docs/reference/architecture.md
@@ -1,6 +1,6 @@
# AgentRun 架构参考
-AgentRun 是面向 UniDesk 与 HWLAB 的共享 Agent 执行面。它不是 UniDesk Code Queue 的改名,也不能默认替换现有 Code Queue 行为。Code Queue 仍是当前 UniDesk 任务队列;AgentRun 是新的基础设施线,重点是 Agent run 生命周期、runner 隔离和可插拔执行 backend。
+AgentRun 是面向 UniDesk 与 HWLAB 的共享 Agent 执行面。它包含执行内核、Session、Scheduler 和 Queue。UniDesk Code Queue 的下一阶段收敛方向是被 AgentRun Queue 直接吸收;不做 adapter 过渡、双写或旧 Code Queue API/UI/CLI 兼容层。旧 Code Queue 只保留冻结/归档语义,新任务进入 AgentRun Queue。
## 产品边界
@@ -11,9 +11,10 @@ AgentRun 负责通用执行基础设施:
- 将 run 分配给短生命周期 runner;
- 归一化 backend event、stdout/stderr、assistant message、tool call 和 terminal status;
- 管理 lease、heartbeat、基础设施恢复导致的 retry 语义和 run 可观测性;
-- 注册 backend capability,并定义 credential 注入边界。
+- 注册 backend capability,并定义 credential 注入边界;
+- 提供 Queue task、attempt、summary、stats、read cursor 和 commander 聚合,替代 UniDesk Code Queue 的新任务入口。
-UniDesk 与 HWLAB 是 tenant/client。UniDesk 负责平台入口、provider 清单、CLI/frontend 集成和现有 Code Queue 兼容。HWLAB 负责实验室任务 policy、设备/硬件语义、operation/audit/evidence 模型和 HWLAB workspace 规则。AgentRun 不判断某个 HWLAB live device mutation 是否被授权,也不判断某个 UniDesk production deployment 是否允许执行;它只执行 tenant policy 已授权的 run。
+UniDesk 与 HWLAB 是 tenant/client。UniDesk 负责平台入口、provider 清单和旧 Code Queue 归档;新任务队列能力进入 AgentRun Queue。HWLAB 负责实验室任务 policy、设备/硬件语义、operation/audit/evidence 模型和 HWLAB workspace 规则。AgentRun 不判断某个 HWLAB live device mutation 是否被授权,也不判断某个 UniDesk production deployment 是否允许执行;它只执行 tenant policy 已授权的 run 或 Queue task。
每个 run 都必须显式携带隔离字段:
@@ -21,7 +22,7 @@ UniDesk 与 HWLAB 是 tenant/client。UniDesk 负责平台入口、provider 清
- `projectId`,例如 `pikasTech/unidesk` 或 `pikasTech/HWLAB`;
- `workspaceRef`,用于定位 source/worktree/workspace;
- `providerId`,例如 `G14` 或 `D601`;
-- `backendProfile`,`v0.1` allowlist 为 `codex` 与 `deepseek`;后续可以扩展 `opencode`、`claudecode`、`host-native` 或 `windows-native`;
+- `backendProfile`,`v0.1` allowlist 为 `codex` 与 `deepseek`;Queue 首版废弃 MiniMax/OpenCode,只允许 Codex/Codex-compatible profile;
- `executionPolicy`,包含 sandbox、approval、timeout、network 和 secret scope;
- `traceSink`,说明标准化 event 镜像到哪里。
@@ -37,7 +38,10 @@ agentrun-runner
短生命周期 per-run 或 per-attempt executor;claim 一个 run,连接一个 backend,写回 events/status
agentrun-backend-*
- Codex、Claude Code、OpenCode、host-native 或 Windows-native 执行适配器
+ Codex/Codex-compatible 执行适配器;Queue 首版不接 MiniMax/OpenCode
+
+agentrun-queue
+ task、attempt、summary、stats、read cursor、commander 聚合;输出和 trace 只返回 Session 引用
agentrun-scheduler
后续自动 dispatcher;扫描 pending runs,选择 backend/profile/capacity,创建 runner Jobs
@@ -45,7 +49,7 @@ agentrun-scheduler
Manager 是稳定 API 和审计点。Runner 是执行者,不应成为业务客户端直接调用的公共 API。MVP 阶段 operator 可以人工启动 runner 进程或 Kubernetes Job,但 runner 仍必须从 `agentrun-mgr` claim run,并把所有事实写回 manager。
-Backend adapter 隐藏具体工具协议。Codex stdio JSON-RPC、OpenCode JSON events、Claude Code、host-native process 和 Windows-native execution 可以使用不同内部协议,但 AgentRun 公共 API 必须保持稳定且与 backend 无关。
+Backend adapter 隐藏具体工具协议。`v0.1` 和 AgentRun Queue 首版只把 Codex app-server stdio 作为正式执行路径,`codex` 与 `deepseek` 是同一 backend kind 下的 profile/config/SecretRef 选择。跨 backend kind 路由属于后续规格;MiniMax/OpenCode 不作为 Queue 首版能力。
## v0.1 实现技术栈
@@ -69,7 +73,7 @@ AgentRun 必须按纵向切片推进,不要一开始大规模并行开发。
- `Runner`
- `Backend`
-第一切片只要求 `turn`、`interrupt`、`status` 和分页 `events`。不要一开始就做 `steer`、`resume`、judge/retry、UI、跨 backend kind 的自动路由或自动调度。`v0.1` 可做同一 Codex stdio backend kind 下的显式 profile 选择。
+第一切片只要求 `turn`、`interrupt`、`status` 和分页 `events`。不要一开始就做 UI、跨 backend kind 的自动路由、OA/Event/integrations 或自动调度。`v0.1` 可做同一 Codex stdio backend kind 下的显式 profile 选择;Queue 首版可以定义 task/attempt/retry/judge 的数据边界,但最终交互验收必须走真实 CLI。
### M1: 最小 Runner 加一个 Backend
@@ -118,11 +122,11 @@ AgentRun 必须按纵向切片推进,不要一开始大规模并行开发。
- stale lease recovery 留下显式 audit event;
- scheduler rollout 不等同于 active run failure。
-### M5: Tenant Canary 集成
+### M5: Queue 与 Tenant Canary 集成
核心生命周期证明后,再接入 UniDesk 和 HWLAB canary:
-- UniDesk 可以新增 `agentrun` CLI/API route,同时保持现有 Code Queue 不变。
+- UniDesk Code Queue 新任务入口直接收敛到 AgentRun Queue,旧 Code Queue 只归档或只读。
- HWLAB 可以把一个窄范围 Code Agent canary 路由到 AgentRun。
- 每个 run 都必须显式带 tenant policy、workspace、secret scope 和 trace sink。
@@ -207,6 +211,7 @@ Event 是 append-only,并按 seq 分页:
- `agentrun_runners`:registered runner identity、placement 和 heartbeat;
- `agentrun_backends`:backend profile、capabilities、capacity 和 health;
- `agentrun_leases`:当前 ownership 和 expiry。
+- `agentrun_queue_tasks`、`agentrun_queue_attempts`、`agentrun_task_summaries`、`agentrun_attempt_summaries`、`agentrun_queue_stats`、`agentrun_queue_read_cursors` 和 `agentrun_queue_judge_runs`:Queue task、attempt、summary、stats、read cursor 和 judge durable facts;完整边界见 [spec-v01-queue.md](spec-v01-queue.md)。
Postgres DSN、provider credential 和未来 tenant credential 的分发边界见 [spec-v01-secret-distribution.md](spec-v01-secret-distribution.md);Codex 测试凭据通过 Kubernetes Secret projection 注入 `~/.codex/auth.json` 与 `~/.codex/config.toml`,source、GitOps、event、trace、日志和 CLI 输出都不得保存 Secret 明文。
@@ -222,14 +227,14 @@ Control-plane service 应是长驻服务;runner 应是短生命周期 Job 或
第一版 MVP 不包含:
-- 迁移 UniDesk Code Queue;
- 全局替换 HWLAB Code Agent;
- 跨 backend kind 的自动多 backend 路由;
- 最小诊断之外的 UI;
-- judge/retry 自动化;
- 自动扩缩容;
- 跨集群调度;
- SSE/WebSocket 流式输出;
+- Event System、OA Event Flow、OA sink、GitHub sink、notification sink 或 integrations 表;
+- 迁移旧 Code Queue 历史数据;
- 完整权限系统;
- production rollout 自动化。
diff --git a/docs/reference/spec-v01-backend-adapter.md b/docs/reference/spec-v01-backend-adapter.md
index e2ab2c9..8f43819 100644
--- a/docs/reference/spec-v01-backend-adapter.md
+++ b/docs/reference/spec-v01-backend-adapter.md
@@ -1,6 +1,6 @@
# v0.1 Backend Adapter 规格
-Backend adapter 是 runner 与具体 Code Agent 工具之间的适配层。它隐藏 Codex、OpenCode、Claude Code、host-native 或 Windows-native 的内部协议,把输入、事件、错误和 terminal status 归一化为 AgentRun 公共模型。
+Backend adapter 是 runner 与具体 Code Agent 工具之间的适配层。`v0.1` 的正式执行路径只保留 Codex/Codex-compatible backend profile;MiniMax/OpenCode 废弃,不作为 fallback、judge backend 或 Queue 首版能力。Adapter 把输入、事件、错误和 terminal status 归一化为 AgentRun 公共模型。
## 在系统中的职责划分
diff --git a/docs/reference/spec-v01-cli.md b/docs/reference/spec-v01-cli.md
index e42b2ae..8b4b34a 100644
--- a/docs/reference/spec-v01-cli.md
+++ b/docs/reference/spec-v01-cli.md
@@ -5,6 +5,8 @@ AgentRun CLI 是 `v0.1` 的受控人工操作和验收入口。它必须遵循 U
## 在系统中的职责划分
- 创建 run、查询 run、提交 command、查询 command、分页读取 events。
+- 创建和查询 Queue task,查看 Queue stats/read/commander,并从 Queue task 获取 Session 引用。
+- 查询 Session 输出、trace 和会话控制;Queue 命令不得代理输出或 trace。
- 手动启动 runner,本地 process 或 Kubernetes Job 均必须快速返回 job/process identity 和 logPath。
- 查询 backend capability 和 manager health。
- 为综合联调提供 CLI 交互面;不得替代 RESTful API 合同测试。
@@ -49,6 +51,17 @@ CLI 官方 TypeScript 入口固定为 `scripts/agentrun-cli.ts`。在 G14 非交
./scripts/agentrun secrets codex render --dry-run [--profile codex|deepseek] [--codex-home
]
./scripts/agentrun backends list
./scripts/agentrun server start|status
+./scripts/agentrun queue submit --json-file
+./scripts/agentrun queue list [--queue ] [--state ] [--cursor ] [--limit ]
+./scripts/agentrun queue show
+./scripts/agentrun queue stats [--queue ]
+./scripts/agentrun queue commander [--queue ]
+./scripts/agentrun queue read
+./scripts/agentrun queue cancel [--reason ]
+./scripts/agentrun sessions show
+./scripts/agentrun sessions output [--cursor ] [--limit ]
+./scripts/agentrun sessions trace [--cursor ] [--limit ]
+./scripts/agentrun sessions control --json-file
```
具体参数可以在实现时按代码结构微调,但行为必须保持:
@@ -61,6 +74,8 @@ CLI 官方 TypeScript 入口固定为 `scripts/agentrun-cli.ts`。在 G14 非交
- `server logs` 返回有界日志摘要,并指向完整日志文件或 Kubernetes pod identity。
- `secrets codex render --dry-run` 返回 Codex stdio profile Secret 创建计划、输入文件 bytes/hash、SecretRef、manifest 摘要和 apply 命令形状;`--profile codex` 默认 Secret name 为 `agentrun-v01-provider-codex`,`--profile deepseek` 默认 Secret name 为 `agentrun-v01-provider-deepseek`;它不得输出 Secret value 或执行 Kubernetes 写操作。
- `backends list` 必须显示 `codex` 与 `deepseek` profile 的 backendKind、protocol、transport、command、requiredSecretKeys 和状态;不得因为 `deepseek` 尚未配置 Secret 就隐藏 capability。
+- `queue show` 必须返回 task/attempt summary、state、read cursor、stats 相关字段和 `sessionPath`;不得返回或代理完整 output/trace。
+- `sessions output` 与 `sessions trace` 是输出和 trace 的唯一 CLI 查询入口;不得新增 `queue output` 或 `queue trace` 兼容命令。
## 配置与 Secret 边界
@@ -91,6 +106,10 @@ CLI 官方 TypeScript 入口固定为 `scripts/agentrun-cli.ts`。在 G14 非交
阅读本文、[spec-v01-backend-codex.md](spec-v01-backend-codex.md) 和 [spec-v01-validation.md](spec-v01-validation.md),然后用正式 CLI 分别创建 `backendProfile=codex` 与 `backendProfile=deepseek` 的 run,按 `codex -> deepseek -> codex` 顺序执行真实 runner。确认 CLI 输出非空 JSON,backend_status 显示正确 profile/backendKind/protocol,缺失 `deepseek` SecretRef 时返回 `secret-unavailable`,不会 fallback 到 `codex`。
+### T6 Queue 与 Session CLI 分层
+
+阅读本文和 [spec-v01-queue.md](spec-v01-queue.md),然后用正式 CLI 创建一个 Queue task,轮询 `queue list/show/stats/commander/read`,再使用 `queue show` 返回的 `sessionPath` 调用 `sessions output/trace`。确认 Queue 命令只返回 summary/stats/read/sessionPath,不代理 output/trace;Session 命令能查询输出和 trace。最终交互验收必须使用真实 runtime,不使用 mock,不写自动交互脚本。
+
## 规格的实现情况
| 规格项 | 状态 | 说明 |
@@ -101,5 +120,6 @@ CLI 官方 TypeScript 入口固定为 `scripts/agentrun-cli.ts`。在 G14 非交
| runner start/job | 已实现 | `runner start` 可执行 host process runner;`runner job --dry-run` 可渲染 Kubernetes Job JSON;`runner job` 正式路径通过 manager REST 创建 Kubernetes Job,支持 `--idempotency-key` 并快速返回 job identity、SecretRef、retention 和轮询命令。 |
| runner jobs/job-status | 已实现 | CLI 通过 manager REST 查询 runner Job 持久记录和最小状态摘要,不直连 Kubernetes、不读取 Secret 值。 |
| result/cancel CLI | 已实现 | `runs result`、`commands result`、`runs cancel` 和 `commands cancel` 均调用 manager REST,不维护独立状态。 |
+| Queue/Session CLI | 待实现 | 规格见 [spec-v01-queue.md](spec-v01-queue.md);Queue 命令只返回 sessionPath,输出和 trace 进入 Session 命令。 |
| CLI 测试规格 | 已定义/已验证主闭环 | 综合联调见 [spec-v01-validation.md](spec-v01-validation.md);每次发布仍按手动交互验收复跑。 |
| `deepseek` profile CLI | 已实现/已通过主闭环 | `secrets codex render --profile deepseek`、`backends list`、`runner start --backend`、`runner job` 和 JSON 错误可见性已实现;真实 CLI/RESTful 联调已通过 `codex -> deepseek -> codex` 切换主闭环。 |
diff --git a/docs/reference/spec-v01-documentation-governance.md b/docs/reference/spec-v01-documentation-governance.md
index 58b4053..dd696e1 100644
--- a/docs/reference/spec-v01-documentation-governance.md
+++ b/docs/reference/spec-v01-documentation-governance.md
@@ -30,6 +30,7 @@
- `spec-v01-postgres.md`:Postgres durable store、schema migration 和 DB SecretRef。
- `spec-v01-secret-distribution.md`:Code Agent provider credential、Postgres DSN 和运行时 Secret 分发。
- `spec-v01-runtime-assembly.md`:runner/backend 启动前的四要素 RuntimeAssembly 装配模型;其他 spec 只交叉引用,不重复定义四要素字段。
+- `spec-v01-queue.md`:AgentRun Queue 直接吸收 UniDesk Code Queue 的 RESTful API、CLI、数据模型、Session 分层和验收规格。
- `spec-v01-validation.md`:两层验证模型、自测试和综合联调验收。
- `spec-v01-agentrun-mgr.md`:manager REST API、tenant boundary、runner claim、event/status authority。
- `spec-v01-agentrun-runner.md`:短生命周期 runner、claim/poll/report、日志和 failureKind。
@@ -60,6 +61,7 @@
- 服务总览规格:[spec-v01-services.md](spec-v01-services.md)。
- Postgres durable store 规格:[spec-v01-postgres.md](spec-v01-postgres.md)。
- Secret/provider credential 分发规格:[spec-v01-secret-distribution.md](spec-v01-secret-distribution.md)。
+- Queue 吸收规格:[spec-v01-queue.md](spec-v01-queue.md)。
- 验证模型规格:[spec-v01-validation.md](spec-v01-validation.md)。
- Manager 服务规格:[spec-v01-agentrun-mgr.md](spec-v01-agentrun-mgr.md)。
- Runner 服务规格:[spec-v01-agentrun-runner.md](spec-v01-agentrun-runner.md)。
@@ -71,7 +73,7 @@
## 验收标准
- `AGENTS.md` 索引本文和其他 `spec-v01-*` 规格。
-- `docs/reference/` 中存在 `spec-v01-documentation-governance.md`、`spec-v01-services.md`、`spec-v01-cicd.md`、`spec-v01-postgres.md`、`spec-v01-secret-distribution.md`、`spec-v01-runtime-assembly.md`、`spec-v01-validation.md`、`spec-v01-agentrun-mgr.md`、`spec-v01-agentrun-runner.md`、`spec-v01-backend-adapter.md`、`spec-v01-backend-codex.md`、`spec-v01-cli.md` 和 `spec-v01-scheduler.md`。
+- `docs/reference/` 中存在 `spec-v01-documentation-governance.md`、`spec-v01-services.md`、`spec-v01-cicd.md`、`spec-v01-postgres.md`、`spec-v01-secret-distribution.md`、`spec-v01-runtime-assembly.md`、`spec-v01-queue.md`、`spec-v01-validation.md`、`spec-v01-agentrun-mgr.md`、`spec-v01-agentrun-runner.md`、`spec-v01-backend-adapter.md`、`spec-v01-backend-codex.md`、`spec-v01-cli.md` 和 `spec-v01-scheduler.md`。
- `AGENTS.md` 和 `docs/reference/` 不得把旧 `agentrun_dev`、`agentrun_prod`、`G14:/root/agentrun` 或 `/root/agentrun` 写成当前 source worktree、namespace、发布目标或验收目标;只允许在废弃说明和历史背景中提及。
- `docs/` 根目录不新增临时 Markdown 报告或 JSON dump。
- 仓库根目录不存在 `TEST.md`;测试场景维护在对应 `spec-v01-*.md` 的“测试规格”小节。
diff --git a/docs/reference/spec-v01-postgres.md b/docs/reference/spec-v01-postgres.md
index b2b506b..954fdf7 100644
--- a/docs/reference/spec-v01-postgres.md
+++ b/docs/reference/spec-v01-postgres.md
@@ -4,7 +4,7 @@
## 在系统中的职责划分
-- 保存 `agentrun-mgr` 的 durable facts:runs、commands、events、runners、runner_jobs、sessions、backends、leases 和 migration ledger。
+- 保存 `agentrun-mgr` 的 durable facts:runs、commands、events、runners、runner_jobs、sessions、backends、leases、Queue facts 和 migration ledger。
- 为 runner claim、command ack、event append、heartbeat 和 terminal status 提供事务边界。
- 与 `agentrun-v01` namespace 绑定;不复用未来 `v0.2`、`v0.3` 或旧 dev/prod 数据库。
- 不向公网开放,不允许普通 runner 直连写入不属于自己的 run facts。
@@ -36,10 +36,17 @@ Secret 名称和 key 可以在实现时按 Kubernetes 命名限制微调,但
- `agentrun_runners`:registered runner identity、placement、heartbeat 和 capability snapshot。
- `agentrun_runner_jobs`:手动 runner Job 的 idempotency key、payload hash、attempt/job identity 和创建响应。
- `agentrun_sessions`:SessionRef 到 backend thread/cache identity 的最小映射,不保存 credential 文件或 Secret 值。
+- `agentrun_queue_tasks`:AgentRun Queue task identity、queue/lane、tenant/project、priority、state、backendProfile、workspace/resource 引用和 version。
+- `agentrun_queue_attempts`:task attempt identity、runId、commandId、runnerJobId、sessionId、state、failureKind、retry index 和 timestamps。
+- `agentrun_task_summaries` / `agentrun_attempt_summaries`:Queue 列表、详情和 commander 使用的轻量摘要;不能从 Core trace 反推 overview。
+- `agentrun_queue_stats`:按 queue/lane/state/backendProfile 聚合的统计水位。
+- `agentrun_queue_read_cursors`:按 user/agent/client 记录 Queue 已读水位。
+- `agentrun_queue_judge_runs`:judge 请求、结果、failureKind、重试建议和 attempt 关联。
+- `agentrun_task_references`:任务的显式 issue/PR/repo/commit/doc 引用,不保存 UniDesk 隐式环境提示。
- `agentrun_backends`:backend profile、capabilities、capacity 和 health。
- `agentrun_leases`:run ownership、expiry 和 stale recovery marker。
-第一版实现可以把 backend-specific payload 存在 JSONB 字段中,但 run、command、event、runner、backend 和 lease 的主键、状态、时间戳和索引字段必须是一等列,不能把所有事实塞进一个不可查询 JSON blob。
+第一版实现可以把 backend-specific payload 存在 JSONB 字段中,但 run、command、event、runner、backend、lease 和 Queue 的主键、状态、时间戳和索引字段必须是一等列,不能把所有事实塞进一个不可查询 JSON blob。Queue 首版不得新增 OA/Event/integrations/notification 这类外部动作表;如后续需要 connector/sink,必须另立规格。
## 访问边界
diff --git a/docs/reference/spec-v01-queue.md b/docs/reference/spec-v01-queue.md
new file mode 100644
index 0000000..8b813b6
--- /dev/null
+++ b/docs/reference/spec-v01-queue.md
@@ -0,0 +1,169 @@
+# v0.1 AgentRun Queue 规格
+
+本文定义 AgentRun Queue 直接吸收 UniDesk Code Queue 的长期规格。AgentRun Queue 是 AgentRun 内部任务队列基础设施,不是 UniDesk Code Queue 的适配层、代理层或兼容层。
+
+## 核心决策
+
+- 直接吸收 UniDesk Code Queue 的队列产品能力,不做 adapter 过渡、不双写、不长期兼容旧 Code Queue API、CLI 或 UI。
+- 新任务只写入 AgentRun Queue;旧 UniDesk Code Queue 停止接收新任务,历史数据不迁移到 AgentRun,只在 UniDesk 侧保留归档或只读查询。
+- 第一版只做 RESTful API、CLI 和轻量轮询,不做 Event System、OA Event Flow、OA sink、GitHub sink、notification sink 或 integrations 表。
+- Queue 和 Session 分层:Queue 查询返回 `sessionPath`;输出、trace、debug 和会话控制统一转到 Session API/CLI。
+- Queue 列表、统计、已读状态和 commander 视图必须直接查询 Queue summary/stats/read 模型,不从 Core execution trace 或 Session trace 反推。
+- 废弃 MiniMax 和 OpenCode 支持。第一版只保留 Codex/Codex-compatible backend profile,例如现有 `codex` 与 `deepseek` profile。
+- 不吸收 UniDesk 环境提示。执行上下文必须显式来自 workspace/resource/profile/tool/SecretRef 等 AgentRun 合同,不能继承旧 Code Queue 的隐式 env hint。
+
+## 职责边界
+
+| 层 | 负责 | 不负责 |
+| --- | --- | --- |
+| AgentRun Queue | task、queue/lane、attempt、priority、retry policy、judge、task summary、attempt summary、queue stats、read cursor、commander 聚合 | 输出、trace、session 详情、OA、notification、GitHub action、旧 Code Queue 兼容 |
+| AgentRun Session | execution session、输出、trace、命令流、debug/audit 详情、会话控制 | queue 列表、queue 统计、read cursor、commander 聚合 |
+| AgentRun Core | run、command、runner job、lease、terminal status、backend 执行事实 | 业务队列产品语义、queue overview、外部协作 sink |
+| AgentRun Scheduler | pending task/attempt 扫描、capacity、runner assignment、backoff、stale lease recovery | 直接执行 backend、维护旧 UniDesk scheduler、决定 tenant 业务授权 |
+| UniDesk Legacy Code Queue | 旧数据只读归档和停用期排障 | 新任务入口、长期兼容层、执行 authority |
+
+Queue 可以保存 attempt 与 Core run/command/runner job 的引用,但 Queue 不直接暴露 Core trace。需要看输出或 trace 时,调用方必须从 Queue 返回的 `sessionPath` 进入 Session API。
+
+## RESTful API
+
+第一版 Queue 公共 API 只使用短 HTTP JSON 请求和轻量轮询:
+
+```http
+POST /api/v1/queue/tasks
+GET /api/v1/queue/tasks?queue=&state=&cursor=&limit=&updatedAfter=
+GET /api/v1/queue/tasks/:taskId
+POST /api/v1/queue/tasks/:taskId/cancel
+POST /api/v1/queue/tasks/:taskId/read
+GET /api/v1/queue/stats?queue=
+GET /api/v1/queue/commander?queue=
+```
+
+Session 公共 API 承接输出、trace 和会话控制:
+
+```http
+GET /api/v1/sessions/:sessionId
+GET /api/v1/sessions/:sessionId/output?cursor=&limit=
+GET /api/v1/sessions/:sessionId/trace?cursor=&limit=
+POST /api/v1/sessions/:sessionId/control
+```
+
+Queue task 详情必须返回 session 引用,而不是代理输出或 trace:
+
+```json
+{
+ "taskId": "qt_123",
+ "state": "running",
+ "summary": "正在修改队列规格",
+ "version": 42,
+ "latestAttempt": {
+ "attemptId": "qa_456",
+ "state": "running",
+ "runId": "run_789",
+ "commandId": "cmd_001",
+ "sessionId": "sess_abc",
+ "sessionPath": "/api/v1/sessions/sess_abc"
+ }
+}
+```
+
+`version`、`changeSeq`、`updatedAt` 或 `cursor` 是 Queue 自身的轮询水位,不是 Event System。它只服务于 RESTful 增量查询和 CLI 轮询。
+
+## CLI 命令族
+
+AgentRun CLI 必须提供 Queue 和 Session 两组命令。Queue 命令只操作队列资源:
+
+```bash
+./scripts/agentrun queue submit --json-file
+./scripts/agentrun queue list [--queue ] [--state ] [--cursor ] [--limit ]
+./scripts/agentrun queue show
+./scripts/agentrun queue stats [--queue ]
+./scripts/agentrun queue commander [--queue ]
+./scripts/agentrun queue read
+./scripts/agentrun queue cancel [--reason ]
+```
+
+Session 命令负责输出、trace 和会话控制:
+
+```bash
+./scripts/agentrun sessions show
+./scripts/agentrun sessions output [--cursor ] [--limit ]
+./scripts/agentrun sessions trace [--cursor ] [--limit ]
+./scripts/agentrun sessions control --json-file
+```
+
+不得新增 `queue output`、`queue trace` 或 `queue session/*` 这类子路径代理。`queue show` 最多打印 `sessionPath` 和下一步 `sessions ...` 命令。
+
+## 数据模型方向
+
+Queue 首版新增或扩展的稳定表方向:
+
+- `agentrun_queue_tasks`:任务 identity、tenant/project、queue/lane、title、priority、state、backendProfile、workspace/resource 引用、创建者、version 和 timestamps。
+- `agentrun_queue_attempts`:attempt identity、taskId、runId、commandId、runnerJobId、sessionId、state、failureKind、retry index 和 timestamps。
+- `agentrun_task_summaries`:task 级摘要、当前状态、最新 attempt、最新 sessionPath、最后用户可见摘要和统计字段。
+- `agentrun_attempt_summaries`:attempt 级摘要、terminalStatus、failureKind、runner identity、耗时和有界输出摘要引用。
+- `agentrun_queue_stats`:按 queue/lane/state/backendProfile 聚合的轻量统计,可由 Queue 写入或按 Queue 表查询生成。
+- `agentrun_queue_read_cursors`:按 user/agent/client 和 queue/task 记录已读水位。
+- `agentrun_queue_judge_runs`:judge 请求、结果、failureKind、重试建议和与 attempt 的关联。
+- `agentrun_task_references`:issue、PR、repo、commit、文档或外部上下文的显式引用,不保存 UniDesk 隐式环境提示。
+
+第一版不得新增 `integrations`、`notification_deliveries`、`observability_exports`、`oa_events`、`oa_sinks` 或类似外部动作表。GitHub、notification、OA、外部审计和协作动作如果后续需要,必须作为独立 connector/sink 规格追加,不能混入 Queue 首版数据模型。
+
+## Code Queue 吸收映射
+
+| 旧 Code Queue 能力 | AgentRun 目标 | 吸收方式 | 不保留内容 |
+| --- | --- | --- | --- |
+| task 记录 | `agentrun_queue_tasks` | 直接建模为 Queue task | 旧 API 字段兼容 |
+| queueId、move、merge | queue/lane 字段和 Queue API | 保留队列归类与移动语义 | 旧 UI 操作合同 |
+| attempt | `agentrun_queue_attempts` + Core run/command/runner job | attempt 引用真实执行资源 | 旧 attempt 输出结构 |
+| `processQueue` / `runTask` | AgentRun Scheduler | 由 Scheduler 扫描 pending task/attempt 并创建 runner job | UniDesk Code Queue scheduler |
+| `runCodexTurn` | Codex app-server stdio backend | 复用协议和 failure 分类经验 | 环境专用路径和明文凭据 |
+| MiniMax/OpenCode 执行 | 无 | 废弃 | fallback、兼容配置、judge backend |
+| activeRuns / active slot | Scheduler capacity 和 lease | 合并进 AgentRun 调度/lease 模型 | 旧内存状态 authority |
+| judge | `agentrun_queue_judge_runs` | 使用 Codex-compatible judge profile 或规则 judge | MiniMax judge |
+| prompt history / steer / resume / cancel | Queue audit + Session/Core control | Queue 记录任务级控制意图,执行细节走 Session/Core | 直接向旧 runner 写进程状态 |
+| output / trace view | Session API | Queue 只返回 `sessionPath` 和 summary | Queue 代理输出或 trace |
+| readAt | `agentrun_queue_read_cursors` | 保留已读水位 | 从 trace 推导已读 |
+| commander | `agentrun_queue_stats` + `agentrun_task_summaries` | 直接从 Queue summary/stats 聚合 | 从 Core trace 反推 commander |
+| task references | `agentrun_task_references` | 保留显式引用 | 隐式环境提示 |
+| GitHub / notification / OA | deferred connector/sink | 首版不做 | 首版 integrations 表 |
+| 旧 Postgres task 表 | UniDesk archive | 不迁移历史数据 | 作为 AgentRun source of truth |
+| UniDesk Web UI | deferred client surface | 首版不做 | Web/Playwright 验收 |
+
+## 实施顺序
+
+| 阶段 | 目标 | 验收重点 |
+| --- | --- | --- |
+| Q0 | 固化 Queue SPEC 和 schema migration 计划 | 文档与旧 Code Queue 兼容口径不冲突。 |
+| Q1 | Queue RESTful API 和 CLI 骨架 | submit/list/show/stats/read/cancel 全部短返回 JSON,不触发真实执行也能保存 task。 |
+| Q2 | attempt 到 Core run/command/runner job 的真实闭环 | Queue submit 产生 attempt,Scheduler 或受控 dispatch 创建真实 runner job。 |
+| Q3 | Session 引用边界 | `queue show` 返回 `sessionPath`,输出和 trace 只能通过 `sessions ...` 查询。 |
+| Q4 | summary/stats/read/commander | Queue overview、stats、read cursor、commander 全部直接查 Queue 模型。 |
+| Q5 | retry/judge/cancel | retry/backoff、judge、cancel 与 attempt/session/core 状态一致。 |
+| Q6 | 冻结旧 UniDesk Code Queue 新任务入口 | 新任务只进入 AgentRun Queue;旧系统只归档或只读。 |
+
+## 验收规格
+
+单元测试和组件自测试可以使用 mock、fake backend 或内存 store。最终 CLI 交互验收必须在真实 AgentRun runtime 上手动执行,不使用 mock,不写自动交互脚本,不做 Web 或 Playwright 验收。
+
+首版通过标准:
+
+- `queue submit/list/show/stats/read/cancel` 均通过正式 CLI 和 RESTful API 返回非空 JSON。
+- 至少一个真实 task 通过 Queue attempt 触发真实 Codex/Codex-compatible backend,并进入 terminal 状态。
+- `queue show` 返回 `sessionPath`;输出、trace 和会话控制只能通过 Session API/CLI 完成。
+- Queue overview、stats、read cursor 和 commander 视图来自 Queue summary/stats/read 表或等价 Queue 查询,不读取 Core trace 反推。
+- 不存在 OA/Event/OA sink/GitHub/notification/integrations 首版表和首版必需流程。
+- MiniMax/OpenCode 相关入口、配置、fallback 和 judge 路线不作为 AgentRun Queue 首版能力。
+- 旧 UniDesk Code Queue 不接收新任务;历史数据不迁移到 AgentRun。
+- CLI、API、日志、summary、trace 和 Session 输出不泄露 Secret value、token、DSN password 或 URL credential。
+
+## 规格的实现情况
+
+| 规格项 | 状态 | 说明 |
+| --- | --- | --- |
+| AgentRun Queue 直接吸收规格 | 已定义 | 本文为 Queue 吸收 Code Queue 的首版权威规格。 |
+| Queue RESTful API | 待实现 | 计划通过 `agentrun-mgr` 暴露,仍使用短请求和轻量轮询。 |
+| Queue CLI | 待实现 | 计划加入 `queue ...` 和 `sessions ...` 命令族。 |
+| Session API/CLI | 待实现 | Queue 只返回 `sessionPath`;Session 层承接输出、trace 和控制。 |
+| Scheduler 接入 | 待实现 | 旧 Code Queue scheduler 不保留;AgentRun Scheduler 是唯一调度方向。 |
+| OA/Event/integrations | 不采用 | 首版不做,后续如需外部 connector/sink 必须单独立规格。 |
+| 历史迁移 | 不采用 | 旧 Code Queue 历史数据不迁移到 AgentRun。 |
diff --git a/docs/reference/spec-v01-scheduler.md b/docs/reference/spec-v01-scheduler.md
index 220b498..a5f9cc2 100644
--- a/docs/reference/spec-v01-scheduler.md
+++ b/docs/reference/spec-v01-scheduler.md
@@ -1,11 +1,12 @@
# v0.1 Scheduler Deferred 规格
-`agentrun-scheduler` 是 AgentRun 后续自动调度器。它扫描 pending runs,选择 backend/profile/capacity,创建 runner Jobs,并处理 stale lease recovery。`v0.1` 保留该规格用于边界收敛,但自动 scheduler 不作为第一阶段交付和发布通过条件。
+`agentrun-scheduler` 是 AgentRun 后续自动调度器。它扫描 pending runs 或 Queue task attempts,选择 backend/profile/capacity,创建 runner Jobs,并处理 stale lease recovery。`v0.1` 保留该规格用于边界收敛,但自动 scheduler 不作为第一阶段交付和发布通过条件。
## 在系统中的职责划分
- 只在 M1-M3 稳定后进入实现;MVP 先通过 CLI/manual dispatch 启动 runner。
- 未来负责 pending run scan、capacity selection、runner Job creation、stale lease recovery 和 scheduler restart recovery。
+- AgentRun Queue 吸收 UniDesk Code Queue 后,Scheduler 是唯一长期调度方向;旧 UniDesk Code Queue scheduler 不保留。
- 不直接执行 backend,不直接写 provider events,不绕过 `agentrun-mgr` claim/report。
- 不替代 tenant 业务授权;只能消费 manager 已保存的 run policy。
diff --git a/docs/reference/spec-v01-services.md b/docs/reference/spec-v01-services.md
index 68d366d..91a5cc9 100644
--- a/docs/reference/spec-v01-services.md
+++ b/docs/reference/spec-v01-services.md
@@ -6,13 +6,14 @@
## 在系统中的职责划分
-AgentRun 是面向 UniDesk 与 HWLAB 的共享 Code Agent 执行基础设施。`v0.1` 只做最小纵向闭环,不替换 UniDesk Code Queue,也不替换 HWLAB 现有 Code Agent 路径。
+AgentRun 是面向 UniDesk 与 HWLAB 的共享 Code Agent 执行基础设施。`v0.1` 先完成最小纵向闭环;下一阶段 UniDesk Code Queue 的队列产品能力直接吸收到 AgentRun Queue,不做 adapter 过渡、双写或旧 API/UI/CLI 兼容层。HWLAB 现有 Code Agent 路径仍按 canary 节奏接入,不由 Queue 吸收规格替代 HWLAB 业务路由。
- `agentrun-mgr` 是公共 RESTful API 和 durable facts authority,负责 run、command、event、runner、backend、lease 的持久状态和鉴权前置边界。
- `agentrun-runner` 是短生命周期 per-run 或 per-attempt 执行者,必须从 manager claim run,并把 event、heartbeat 和 terminal status 写回 manager。
- Backend adapter 隐藏具体 Agent 工具协议,`v0.1` 使用一个真实 Codex stdio backend kind 形成闭环,并在该 kind 下支持 `codex` 与 `deepseek` profile;其他 backend kind 不进入第一波实现。
- AgentRun CLI 是受控操作入口,负责创建 run、提交 command、轮询 events、手动启动 runner 和查看 backend capability;CLI 不等待完整模型 turn。
- RuntimeAssembly 是 runner/backend 启动前的四要素装配模型,负责把 backend image、profile、session 和 Git-only resource bundle 统一成受控 Job 输入;四要素权威规格见 [spec-v01-runtime-assembly.md](spec-v01-runtime-assembly.md)。
+- AgentRun Queue 是吸收 UniDesk Code Queue 的任务队列层,负责 task、attempt、retry、judge、summary、stats、read cursor 和 commander 聚合;Queue 查询只返回 Session 引用,输出和 trace 进入 Session API/CLI。权威规格见 [spec-v01-queue.md](spec-v01-queue.md)。
- Scheduler 是后续自动派发能力;`v0.1` 可以保留规格和状态字段,但不把自动调度作为第一阶段验收目标。
## HWLAB 手动调度服务目标
@@ -38,7 +39,7 @@ AgentRun `v0.1` 的自研组件优先使用 Bun + TypeScript 实现:`agentrun-
| `codex` | `codex-app-server-stdio` | 保留,P0 | `agentrun-v01-provider-codex` | 现有 GPT/Codex profile,必须保持默认行为不回归。 |
| `deepseek` | `codex-app-server-stdio` | 新增,P0 | `agentrun-v01-provider-deepseek` | DeepSeek-compatible Codex profile;通过 profile 专属 `auth.json`/`config.toml` 或等价 SecretRef 配置上游、模型和 base URL。 |
-完整多 backend 路由仍然 deferred,含 OpenCode、Claude Code、host-native、Windows-native、scheduler capacity selection 和跨 backend 自动选择。`v0.1` 只允许 manager/runner 按 run 中的 `backendProfile` 显式选择 `codex` 或 `deepseek`,并在 capability 中报告两者共享同一个 `protocol=codex-app-server-jsonrpc-stdio` 与 `transport=stdio`。
+完整多 backend 路由仍然 deferred。`v0.1` 只允许 manager/runner 按 run 中的 `backendProfile` 显式选择 `codex` 或 `deepseek`,并在 capability 中报告两者共享同一个 `protocol=codex-app-server-jsonrpc-stdio` 与 `transport=stdio`。MiniMax/OpenCode 废弃,不进入 AgentRun Queue 首版,也不作为 fallback 或 judge backend。
`codex` 与 `deepseek` 之间不得隐式 fallback:缺少 `deepseek` SecretRef 时必须失败为 `secret-unavailable`,不能改用 `codex` Secret;`deepseek` 运行失败也不能重试到 `codex`。同一轮发布的综合联调必须证明 `codex -> deepseek -> codex` 的切换不会污染彼此的 SecretRef、`CODEX_HOME`、模型或 upstream 配置。
@@ -88,7 +89,8 @@ 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` |
-| 多 backend 路由 | 系统能力 | Deferred | `v0.1` 不做跨 backend kind 的自动路由和调度;仅支持同一 Codex stdio backend kind 下的 `codex`/`deepseek` profile 手动选择。 | 后续版本 spec |
+| 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` profile 手动选择。MiniMax/OpenCode 不进入 Queue 首版。 | 后续版本 spec |
| UI | 前端 | Deferred | `v0.1` 不要求独立 UI;UniDesk/HWLAB canary 可通过 CLI/API 验证。 | 后续版本 spec |
| judge/retry 自动化 | 系统能力 | Deferred | `v0.1` 只定义基础 terminal 和 failure visibility,不实现复杂 judge。 | 后续版本 spec |
@@ -184,6 +186,7 @@ Manager 负责校验、保存和返回这些字段;runner 只能消费已保
| Postgres durable store 规格 | 已定义 | 见 [spec-v01-postgres.md](spec-v01-postgres.md)。 |
| Secret 分发规格 | 已定义 | 见 [spec-v01-secret-distribution.md](spec-v01-secret-distribution.md)。 |
| RuntimeAssembly 规格 | 已定义 | 见 [spec-v01-runtime-assembly.md](spec-v01-runtime-assembly.md)。 |
+| AgentRun Queue 规格 | 已定义 | 见 [spec-v01-queue.md](spec-v01-queue.md)。 |
| HWLAB 手动调度接入规格 | 已定义 | 见 [spec-v01-hwlab-manual-dispatch.md](spec-v01-hwlab-manual-dispatch.md)。 |
| 两层验证规格 | 已定义 | 见 [spec-v01-validation.md](spec-v01-validation.md)。 |
| `agentrun-mgr` 服务规格 | 已定义 | 见 [spec-v01-agentrun-mgr.md](spec-v01-agentrun-mgr.md)。 |
diff --git a/docs/reference/spec-v01-validation.md b/docs/reference/spec-v01-validation.md
index 12e2e22..ae30cc7 100644
--- a/docs/reference/spec-v01-validation.md
+++ b/docs/reference/spec-v01-validation.md
@@ -23,6 +23,7 @@
- CLI:默认 JSON、空 stdout 失败、长操作短返回、错误结构化。
- Postgres adapter:migration、事务、run/command/event round-trip、重启后可查询。
- Secret 分发:SecretRef schema、missing secret failure、redaction。
+- AgentRun Queue:task schema、attempt 状态机、summary/stats/read cursor、Queue 与 Session 引用边界、MiniMax/OpenCode 废弃入口和 redaction。
- HWLAB v0.2 基线承接:可以用 fake backend/临时 manager 做组件自测试,覆盖 event contract、result completed 防误判、bounded output、runner job status、SessionRef profile 隔离、ResourceBundleRef 失败分类和 backend preflight redaction;这些自测试不能替代真实 `agentrun-v01` CLI 交互验收。
自测试应使用 Bun + TypeScript 运行,Codex 相关自测试可以使用 fake app-server JSON-RPC client 模拟 `initialize`、`thread/start`、`thread/resume`、`turn/start`、assistant 输出、协议错误、timeout 和 transport close。
@@ -184,6 +185,10 @@ T8 是涉及 backend profile 变更时的综合联调标准;不涉及 backend
阅读本文和 [spec-v01-hwlab-manual-dispatch.md](spec-v01-hwlab-manual-dispatch.md),然后在真实 `agentrun-v01` runtime 中模拟 HWLAB dispatcher:创建 `tenantId=hwlab` 的 run,提交 `turn` command,调用 `POST /api/v1/runs/:runId/runner-jobs`,轮询 command、events 和 result 到 terminal。确认 API 全部短返回 JSON,runner Job identity 可见,events/result 能转换为 HWLAB result/trace,并验证 runner job idempotency、cancel、SessionRef 和 ResourceBundleRef 的真实路径;不能用 mock pass 替代真实 canary。
+### T11 Queue 吸收 Code Queue 手动验收
+
+阅读本文和 [spec-v01-queue.md](spec-v01-queue.md),然后在真实 `agentrun-v01` runtime 中用正式 CLI 手动验证 Queue 首版闭环:创建 Queue task,轮询 `queue list/show/stats/commander/read`,触发真实 Codex/Codex-compatible attempt 到 terminal,确认 `queue show` 返回 `sessionPath`,再通过 `sessions output/trace` 查询输出和 trace。该验收不得使用 mock,不写自动交互脚本,不做 Web/Playwright。确认 Queue overview、stats、read 和 commander 均来自 Queue summary/stats/read 模型,不从 Core trace 或 Session trace 反推;确认不存在首版 OA/Event/OA sink/integrations/notification/GitHub sink 依赖;确认 MiniMax/OpenCode 不作为 Queue 首版能力;确认旧 UniDesk Code Queue 不接收新任务且历史数据不迁移到 AgentRun。
+
## 规格的实现情况
| 规格项 | 状态 | 说明 |
@@ -198,4 +203,5 @@ T8 是涉及 backend profile 变更时的综合联调标准;不涉及 backend
| `deepseek` profile 切换验收 | 已通过主闭环 | 自测试和 CLI smoke 已覆盖 profile registry、Secret render、fake stdio turn、无 fallback 和结构化错误;真实 `agentrun-v01` 已按 T8 完成 `codex -> deepseek -> codex` 切换综合联调。后续涉及 backend profile 的发布仍必须按 T8 复验。 |
| RuntimeAssembly 四要素验收 | 已定义 | T9 收敛为四个最简问题:image digest、profile/SecretRef、session null/deferred、Git-only repo/full commit;session/resource materialization 后续实现时必须补真实联调。 |
| HWLAB 手动调度 canary 验收 | 已定义 | T10 规定 HWLAB dispatcher 通过手动 runner Job API 使用 AgentRun 的真实联调口径;自动 scheduler 不是前置条件。 |
+| Queue 吸收 Code Queue 验收 | 已定义 | T11 规定 Queue RESTful/CLI/Session 分层的真实手动交互验收;mock 只允许在自测试层。 |
| mock 作为发布证据 | 不采用 | mock 只能证明自测试通过。 |