merge: 同步主工作区并保留 Nginx 并行改动
This commit is contained in:
@@ -112,3 +112,7 @@
|
||||
### R7.3 [completed]
|
||||
|
||||
自动上线后以新 Artificer task input 与超过 30 分钟的真实或受控 canary 验证 2 小时 budget 生效,不修改当前 Monitor run 的既有 task policy,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7.3_Task_Report.md)。
|
||||
|
||||
## R8 [completed]
|
||||
|
||||
解决 [UniDesk #1944](https://github.com/pikasTech/unidesk/issues/1944):修复 Artificer Aipod 已为 2 小时但 UniDesk session follow-up 仍使用 15 分钟 hard-timeout 的配置分裂;将 `config/agentrun.yaml#client.sessionPolicy.executionPolicy.timeoutMs` 调整为 7200000 ms,在配置解析/校验中拒绝任何低于 3600000 ms 的 hard-timeout,并更新中文长期参考与最小测试;属于 AgentRun 自身运行时,必须由原生子代理执行,禁止 Artificer 递归修复,不新增第二 timeout authority、续跑补丁、锁、租约或状态机,完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R8_Task_Report.md)。
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
# R8 任务报告
|
||||
|
||||
## 结论
|
||||
|
||||
已解决 [UniDesk #1944](https://github.com/pikasTech/unidesk/issues/1944) 的 AgentRun session hard-timeout 配置分裂,并创建普通 [PR #1945](https://github.com/pikasTech/unidesk/pull/1945) 等待主代理审核、合并。
|
||||
|
||||
- 唯一事实来源保持为 `config/agentrun.yaml#client.sessionPolicy.executionPolicy.timeoutMs`。
|
||||
- 默认 hard-timeout 已由 15 分钟调整为 `7200000` ms,即 2 小时。
|
||||
- 既有通用 session policy 解析入口现在拒绝任何低于 `3600000` ms 的 hard-timeout。
|
||||
- 未新增第二 timeout authority、续跑补丁、锁、租约、状态机或交付控制入口。
|
||||
- 未执行部署、人工 PipelineRun、mirror sync、rollout 或 PR merge。
|
||||
|
||||
## 实现
|
||||
|
||||
- `config/agentrun.yaml`:将 session execution policy 的 `timeoutMs` 调整为 `7200000`。
|
||||
- `scripts/src/agentrun/config.ts`:在 `readAgentRunSessionPolicyConfig` 中保留正整数校验,并增加 1 小时通用下限;非法值在解析阶段明确报错。
|
||||
- `scripts/src/agentrun.test.ts`:覆盖真实 owning YAML 的 2 小时值和 `3599999` ms 拒绝。
|
||||
- `scripts/src/agentrun-events.test.ts`:同步既有合法 fixture,避免保留旧 15 分钟事实。
|
||||
- `docs/reference/agentrun.md`:将 session hard-timeout 的唯一 authority、2 小时口径和 1 小时配置下限固化为中文长期参考。
|
||||
|
||||
## 验证
|
||||
|
||||
- `bun test scripts/src/agentrun.test.ts scripts/src/agentrun-events.test.ts`:25 pass,0 fail,557 assertions。
|
||||
- `bun --check scripts/src/agentrun/config.ts`:通过。
|
||||
- `UNIDESK_AGENTRUN_TARGET_EXECUTED=NC01 bun scripts/cli.ts agentrun explain session-policy -o json`:选中 `NC01/nc01-v02`,`POLICY SOURCE=selected-lane`,effective `timeoutMs=7200000`,Secret 仅披露 metadata 且 `valuesPrinted=false`。
|
||||
- `git diff --check`:通过。
|
||||
|
||||
## 工件
|
||||
|
||||
- 实现 commit:`38efb160`。
|
||||
- PR:[pikasTech/unidesk#1945](https://github.com/pikasTech/unidesk/pull/1945)。
|
||||
- Issue:[pikasTech/unidesk#1944](https://github.com/pikasTech/unidesk/issues/1944)。
|
||||
- MDTODO:`docs/MDTODO/artificer-runtime-capabilities.md` R8。
|
||||
@@ -0,0 +1,6 @@
|
||||
# R3.1 任务报告
|
||||
|
||||
- PR #1925 与 #1937 完成 CI/CD OTel 配置、传播和 renderer 回退修复。
|
||||
- owning YAML 继续作为 endpoint、service、sampling 与 exporter timeout 唯一事实来源;无效运行参数回退 YAML,exporter 失败保持 `warning=true, blocking=false`。
|
||||
- 自动事件 `hwlab-web-probe-sentinel-nc01-bbjv2` 的 trace `120a9da4e04fc977c19dd594e0d7bb32` 已可由 Tempo 查询,证明 collector 接收生效。
|
||||
- 未人工触发 PipelineRun 或修改运行面。
|
||||
@@ -0,0 +1,6 @@
|
||||
# R3.2 任务报告
|
||||
|
||||
- PR #1939 让 `history`、`debug-step`、`status` 默认显示 traceId、firstBreak、typed phase、error type/code/exit,并保留 compact JSON 同构。
|
||||
- 真实事件 `hwlab-web-probe-sentinel-nc01-czhg5` 直接暴露 `BuildKitReadinessError / BUILDKIT_NOT_READY` 及 rootless mapped-root 原始错误,无需再猜测 registry 状态。
|
||||
- 56 项定点测试、生成 shell 语法与差异检查通过。
|
||||
- PR #1939 的裸 `buildkitd` 新回归由 R3.3 继续修复,未以人工 PipelineRun 补跑。
|
||||
@@ -0,0 +1,7 @@
|
||||
# R3.3 任务报告
|
||||
|
||||
- PR #1940 以 `rootlesskit buildkitd` 恢复 rootless mapped-root 合同,保留 30x1s readiness 与 TERM/KILL/wait 有界清理。
|
||||
- PR #1940 自动事件证明 BuildKit 一秒内 ready,但 wrapper OTel 环境泄漏使第三方 `buildctl` exporter 每次阻塞约 15 秒;PR #1943 仅在 BuildKit daemon、readiness 和 build 子进程内禁用 exporter,wrapper trace 保持不变。
|
||||
- PR #1943 merge commit `11d0e238162d1275d4f859bd275e0b8bc23bfa04` 自动产生 PipelineRun `hwlab-web-probe-sentinel-nc01-m5mkx`,26 秒成功。
|
||||
- 最终状态:镜像 `sha256:4c7b119a951...`、GitOps `301252718cc3`、Argo `Synced/Healthy`、runtime `1/1` 且 digest 对齐;Tempo 可查询 trace `11fba99ec4cc3cd2073be449232ee9c6`。
|
||||
- 两轮均为普通 PR merge 自动事件,未人工触发 PipelineRun。
|
||||
@@ -0,0 +1,7 @@
|
||||
# R3.4 任务报告
|
||||
|
||||
- 潜伏缺陷最早由 commit `6889f6a13303406aeec2e19c1a99987e151b62bf`、PR #1294 引入;作者为 Codex,PR 账号为 pikasTech。动机是移除 host Docker socket并迁移到 rootless BuildKit。
|
||||
- 该实现采用官方 `buildctl-daemonless.sh` 默认 10 次短连接探测。成功时 daemon 启动足够快;启动稍慢时 wrapper 先失败,而 worker/socket 随后才 ready。
|
||||
- PR #1937 只是首个观测失败 source commit,不是 BuildKit 根因;PR #1938 也与 BuildKit 无关。镜像 digest、节点、securityContext 与 state 路径在成功/失败样本间一致,不能把瞬时节点负载写成已证实因果。
|
||||
- PR #1939 的 commit `ca312ae7142a35ccb2c5a897c54871dacc101b20` 又直接执行裸 `buildkitd`,确定性违反 rootless mapped-root 合同,属于后续新回归。
|
||||
- 调查仅使用既有 Git、PR、PipelineRun、TaskRun、日志和 trace,未修改运行面或触发 PipelineRun。
|
||||
@@ -0,0 +1,11 @@
|
||||
# R3 任务报告
|
||||
|
||||
CI/CD 自动链 OTel 与错误投影已完成,并以真实自动事件闭环:
|
||||
|
||||
- PR #1925/#1937 建立 YAML-first OTel 配置、trace context 和非阻塞 exporter。
|
||||
- PR #1939 让 PaC 默认输出直接显示 trace、首断点和 typed child-process/BuildKit 错误。
|
||||
- PR #1940/#1943 修复 rootless BuildKit 启动与第三方 OTel 环境泄漏。
|
||||
- 最终 merge commit `11d0e238162d1275d4f859bd275e0b8bc23bfa04` 的自动 PipelineRun 成功,镜像、GitOps、Argo、runtime、health 与 Tempo trace 全部对齐。
|
||||
- 全过程未增加人工交付路径、第二 authority、锁、租约或证据状态机,也未人工触发 PipelineRun。
|
||||
|
||||
详细事实见 R3.1-R3.4 报告与 UniDesk #1923。
|
||||
@@ -23,18 +23,42 @@
|
||||
|
||||
调查第二轮业务 trace `trc_9352107b5e8a4125` / session `ses_d4473d6c-4d7a-4612-a102-254977698bc2` 的文件编辑、`apply_patch` 与 tool event 可见性:先解析对应 OTel trace/run/command,再对照 codex stdio notification、AgentRun durable events、`agentrun.event.v1`、`hwlab.event.v1` 和 HWLAB trace/read model,并使用受控的集群内或应用侧 CLI 执行 Kafka replay 校对,判定事件是源头未产生、AgentRun 映射遗漏、Kafka 转换丢失还是 HWLAB 投影丢失;不得手写 Kafka API、不得用重放追加产品 topic event、不得把投影滞后改写成业务失败,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R2_Task_Report.md)。
|
||||
|
||||
## R3 [in_progress]
|
||||
## R3 [completed]
|
||||
|
||||
解决 [UniDesk #1923](https://github.com/pikasTech/unidesk/issues/1923):提高 CI/CD 自动链错误暴露能力并接入 OTel,覆盖 GitHub webhook→Gitea snapshot→PaC→Tekton PipelineRun/TaskRun/step→artifact/GitOps→Argo/runtime/health 的 trace context、阶段 span、首断点与脱敏错误投影;让 cicd status、PaC status/history/debug-step 和 sentinel control-plane status 默认有界显示 traceId/error code/phase/exit/下钻。exporter、版本或 commit 漂移只能非阻塞 warning;禁止新增人工交付路径、第二 authority、锁/租约/证据链/状态机,以真实失败 hwlab-web-probe-sentinel-nc01-6gjzl 和新 PR merge 自动事件验收,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R3_Task_Report.md)。
|
||||
|
||||
### R3.1 [in_progress]
|
||||
### R3.1 [completed]
|
||||
|
||||
基于 PR #1925 合并后的真实自动事件继续修复 OTel 运行面:禁止 PaC Repository 参数未就绪时把花括号占位符作为 endpoint;从 owning YAML 在 source snapshot 内解析 OTel 配置并保留 300ms 非阻塞策略,增加安全的原始 fetch cause 投影;恢复 Tempo endpoint 后,用新的普通 PR merge 自动事件证明 collector 接收且 Tempo 可按 traceId 查询,禁止人工触发 PipelineRun,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R3.1_Task_Report.md)。
|
||||
|
||||
### R3.2 [in_progress]
|
||||
### R3.2 [completed]
|
||||
|
||||
基于真实自动事件 `hwlab-web-probe-sentinel-nc01-bbjv2` 修复 BuildKit daemon 已启动但 readiness 重试提前耗尽的竞争,并让 PaC `history/debug-step/status` 从失败 TaskRun 日志默认有界投影 traceId、首断点、阶段、error type/code/exit 与精确下钻;不得以人工 PipelineRun、锁/租约或吞掉失败缓解,使用下一次普通 PR merge 自动事件证明业务成功且 Tempo 可按同一 traceId 查询,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R3.2_Task_Report.md)。
|
||||
|
||||
### R3.3 [in_progress]
|
||||
### R3.3 [completed]
|
||||
|
||||
基于真实自动事件 `hwlab-web-probe-sentinel-nc01-czhg5` 修复 `moby/buildkit:rootless` 启动合同:显式通过 RootlessKit 启动 buildkitd,保留 socket + worker readiness、有界 TERM/KILL/wait 与 typed 失败投影;禁止退回短连接重试、人工 PipelineRun 或第二 authority,使用下一次普通 PR merge 自动事件证明 image build、GitOps/Argo/runtime 成功且 Tempo 可按同一 traceId 查询,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R3.3_Task_Report.md)。
|
||||
|
||||
### R3.4 [completed]
|
||||
|
||||
独立溯源 Web Probe Sentinel CI 从历史可成功构建到连续 BuildKit readiness 失败的首个回归:对齐成功/失败 PipelineRun、镜像 digest、TaskSpec、节点环境与 Git 提交/PR/作者,区分环境启动变慢、官方 daemonless 默认重试窗口不足和 PR #1939 裸 buildkitd 新回归,输出可复核的时间线与责任变更,不修改运行面或人工触发 PipelineRun,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R3.4_Task_Report.md)。
|
||||
|
||||
## R4 [in_progress]
|
||||
|
||||
解决 [AgentRun #352](https://github.com/pikasTech/agentrun/issues/352)、[HWLAB #2525](https://github.com/pikasTech/HWLAB/issues/2525) 与 [UniDesk #1949](https://github.com/pikasTech/unidesk/issues/1949):消除 trace trc_f389d0493c0c489e 的 Kafka outbox 队头阻塞与 17 分钟伪耗时,恢复 agentrun.event.v1→transactional projector→hwlab.event.v1→实时/回放 SSE 单一权威;禁止 HTTP 补链、页面轮询、读侧修复、进程内 finalizer、双 authority、额外锁/租约/状态库或降低 Kafka/SSE 能力,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R4_Task_Report.md)。
|
||||
|
||||
### R4.1 [in_progress]
|
||||
|
||||
执行 [AgentRun #352](https://github.com/pikasTech/agentrun/issues/352):按 key 保序、跨 key 有界并行排空 transactional outbox,保留 durable at-least-once 并补 backlog/oldest/rate/typed error 可见性,以 NC01/nc01-v02 真实积压归零和新事件实时发布验收,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R4.1_Task_Report.md)。
|
||||
|
||||
### R4.2 [in_progress]
|
||||
|
||||
执行 [HWLAB #2525](https://github.com/pikasTech/HWLAB/issues/2525):恢复固定 group transactional projector、原子 facts/checkpoint/browser outbox、hwlab.event.v1 relay 与同 cursor 实时/回放 SSE;耗时取 canonical 时间,禁止 direct/live 双写、HTTP 补链和页面轮询,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R4.2_Task_Report.md)。
|
||||
|
||||
### R4.3 [in_progress]
|
||||
|
||||
执行 [UniDesk #1949](https://github.com/pikasTech/unidesk/issues/1949):由 config/hwlab-node-lanes.yaml 选择 transactionalProjector、projectionOutboxRelay、projectionRealtime 单一产品 authority,关闭 live-only direct authority,保持 renderer/status/preflight YAML-first,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R4.3_Task_Report.md)。
|
||||
|
||||
### R4.4
|
||||
|
||||
依赖 R4.1-R4.3,主代理完成 PR 架构审核、顺序合并、自动 CI/CD 和 NC01/v03 原 Workbench 新 hi turn 验收;核对 command/run 实际耗时、Kafka backlog/lag、运行中增量、terminal/final、刷新 replay、公开 result 与 OTel 一致后收口,完成任务后将详细报告写入[任务报告](./details/observability-trace-reliability/R4.4_Task_Report.md)。
|
||||
|
||||
@@ -162,7 +162,17 @@ AgentRun Kafka closeout 需要同时验证 manager 和 runner 两条生产链路
|
||||
- 终态命令仍被历史 claim、heartbeat、Pod 或 `runner-dispatch-retry` 保护时,修正 retention 分类;
|
||||
- 禁止强杀 Job/Pod 或手工补 CI/CD。
|
||||
|
||||
AgentRun resource/session client policy 也由 `config/agentrun.yaml` 声明。`client.sessionPolicy` 是未显式选择 node/lane 时 `agentrun send session/...` 和相关 session payload 生成的默认 `tenantId`、`projectId`、`providerId`、`backendProfile`、`workspaceRef` 和 execution policy 来源;显式 `--node <node> --lane <lane>` 后,`explain session-policy`、`send session`、resource primitives 和 AipodSpec render 都必须改用目标 lane 的 YAML 事实。lane `secrets[].providerCredential.profile` 声明 provider credential Secret 归属,UniDesk CLI 只按 YAML 聚合 Secret name/key,不再用代码拼接 provider Secret 名称。只读入口 `bun scripts/cli.ts agentrun explain session-policy` 用于查看选中目标 lane、policy 来源、实际 executionPolicy payload 和 provider credential binding 来源;输出只能包含 Secret metadata、key 名和 `valuesPrinted=false`,不得打印 Secret value。
|
||||
- AgentRun resource/session client policy:
|
||||
- 由 `config/agentrun.yaml` 声明;
|
||||
- `client.sessionPolicy` 是未显式选择 node/lane 时 `agentrun send session/...` 和相关 session payload 生成的默认 `tenantId`、`projectId`、`providerId`、`backendProfile`、`workspaceRef` 和 execution policy 来源;
|
||||
- `client.sessionPolicy.executionPolicy.timeoutMs` 是 session follow-up hard-timeout 的唯一事实来源;
|
||||
- Artificer task 与 session follow-up 统一使用 2 小时 hard-timeout;
|
||||
- 低于 1 小时的 hard-timeout 配置非法,必须在配置解析阶段明确拒绝;
|
||||
- 显式 `--node <node> --lane <lane>` 后,`explain session-policy`、`send session`、resource primitives 和 AipodSpec render 都必须改用目标 lane 的 YAML 事实;
|
||||
- lane `secrets[].providerCredential.profile` 声明 provider credential Secret 归属;
|
||||
- UniDesk CLI 只按 YAML 聚合 Secret name/key,不再用代码拼接 provider Secret 名称;
|
||||
- 只读入口 `bun scripts/cli.ts agentrun explain session-policy` 用于查看选中目标 lane、policy 来源、实际 executionPolicy payload 和 provider credential binding 来源;
|
||||
- 输出只能包含 Secret metadata、key 名和 `valuesPrinted=false`,不得打印 Secret value。
|
||||
|
||||
非默认 lane 的 session follow-up 必须证明 `send session` 使用的是选中 node/lane 的 run policy。使用短命令形态前,先用 `agentrun explain session-policy --node <node> --lane <lane> [--backend-profile <profile>]` 或等价 dry-run/describe 路径确认 `backendProfile`、`providerId`、`workspaceRef`、execution policy 和 provider credential SecretRef 都来自目标 lane;`--prompt-stdin` 短命令形态和 `--json-stdin -o json` 显式 JSON 形态应披露同一份 `sessionPolicy` 摘要。渲染结果回退到全局默认 lane、显示错误的 default lane,或短命令与 JSON body 使用不同 policy,都是 lane policy 缺陷,应修复 YAML 目标解析或 CLI 渲染;不得通过手工创建默认 lane Secret、复制凭据、改写 JSON body 或修改 runtime namespace 来掩盖 policy 选错的问题。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user