Merge remote-tracking branch 'origin/master' into fix/pac-bootstrap-diagnostics

This commit is contained in:
Codex
2026-07-16 12:03:33 +02:00
11 changed files with 153 additions and 198 deletions
+2 -1
View File
@@ -76,7 +76,8 @@ AipodSpec/Artificer、task manifest 和 queue 渐进披露见 [references/resour
- 新写入口不要用 `codex submit/steer/resume`;这些 legacy mutation 已冻结。
- Artificer 的 runner primary workspace 与任务 Target 必须分开判定:
- runner primary workspace 只装配默认 UniDesk resource bundle、`tools/trans`、skill 和轻量准备;
- 待修改源码只来自派单上下文中的 `targetWorkspace`,且该路径必须是任务专属 worktree
- 待修改源码只来自派单上下文中的显式 `targetWorkspace`
- admission 只校验绝对路径、存在性和目录类型,不读取 Git 状态,也不因 dirty、ahead、behind 或已有 diff 产生 warning/blocker
- 现场探测、Git、编辑、验证和运行面观察必须使用 `trans <Target>:<targetWorkspace>`
- 不得把 runner 本地结果、默认 bundle 的 Git 状态或容器内同名路径当作 Target 验收;
- `unidesk-trans` required skill、runner tools bundle、`unidesk-ssh` SecretRef 和 endpoint presence 缺一项即归为装配失败;
@@ -32,21 +32,22 @@ bun scripts/cli.ts agentrun create task \
- 标题按规范化后的完全匹配解析,重复标题必须改用内部 ID 处理歧义。
- 默认直接执行 live 单命令;不要把 `--dry-run` 作为派单前置步骤;
- live 必须先经 owning YAML 选中的 Target `trans` 重入并完成只读 preflight
- live 必须先经 owning YAML 选中的 Target `trans` 重入并完成最小路径 preflight
- preflight 必须验证:
- task worktree 是 Git 根目录且 clean
- origin 与 `--repo` 一致
- current branch 与 `--ref` 一致;
- HEAD 与 origin 远端 ref commit 一致
- `targetWorkspace` 已显式提供为绝对路径
- Target 上的该路径存在且为目录
- preflight 禁止读取 task worktree Git 状态:
- dirty、ahead、behind、detached 和已有 diff 不产生 warning 或 blocker
- `repo``ref` 只保留为显式任务身份;
- preflight 输出必须披露:
- Target route、repo/ref、projectId、HEAD/remote 关系
- Target route、repo/ref、projectId`gitStateInspected=false`
- 合法的 `workspaceRef.kind/path`
- 从 AipodSpec 继承的默认 resource bundle
- session identity
- provider/tool SecretRef 的对象、key 与 presence
- preflight 失败固定 `mutation=false`,不得创建 task
- preflight 通过后在同一命令内 submit 并自动 dispatch,不要求用户再运行第二条命令;
- 未显式传 `--idempotency-key` 时,由 Target/repo/ref/MDTODO/verified commit 派生稳定键;
- 未显式传 `--idempotency-key` 时,由 Target/repo/ref/targetWorkspace/MDTODO 和完整请求 payload 派生稳定键;
- 幂等重试遇到已有 running 或 terminal task 时,返回既有 attempt/run/session,不重复 dispatch
- 最终输出必须包含 task、attempt、run、command、runner 和 session identity。
- Target live 的默认 human、`-o json``-o yaml` 使用同一份有界投影:
@@ -60,7 +61,7 @@ Artificer 内部执行边界:
- primary workspace 只承载默认 UniDesk bundle、`tools/trans` 和 required skills
- 任务源码操作全部使用 `trans <Target>:<targetWorkspace>`
- `targetWorkspace` 必须是任务专属 worktree
- `targetWorkspace` 是用户显式指定的任务工作目录
- runner 本地结果不得替代 Target 原入口证据;
- `unidesk-trans`、runner tools bundle、`unidesk-ssh` SecretRef 和 endpoint presence 必须同时存在;
- Secret 值不得进入 prompt、task、日志或报告。