docs: 固化 transient env SecretRef 合同

This commit is contained in:
Codex
2026-06-09 23:42:26 +08:00
parent 635f02b1cc
commit 63ae9e2543
2 changed files with 10 additions and 3 deletions
@@ -139,8 +139,10 @@ Run 的 `executionPolicy.secretScope` 只能包含引用,不包含值。provid
- `transientEnv` 只能出现在 `POST /api/v1/runs/:runId/runner-jobs` 请求中;不得写入 `CreateRunInput`、command payload、event payload 或 result envelope 的 value 明文。
- manager 不对 `transientEnv` 条目数量设固定上限,只校验数组形态、env name 合法且唯一、value 非空和单值长度;runner job payload hash 只纳入 env name 与 value hash。
- 当 run 请求 `executionPolicy.secretScope.toolCredentials[].tool=unidesk-ssh` 且调用方未提供 `UNIDESK_MAIN_SERVER_IP``UNIDESK_MAIN_SERVER_HOST``UNIDESK_FRONTEND_URL` 时,manager 可以从受控默认配置自动补齐一个非敏感 endpoint env。该自动补齐必须遵守同一 redaction 规则,只显示 name/count/hash 和 `valuesPrinted=false`
- response、runner job status、event 和 dry-run manifest 只能展示 env name、count 和 `valuesPrinted=false`dry-run manifest 中的 transient env value 必须显示为 `REDACTED`
- 正式 Kubernetes Job manifest 会把 value 注入到本次 runner container env;该 token 必须由调度方控制 TTL、权限和业务授权范围
- response、runner job status、event 和 dry-run manifest 只能展示 env name、count、SecretRef metadata`valuesPrinted=false`dry-run manifest 中的 transient env value 必须显示为 `REDACTED`
- 正式 Kubernetes runner Job 不得把 `transientEnv` value 作为 pod spec plain env value。manager 必须先创建本次 Job 专属的短期 Kubernetes Secret,再在 runner container env 中使用 `valueFrom.secretKeyRef` 引用对应 key。Secret name、namespace、keys、ownerReference attached 状态和 `valuesPrinted=false` 可以出现在 response/event/trace 中,Secret data 和 env value 不得出现
- 本次 Job 专属 transient env Secret 必须带有 run/command/attempt/runner/job metadata,创建 Job 失败时清理已创建 SecretJob 创建成功后尽量给 Secret 加上 ownerReference,让 Kubernetes 随 Job GC。ownerReference patch 失败必须以 warning 暴露,不能回退为 plain env value。
- `transientEnv` token 必须由调度方控制 TTL、权限和业务授权范围;AgentRun 只负责本次 runner Job 的短期投影和 redaction,不把它升级为长期 credential。
- AgentRun 不解释 HWLAB HWPOD 权限,也不把业务鉴权做成通用 policy;AgentRun 只负责不持久化、不回显、不扩散这类短期 env value。
- GitHub token、UniDesk SSH client token、SSH private key、provider API key、registry token 等 provider/tool 可复用 credential 不得通过 `transientEnv` 注入;必须先进入装配 SPEC 的 SecretRef 路径。HWLAB dispatcher 生成并限定 owner/HWPOD/runtime scope 的 `HWLAB_API_KEY` 属于业务运行上下文,可以作为单次 runner Job env 透传,但不得变成 AgentRun durable fact 或通用授权。
@@ -206,6 +208,10 @@ Secret 创建和轮换不由 source branch 自动生成;source branch 只声
阅读本文,然后用一个不存在的 provider SecretRef 创建 run,确认 run 失败为结构化 `secret-unavailable`,不会打印 Secret 值,也不会无限重试。
### T4 transientEnv SecretRef 投影
阅读本文,然后通过正式 `runner-jobs` 或 Queue dispatch 路径创建带 `transientEnv` 的真实 runner Job。检查 runner job response、event、dry-run manifest 和 Kubernetes Pod specresponse/event 只能输出 env names、Secret name/namespace/keys、ownerReference 状态和 `valuesPrinted=false`Pod spec 中对应 env 必须是 `valueFrom.secretKeyRef`,不能包含 `value`Secret data 只能通过 Kubernetes Secret 保存,验证时只允许读取 key 列表和 metadata,不得输出 value。
## 规格的实现情况
| 规格项 | 状态 | 说明 |