From d445b9b0d5d89de8935acf652c55bac48d6d21db Mon Sep 17 00:00:00 2001 From: Codex Date: Sun, 12 Jul 2026 11:22:49 +0200 Subject: [PATCH] =?UTF-8?q?docs(mdtodo):=20=E5=AE=8C=E6=88=90=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E5=8E=9F=E5=AD=90=E6=8E=A5=E7=BA=B3=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/MDTODO/agentrun-runtime-reliability.md | 2 +- .../R5.4_Task_Report.md | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 docs/MDTODO/details/agentrun-runtime-reliability/R5.4_Task_Report.md diff --git a/docs/MDTODO/agentrun-runtime-reliability.md b/docs/MDTODO/agentrun-runtime-reliability.md index 09ee800b..e2afb4ad 100644 --- a/docs/MDTODO/agentrun-runtime-reliability.md +++ b/docs/MDTODO/agentrun-runtime-reliability.md @@ -89,7 +89,7 @@ 继续解决 [AgentRun #219](https://github.com/pikasTech/agentrun/issues/219):真实验收 run_3bd02d10ee534b8ca29176f15a893555 的 seq 136/137 是同一 itemId、完成前的累计 agent-message-delta-progress,seq 138 才是 durable completed body;三者都编码为 assistant_message,导致 timeline 显示三条近似 final response。将 live delta/progress、durable completed body、bodyless final seal 与 terminal status 在权威 event contract 中明确区分,同时保留实时可见性和 #316 的 late-replay/itemId/seal 修复;禁止 HWLAB/Workbench 文本去重、tail merge 或 Kafka/SSE 补洞,完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.3.1_Task_Report.md)。 -### R5.4 [in_progress] +### R5.4 [completed] 解决 [AgentRun #319](https://github.com/pikasTech/agentrun/issues/319):Artificer 既有 session send 在 new-turn runner admission 的 kubectl get jobs 失败后,已写入 run_22008379b6ac48e188032c1091c0741b 与 pending command,却没有 runner-job-created/typed terminal,session 永久显示 waiting-runner。将 session new-turn 改为 durable、幂等、可恢复的 runner dispatch 合同;admission/Job 失败必须写前 fail closed 或原子终态化并释放 session identity,覆盖 Memory/PostgreSQL、K8s failure、并发与 restart;禁止复制 task/session、数据库修补、第二清理 authority 或人工 CI/CD,完成任务后将详细报告写入[任务报告](./details/agentrun-runtime-reliability/R5.4_Task_Report.md)。 diff --git a/docs/MDTODO/details/agentrun-runtime-reliability/R5.4_Task_Report.md b/docs/MDTODO/details/agentrun-runtime-reliability/R5.4_Task_Report.md new file mode 100644 index 00000000..e40e5658 --- /dev/null +++ b/docs/MDTODO/details/agentrun-runtime-reliability/R5.4_Task_Report.md @@ -0,0 +1,29 @@ +# R5.4 任务报告 + +## 结论 + +已解决 [AgentRun #319](https://github.com/pikasTech/agentrun/issues/319) 的 session new-turn 半提交问题。AgentRun PR #321 已合并至 `v0.2`,自动发布对齐 source `65341323228f5bd14a77689da9a1a28558366a15`、GitOps/Argo `284d7b617d653f2d84071d534e69cc5955d34028` 与 runtime digest `sha256:3d627190bb24bd9f47b7592cfccb54aaeb5517cc17257b5160b06c5727dff621`。 + +## 修复合同 + +- `session send` 不再在 HTTP handler 内同步执行 kubectl 后留下 run/command 半提交;run、command、正式 user/run-created/command-created 事件、Kafka outbox 与 durable runner dispatch intent 形成原子接纳。 +- PostgreSQL 以 session advisory transaction lock 串行化接纳;Memory store 在失败时完整回滚。 +- 相同 prompt/idempotency 对历史半提交对象执行原位 recovery:复用 run/command 和冻结的 workspace/resource bundle,只新增一个 `runner-dispatch-recovered` 事件。 +- durable dispatcher 负责自动重试;终态失败原子更新 intent、command、run、session,并写入 retry/failure/command-terminal/terminal_status,释放 session active identity。 +- `runnerAdmission` 明确 disposition、durable、planned identity、retryable 与 `retryAuthority=dispatcher`,不把 planned runnerJobId 冒充已创建 Kubernetes Job,也不提示用户重复 send。 +- failureKind/reason 只接受类型化来源及 machine-code 校验,不从错误文案猜测;Kubernetes observation/create/adopt 源头提供 bounded/redacted typed reason。 + +## 验证 + +主代理独立运行 5 组相关 self-test,共 90 项通过,覆盖 Memory rollback、PostgreSQL 原子性、并发/idempotent replay、restart recovery、fake kubectl observation/create failure、dispatcher retry/terminalization、成功 same-session continuity 与 Kafka durable outbox。 + +真实固定 session `sess_artificer_cc656ee9c7ceb49aba519e32` 使用完全相同 prompt 重试后: + +- 返回 `disposition=recovered`、`recoveredPriorPartialWrite=true`; +- 精确复用 `run_22008379b6ac48e188032c1091c0741b` 与 `cmd_b6e156371b454dd1a6e7e45d6c2fdeaa`; +- 原 seq=1 user_message、seq=2 run-created、seq=3 command-created 均未重复;seq=4 仅新增 `runner-dispatch-recovered`; +- 后续真实 K8s observation 失败产生类型化 retry,并正规写入 runner-dispatch-failed、command-terminal、terminal_status,session 转为 terminal/active=false,不再永久 waiting-runner。 + +## 后续分流 + +本次真实验收同时发现 manager 内 `kubectl get jobs` exit=1,导致 Artificer backend 尚未建立。该独立运行面能力问题已登记为 [AgentRun #322](https://github.com/pikasTech/agentrun/issues/322) 与 R5.5;它不回退或否定本项已验收的原子接纳、恢复与终态合同。