Files
pikasTech-unidesk/docs/MDTODO/web-observe-runtime-reliability.md
2026-07-18 14:13:06 +02:00

10 KiB
Raw Permalink Blame History

Web Observe 运行时可靠性

  • 范围:Web observe runner、浏览器进程树、终态回收、资源压力可见性与 YAML 控制的生命周期上限。
  • 配置真相:沿用 Web probe owning scenario/YAML 与 config/unidesk-cli.yaml#gc,不建立旁路回收 authority。
  • 领域分流:R1.2.1-R1.2.8 保留为历史实施记录;后续主机、Kubernetes、Kafka、swap 和通用 GC 治理统一进入平台资源治理,本文件只继续承载 Web observe/浏览器生命周期。

R1 [in_progress]

解决 Web observe 终态未回收造成 observer/Chrome 长驻与 swap 压力:沿用受控 observe/GC authority,先完成有界临时缓解,再实现 YAML 控制的生命周期、自停和压力可见性,最终通过自动发布链验收。上下文:https://github.com/pikasTech/unidesk/issues/1842,完成任务后将详细报告写入任务报告

R1.1 [completed]

调查并临时缓解:https://github.com/pikasTech/unidesk/issues/1842;用 manifest、heartbeat、PID、open fd/cwd 和调用方终态判定 stale,先 plan,再走正式 observe stop/force-stop 或 GC run,记录回收前后内存、swap、进程树与健康证据,完成任务后将详细报告写入任务报告

R1.2 [in_progress]

实现长期修复:https://github.com/pikasTech/unidesk/issues/1842;补齐所有调用方终态 stoprunner 从 owning YAML 获取最大运行时长/max samples/artifact cap 并自停,GC snapshot/plan/status 披露 active/stale、Chrome RSS、last cleanup 与 stop failure,完成任务后将详细报告写入任务报告

R1.2.1 [completed]

为 UniDesk #1710 增加 devops-infra Kubernetes 历史对象留存:手动 gc remote <node> retention plan|run|status 与 YAML 定时滚动回收必须复用同一 fail-closed 筛选器;只处理终态 PipelineRun,通过 ownerRef 后台级联,保留活跃、过新、未知分组和每组最新对象;完成 dry-run、受控执行、timer 安装和 MemAvailable 实证后收口,完成任务后将详细报告写入任务报告

R1.2.2 [completed]

完成 UniDesk #1710 的 Decision Center 子进程泄露与 GC 诊断收敛:修复周期性 Git 子进程未回收并把远程同步移出健康轮询;增强 gc remote <node> memory-distribution,一次披露物理内存、PSS、swap、僵尸 Pod 归属、Kubernetes 对象压力和处置分类;经自动交付后验证僵尸不再增长并记录内存变化,完成任务后将详细报告写入任务报告

R1.2.3 [completed]

补齐 UniDesk #1710 的 Decision Center YAML-first 自动交付:把 config/unidesk-host-k8s.yaml#delivery 从 todoNote 单服务模型泛化为显式多服务清单,使各服务独立声明 source paths、镜像、manifest 和 release state;复用同一 PaC 事件完成受影响服务的并行/顺序构建与 GitOps 发布,不修改共享 controller、不人工补链,最终滚动 Decision Center 并跨 300 秒验证 zombie 不再增长,完成任务后将详细报告写入任务报告

R1.2.4 [completed]

完成 UniDesk #1710 的 Kafka 周边内存调优:保持纯 Kafka 实时/回放 SSE 架构不变,把 broker、Strimzi Cluster Operator、Topic/User Entity Operator 的 JVM 与 Kubernetes 资源预算,以及临时 consumer group 生命周期收敛到 config/platform-infra/kafka.yaml;经受控渲染、正常 PR 自动交付后验证 Kafka topic/client/producer/consumer 正常并对比物理内存,完成任务后将详细报告写入任务报告

R1.2.5 [completed]

完成 UniDesk #1710 的 NC01 CI 历史对象自动留存对齐与 k3s 内存降载:修复 YAML 期望与 host timer 安装态不可见、不同步问题,使 gc remote <node> policy status 一次披露配置/runner 指纹、关键留存字段和漂移结论;通过 YAML-first 自动留存回收终态 PipelineRun owner 树,验证对象数量、k3s 内存与真实 MemAvailable,明确不触碰 Webterm,完成任务后将详细报告写入任务报告

R1.2.6 [completed]

回滚错误的 UniDesk PR #2302:恢复 WebProbe 只以真实 /proc/meminfo MemAvailable 超过 4 GiB 作为人工启动资格、sentinel 在低于 4 GiB 时跳过本轮的 YAML-first 门禁;不得在 2 GiB 错误基线上继续修补,不启动 WebProbe且不触碰 Webterm,完成任务后将详细报告写入任务报告

R1.2.7 [completed]

完成 UniDesk #1710 的 NC01 64 GiB swap 安全垫与受控扩容能力:以 config/platform-db/postgres-nc01.yaml 为唯一真相,补齐已启用 swapfile 的安全扩容 plan/status/apply 与可见错误;运行面扩容不得触碰 Webterm,不得把 swap 计入 WebProbe 4 GiB 物理内存门槛,最终经 Git、PR 与自动链收敛,并继续评估业务侧真实内存释放,完成任务后将详细报告写入任务报告

R1.2.8 [completed]

继续完成 UniDesk #1710 的 NC01 Kubernetes 控制面对象收敛:把单一 devops-infra PipelineRun 留存泛化为 YAML-first 多 namespace 策略,覆盖 devops-infra、agentrun-ci、hwlab-ci、pikaoa-ci 与 selfmedia-ci;每个策略按稳定 owner 标签分组,只删除终态且超过窗口的 PipelineRun,保护活跃、最新、未知与解析失败对象,并通过 ownerRef 后台级联回收 TaskRun、Pod、Secret/PVC;手动 overview 与自动 timer 共用筛选器,最终记录对象数、k3s 内存和真实 MemAvailable,禁止触碰 Webterm、PK01、Vitest和人工 CI/CD补链,完成任务后将详细报告写入任务报告

R1.3

测试与验收:https://github.com/pikasTech/unidesk/issues/1842;覆盖生命周期、stale/protected 分类和失败路径,提交独立 PR;合并后只等待自动 CI/CD 发布链,使用正式入口验证 observer/Chrome 退出、内存压力缓解且健康运行面不受扰动,完成任务后将详细报告写入任务报告

R2 [completed]

完成 UniDesk #2248:新增 YAML-first web-probe console-verify typed command,按 node/lane/origin/profile 复用现有认证、远程浏览器、4 GiB MemAvailable 门禁、报告恢复和截图合同,一条命令完成 Cloud Console 路由×视口矩阵及可选 Projects/HWPOD/MDTODO/AgentRun 交互验证;配置拥有路由、视口、DOM 合同和等待,禁止写死节点、lane、origin、Issue 或 artifact,不作为 CI/CD gate且禁止 Vitest,完成任务后将详细报告写入任务报告

R2.1 [completed]

解决 UniDesk #2526:修复 console-verify production internal origin 错选开发 namespace、失败摘要缺失首个 page/console/request/response 错误、命令给出的 artifact inspect 路径被自身拒绝,以及 TaskTree workflow 固定等待首次点击后的 dialog;保持 owning YAML、认证、脱敏和浏览器门禁,支持 group 到 task 后的 dialog/docked 详情,不修改产品代码或降低错误门禁,完成任务后将详细报告写入任务报告

R3 [completed]

修复 UniDesk #2370WebProbe 已解析凭据但 Chromium 在首次导航前关闭且无 API 响应时,分类为浏览器运行时 blocker,并在单次有界输出披露 credential/request/API 分层事实,避免重复检查 Secret 与远端 artifact;不降低既有门禁、不阻塞业务交付,完成任务后将详细报告写入任务报告

R4 [completed]

改进 UniDesk #2425web-probe screenshot custom/local 可见性:scoped help 明确 --url--path 互斥,校验失败返回 typed reason、mutation=false 和可直接执行的修正示例,同步 webdev skill;只改帮助/错误与文档,不改浏览器能力、资源门禁、CI/CD 或运行面,完成任务后将详细报告写入任务报告

R5 [completed]

改进 UniDesk #2440 的 product-smoke typed 失败证据与工件下钻:一次失败运行直接披露有界 PDF status、mediaType、popup 生命周期、report/screenshot SHA 和受控下钻入口,保持 Secret 脱敏、输出上限与全部业务门禁,完成任务后将详细报告写入任务报告

R6 [completed]

完成 UniDesk #2501:新增 YAML/文件驱动的受控外部表单工作流,复用 WebProbe node/lane、浏览器资源门禁和 Secret sourceRef,支持 start/status/continue/stop、验证码暂停续填、PII 脱敏、草稿保存和默认禁止不可逆提交;以无真实 PII fixture 完成最小 smoke,完成任务后将详细报告写入任务报告

R7 [completed]

修复 UniDesk #2440 的 remote artifact 下钻路径回归:保留目标节点受控 path 与下载 local path 两种身份,确保 native-readiness 输出的 web-probe artifact inspect 命令可直接执行并通过 SHA 与路径门禁,完成任务后将详细报告写入任务报告