From 982d45b1bf179b6890f6eb7d97e017ffa5c70dd5 Mon Sep 17 00:00:00 2001 From: Codex Date: Mon, 13 Jul 2026 09:49:11 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=8C=81=E4=B9=85=E5=8C=96=E5=B9=B6?= =?UTF-8?q?=E8=A1=8C=E4=BB=BB=E5=8A=A1=E8=B7=9F=E8=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/MDTODO/artificer-runtime-capabilities.md | 21 ++++++- .../cli-output-progressive-disclosure.md | 2 +- .../R6.1_Task_Report.md | 54 +++++++++++++++++ .../R6.2_Task_Report.md | 60 +++++++++++++++++++ .../R7.1_Task_Report.md | 8 +++ .../R7.2_Task_Report.md | 7 +++ .../pr-merge-driven-automatic-delivery.md | 3 + 7 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 docs/MDTODO/details/artificer-runtime-capabilities/R6.1_Task_Report.md create mode 100644 docs/MDTODO/details/artificer-runtime-capabilities/R6.2_Task_Report.md create mode 100644 docs/MDTODO/details/artificer-runtime-capabilities/R7.1_Task_Report.md create mode 100644 docs/MDTODO/details/artificer-runtime-capabilities/R7.2_Task_Report.md diff --git a/docs/MDTODO/artificer-runtime-capabilities.md b/docs/MDTODO/artificer-runtime-capabilities.md index c6416bee..3d718053 100644 --- a/docs/MDTODO/artificer-runtime-capabilities.md +++ b/docs/MDTODO/artificer-runtime-capabilities.md @@ -83,10 +83,29 @@ 由原生子代理在最新远端基线的独立 worktree 实现易用派单入口:外层在 YAML Target 上通过 trans 派单,Artificer 内部通过 trans 到 NC01 目标工作区复用主机权限;覆盖 target/target-workspace/repo/ref、创建前源码身份预检、合法 session/workspaceRef/Aipod 投影、owning prompt,以及 unidesk-subagent 的“所有子代理先建 MDTODO”固定规则;对应原生任务 artificer_dispatch_ux,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.1_Task_Report.md)。 -### R6.2 +### R6.2 [in_progress] 主代理审查跨仓改动并按依赖顺序合并 PR,只观察自动 CI/CD 收敛;不得人工触发 mirror、PipelineRun、apply 或 rollout,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.2_Task_Report.md)。 ### R6.3 上线后通过 trans 在 NC01 使用新单命令入口,以任务 worktree /root/.worktrees/selfmedia/r6-ocr-visual-planner、仓库 pikainc/selfmedia 和 ref feat/r6-ocr-visual-planner 派发 OCR/视觉规划,确认 task 直接 running、Artificer 内部继续用 trans、session 可续跑且不出现 schema-invalid 或 repository-not-found,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.3_Task_Report.md)。 + +### R6.4 [in_progress] + +修复 Target 单命令 live 输出超过全局预算后丢失 task/run/session identity:默认 human 与显式 JSON/YAML 都先返回紧凑 identity、auto-dispatch decision、Target 摘要与下钻命令,不嵌入完整 task/Aipod payload;补超过 10 KiB 场景测试,确保不会退化为 stdout-text-bytes-exceeded-threshold,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.4_Task_Report.md)。 +## R7 [in_progress] + +解决 [AgentRun #348](https://github.com/pikasTech/agentrun/issues/348):由 owning Artificer Aipod YAML 把单 turn hard-timeout 从 30 分钟调整为 2 小时(7200000 ms),只改 YAML 及最小必要 render/配置测试,不新增代码默认、第二 timeout authority、客户端续跑补丁、合同、租约、安全机制或围栏,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7_Task_Report.md)。 + +### R7.1 [completed] + +由原生子代理按 [AgentRun #348](https://github.com/pikasTech/agentrun/issues/348) 在独立 v0.2 worktree 修改 config/aipods/artificer.yaml timeoutMs 为 7200000,并完成最小 render/配置测试;禁止 Artificer 递归修自己,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7.1_Task_Report.md)。 + +### R7.2 [completed] + +主代理审查并合并 [AgentRun #348](https://github.com/pikasTech/agentrun/issues/348) 的最小 PR,只观察自动 CI/CD,不人工触发交付链,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7.2_Task_Report.md)。 + +### R7.3 [in_progress] + +自动上线后以新 Artificer task input 与超过 30 分钟的真实或受控 canary 验证 2 小时 budget 生效,不修改当前 Monitor run 的既有 task policy,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7.3_Task_Report.md)。 diff --git a/docs/MDTODO/cli-output-progressive-disclosure.md b/docs/MDTODO/cli-output-progressive-disclosure.md index b47ad14a..f0fbebc9 100644 --- a/docs/MDTODO/cli-output-progressive-disclosure.md +++ b/docs/MDTODO/cli-output-progressive-disclosure.md @@ -141,4 +141,4 @@ ## R10 [in_progress] -解决 UniDesk #1656(https://github.com/pikasTech/unidesk/issues/1656):由 Artificer 在独立 worktree 修复 cicd status --node 成功零输出,并统一 PaC consumer 的 registry applicability;GitOps-only 或 publisher-only 应显示 N/A 且由 PipelineRun、GitOps/Argo 与 runtime 证据闭环,只有 owning YAML 明确声明 image/registry 的 consumer 才把 registry missing 作为 blocker。保持默认输出有界、text/JSON/YAML 同构、缺失可选 YAML 事实降级为 warning,不新增严格合同或手工交付入口;补针对性测试和 unidesk-cicd 说明,提交独立 PR 且不自行合并,完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R10_Task_Report.md)。 +解决 [UniDesk #1656](https://github.com/pikasTech/unidesk/issues/1656):由 Artificer 在独立 `.worktree/cicd-status-visibility`、`fix/cicd-status-visibility` 分支修复 `cicd status --node` 成功零输出,并统一 PaC consumer 的 registry applicability;GitOps-only/publisher-only 应显示 N/A 且由 PipelineRun、GitOps/Argo 与 runtime 证据闭环,只有 owning YAML 明确声明 image/registry 的 consumer 才把 registry missing 作为 blocker。保持默认输出有界、text/JSON/YAML 同构、缺失可选 YAML 事实降级为 warning,不新增严格合同或手工交付入口;补针对性测试和 `unidesk-cicd` 说明,提交独立 PR 且不自行合并,完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R10_Task_Report.md)。 diff --git a/docs/MDTODO/details/artificer-runtime-capabilities/R6.1_Task_Report.md b/docs/MDTODO/details/artificer-runtime-capabilities/R6.1_Task_Report.md new file mode 100644 index 00000000..64e4fd70 --- /dev/null +++ b/docs/MDTODO/details/artificer-runtime-capabilities/R6.1_Task_Report.md @@ -0,0 +1,54 @@ +# R6.1 阶段报告 + +## 结论 + +Artificer 易用派单入口已在两个独立分支完成实现、本地验证、提交和 PR 创建,尚未合并、发布或执行真实 R6.3 canary,因此 R6.1 保持进行中。 + +## 根因 + +- 旧派单把目标私有仓库误当成 runner primary resource bundle: + - 初始 `workspaceRef` 携带了不合法的 repo/branch 字段,服务端以 `schema-invalid` 拒绝; + - 修正 schema 后,runner 又尝试直接拉取私有 `pikainc/selfmedia` bundle,并以 `repo-not-found` 失败。 +- 旧流程把创建、派发、Target 工作区校验拆散,调用者需要手写 schema 或补第二条 dispatch 命令。 +- runner primary workspace 与真正任务 Target 没有形成可验证的执行边界。 + +## 已实现设计 + +- UniDesk YAML 统一声明 `client.transport=target-trans`、marker、CLI 相对路径和 Target 上的 UniDesk 工作区。 +- 外层命令经 `trans :` 重入 Target,再完成预检、创建、自动派发和观察。 +- Artificer 任务继续继承默认 UniDesk bundle;目标源码不再作为 runner primary bundle。 +- 目标源码的探测、Git、编辑、验证和运行面观察固定使用 `trans :`。 +- `targetWorkspace` 必须是任务专属 clean worktree;preflight 校验 origin、branch、HEAD 与远端 ref commit。 +- preflight 失败返回 `mutation=false` 且不创建 task;成功时披露合法 workspaceRef、bundle、session、SecretRef presence 和源码身份。 +- live submit 后自动 dispatch;稳定 idempotency key 和并发回读防止重试重复派发。 +- `unidesk-subagent` 固化原生子代理与 Artificer 均先登记 MDTODO,prompt 与报告回链同一 MDTODO ID。 +- AgentRun Artificer AipodSpec 强制 required skill `unidesk-trans`、runner tools bundle 和 `unidesk-ssh` SecretRef。 + +## 提交与 PR + +- AgentRun: + - 分支:`fix/artificer-source-override`; + - 提交:`3d1d8a8a4a41d17053d8c1c0ad3d541272355846`; + - PR:[pikasTech/agentrun#349](https://github.com/pikasTech/agentrun/pull/349)。 +- UniDesk: + - 分支:`fix/artificer-target-dispatch-ux`; + - 提交:`43124d01e8977f1b12878a852e223b5deb02a20b`; + - PR:[pikasTech/unidesk#1911](https://github.com/pikasTech/unidesk/pull/1911)。 + +## 验证 + +- UniDesk: + - `bun test scripts/src/agentrun.test.ts`:20 tests、397 assertions 通过; + - `bun scripts/cli.ts agentrun create --help`:单命令 Target 参数展示正确; + - `git diff --check`:通过。 +- AgentRun: + - `bun run src/selftest/run.ts 81-artificer-nonrecursive-prompt 90-runner-image-tools`:11 assertions 通过; + - `git diff --check`:通过。 + +## 后续验收 + +- 先审查并合并 AgentRun PR,使 owning AipodSpec 进入受控运行面。 +- 再审查并合并 UniDesk PR,使 Target 派单入口进入主线。 +- 从最新 `feat/r6-ocr-visual-planner` 创建并推送 `/root/.worktrees/selfmedia/r6-ocr-visual-planner`。 +- 先用同一 R6.3 命令执行 dry-run,再执行 live;确认只创建一个 task/attempt 且自动生成 run/session。 +- 从 runner 证据确认实际通过 `trans NC01:/root/.worktrees/selfmedia/r6-ocr-visual-planner` 完成读取、编辑、验证和 Git 操作。 diff --git a/docs/MDTODO/details/artificer-runtime-capabilities/R6.2_Task_Report.md b/docs/MDTODO/details/artificer-runtime-capabilities/R6.2_Task_Report.md new file mode 100644 index 00000000..e21eb3b3 --- /dev/null +++ b/docs/MDTODO/details/artificer-runtime-capabilities/R6.2_Task_Report.md @@ -0,0 +1,60 @@ +# R6.2 只读诊断报告 + +## 结论 + +AgentRun NC01 v0.2 自动交付链已经自行收敛,不需要代码、YAML 或运行面修复。本轮没有创建分支、提交或 PR,也没有执行 mirror、PipelineRun、apply、refresh、sync、rollout、patch 等 mutation。 + +## 自动链证据 + +受控只读入口: + +```bash +bun scripts/cli.ts platform-infra pipelines-as-code status \ + --target NC01 \ + --consumer agentrun-nc01-v02 \ + --json +``` + +结果: + +- `mutation=false`、`summary.ready=true`; +- latest PipelineRun:`agentrun-nc01-v02-ci-eafac6023ca5bd6afc8cf1f98788974524d21rjxkt`; +- source commit:`eafac6023ca5bd6afc8cf1f98788974524d219b2`; +- PipelineRun:`Succeeded`,耗时 54 秒; +- plan、collect、GitOps promote 三个 terminal role 均成功; +- artifact digest:`sha256:963522c48906a290bba1901b5ae5b6b78c892b9f5ddd5d42cfb8885c3f1d7284`; +- GitOps commit:`8efa73c802b245275102fc7cc91a9f8b3013c5dc`; +- Argo:`Synced`、`Healthy`,revision 与 GitOps commit 完全相同; +- runtime:`agentrun-mgr` 为 1/1 ready,运行镜像 digest 与 artifact digest 完全相同; +- diagnostics:`pac-ready-gitops-exact`,phase 为 `ready`; +- provenance relation:`exact`。 + +## Argo 与 GitOps authority 核对 + +- 当前 Argo `repoURL` 仍是 `http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/agentrun.git`; +- 当前状态投影中的 `expectedRepoURL` 与 `observedRepoURL` 相同; +- `revisionRelation.relation=exact`、`proof=owning-git-commit-graph`、`fetchOk=true`; +- GitOps promote 已成功,Argo 已取得完全相同的 GitOps commit; +- 因此本次没有观察到 Gitea GitOps 写入 authority 漂移,也没有因 legacy read endpoint 阻塞交付。 + +## lane-secret-missing 判定 + +补充只读入口: + +```bash +bun scripts/cli.ts agentrun control-plane status \ + --node NC01 \ + --lane nc01-v02 \ + --source-commit eafac6023ca5bd6afc8cf1f98788974524d219b2 +``` + +该兼容摘要仍返回 `lane-secret-missing`,但同一结果同时显示: + +- PipelineRun 成功; +- Argo `Synced/Healthy` 且 revision exact; +- manager source 为 `eafac6023ca5`; +- manager 1/1 ready; +- runtime digest 与 artifact digest 一致; +- database Secret 存在。 + +因此 `lane-secret-missing` 不是本次 source delivery、GitOps、Argo 或 manager rollout 的真实 blocker,而是独立的 lane Secret presence 信号。自动交付是否完成以 PaC canonical 状态的 `ready=true`、`pac-ready-gitops-exact` 和 runtime exact provenance 为准,本轮不据此创建修复 PR。 diff --git a/docs/MDTODO/details/artificer-runtime-capabilities/R7.1_Task_Report.md b/docs/MDTODO/details/artificer-runtime-capabilities/R7.1_Task_Report.md new file mode 100644 index 00000000..987ec1a4 --- /dev/null +++ b/docs/MDTODO/details/artificer-runtime-capabilities/R7.1_Task_Report.md @@ -0,0 +1,8 @@ +# R7.1 任务报告 + +- Issue:[AgentRun #348](https://github.com/pikasTech/agentrun/issues/348)。 +- 原生子代理在独立 v0.2 worktree 完成最小修复,PR:[AgentRun #350](https://github.com/pikasTech/agentrun/pull/350)。 +- Commit:`ea8da03216ee486faa3d302967b76ee1e4b9e7bb`。 +- 变更仅将 `config/aipods/artificer.yaml#spec.executionPolicy.timeoutMs` 从 `1800000` 调整为 `7200000`,并在既有 Aipod render 自测中断言 Queue task 继承该 YAML 值。 +- 验证:`76-aipod-spec` 21 项通过,`bun --check` 与 `git diff --check` 通过。 +- 未修改其他 Aipod、运行时代码默认、合同、租约、安全机制或围栏;未由 Artificer 递归修复。 diff --git a/docs/MDTODO/details/artificer-runtime-capabilities/R7.2_Task_Report.md b/docs/MDTODO/details/artificer-runtime-capabilities/R7.2_Task_Report.md new file mode 100644 index 00000000..55beb4a9 --- /dev/null +++ b/docs/MDTODO/details/artificer-runtime-capabilities/R7.2_Task_Report.md @@ -0,0 +1,7 @@ +# R7.2 任务报告 + +- 主代理完成 PR #350 的完整正文、两文件 diff、YAML authority 与测试断言审查。 +- `gh pr preflight`:`MERGEABLE/CLEAN`,无 blocker。 +- PR #350 已以 merge 方式合并,merge commit:`eafac6023ca5bd6afc8cf1f98788974524d219b2`。 +- 合并后未执行 mirror、PipelineRun、GitOps、Argo、rollout 或其他人工 CI/CD 触发,只进入自动链只读观察。 +- 已持久化旧 task/run 继续保留旧 `1800000` 快照;新任务在自动上线后读取 `7200000`。 diff --git a/docs/MDTODO/pr-merge-driven-automatic-delivery.md b/docs/MDTODO/pr-merge-driven-automatic-delivery.md index 72933f97..7508ba6b 100644 --- a/docs/MDTODO/pr-merge-driven-automatic-delivery.md +++ b/docs/MDTODO/pr-merge-driven-automatic-delivery.md @@ -64,6 +64,9 @@ 记录并后续解决 [UniDesk #1828](https://github.com/pikasTech/unidesk/issues/1828):聚合 cicd status 对 sentinel/platform-infra 在 source、GitOps、Argo/runtime 已对齐时仍误报 pac-gitops-missing/relation unknown;统一专用 control-plane 与聚合器的 source→GitOps revision relation authority 和判定证据,本轮仅登记,不扩入 #1760 自动 delivery 修复,完成任务后将详细报告写入[任务报告](./details/pr-merge-driven-automatic-delivery/R4.4_Task_Report.md)。 +### R4.5 [in_progress] + +基于 [UniDesk #1802](https://github.com/pikasTech/unidesk/issues/1802) 修复当前 AgentRun NC01 自动交付阻塞:将 GitOps read/write、Argo repoURL 与 delivery provenance 从 legacy git-mirror 收敛到既有 Gitea internal 单一 authority;只做 owning YAML、既有 renderer/定向验证的最小必要修改,禁止人工 mirror、sync、flush、trigger、apply、closeout、PipelineRun 或 runtime patch,也禁止新增合同、租约、安全机制和围栏,完成任务后将详细报告写入[任务报告](./details/pr-merge-driven-automatic-delivery/R4.5_Task_Report.md)。 ## R5 [in_progress] 解决 [UniDesk #1900](https://github.com/pikasTech/unidesk/issues/1900):修复 NC01 PaC watcher 因 ServiceAccount token 的 node/pod 关系失败而 Pending,恢复 GitHub PR merge 驱动的唯一自动交付链,禁止人工补触发、第二权威或旁路,完成任务后将详细报告写入[任务报告](./details/pr-merge-driven-automatic-delivery/R5_Task_Report.md)。