From 7459969471df7304db510baac3f182f05a01d25a Mon Sep 17 00:00:00 2001 From: Codex Date: Fri, 26 Jun 2026 12:46:08 +0000 Subject: [PATCH] =?UTF-8?q?docs(webdev):=20=E8=AE=B0=E5=BD=95=20sentinel?= =?UTF-8?q?=20dashboard=20DOM=20=E9=AA=8C=E8=AF=81=E9=9C=80=E6=98=BE?= =?UTF-8?q?=E5=BC=8F=20page.goto(sentinel=20publicBaseUrl)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit web-probe script 默认 origin 是 lane 的 HWLAB Cloud Web (hwlab workbench), 不是 sentinel dashboard origin (monitor.pikapython.com);验证 sentinel dashboard 页面 DOM 必须显式 page.goto(sentinel publicBaseUrl),不能用 gotoStable('/')。根因 (web-probe 缺 sentinel dashboard DOM 验证受控入口) 登记为 [FEEDBACK] #1030。 执行 issue #1025 P4 验证时发现的可复用坑。 --- .agents/skills/unidesk-webdev/references/full.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.agents/skills/unidesk-webdev/references/full.md b/.agents/skills/unidesk-webdev/references/full.md index 2c3967bb..b55880c7 100644 --- a/.agents/skills/unidesk-webdev/references/full.md +++ b/.agents/skills/unidesk-webdev/references/full.md @@ -150,6 +150,7 @@ bun scripts/cli.ts web-probe observe analyze webobs-xxxx - `observe start/status/command/collect/analyze` 默认输出包含 `Wrapper contract` 区块;该区块证明 Web 哨兵只能 wrap 现有 observe CLI verb、现有 runner/analyzer 和既有 artifact contract,不新增第二套 Playwright runner、analyzer、状态机或私有 web-probe API。 - `web-probe sentinel plan|status` 只读取 `observability.webProbe.sentinel.enabled/configRefs` 和 owning YAML,渲染 redacted 配置引用图、文件 hash、缺失字段和跨 ref 冲突;`web-probe sentinel image|control-plane` 继续从 owning YAML 渲染 image、GitOps、Argo 和 manifest 计划,并在远端 publish job 接通前拒绝报告部署 mutation。它不启动浏览器、不读取 Secret 值、不保存采样结果,也不是第二套 runner/analyzer。真正的采样和判定仍以 `observe start|command|collect|analyze` artifacts 为准。 - Web 哨兵 public dashboard/origin 必须以 issue/SPEC/YAML 既定计划为准;当前 P6 计划沿用 `monitor.pikapython.com`,不要未经明确变更改成 `hwlab-monitor.pikapython.com` 或其他新域名。验证 report 时记录 `publicOrigin`,但不要把域名硬编码到 runner/analyzer 逻辑里。 +- 验证 sentinel public dashboard **页面 DOM/截图**(区别于 CI/CD `sentinel status|plan|image|control-plane`)时,`web-probe script` 的默认 origin 是 lane 的 HWLAB Cloud Web(`gotoStable('/')` 进入 hwlab workbench),不是 sentinel dashboard origin;必须用显式 `page.goto('/')`(`publicBaseUrl` 来自 `config/hwlab-web-probe-sentinel/public-exposure.*.yaml#sentinel.publicExposure.publicBaseUrl`,如 `https://monitor.pikapython.com`)进入 dashboard 页面,再用 `safeEvaluate`/`screenshot` 采样,不能用 `gotoStable('/')` 期望落到 sentinel dashboard。这是 web-probe 缺少 sentinel dashboard DOM 验证受控入口的临时绕过,根因见 [pikasTech/unidesk#1030](https://github.com/pikasTech/unidesk/issues/1030);dashboard DOM 验证脚本不要复用 hwlab workbench 的 `waitWorkbenchReady`/session helper 作为通过条件。 - `scripts/web-probe-sentinel-service.ts` 是 Web 哨兵 Pod entrypoint;`--once` 只做 config/PVC/SQLite/scheduler/analyzer-command health 快照,`--scheduler-disabled` 仅用于本地服务健康冒烟,不能作为生产运行参数。HTTP 服务只提供 `/api/health`、`/api/status`、`/api/runs`、`/api/maintenance`、`/metrics` 和 redacted dashboard 外壳,底层采样仍只能经 observe CLI adapter。 - `trace-frame` 出现 `(无 trace rows;这是 blocker...)` 时,必须先看同一输出中的 `TRACE DIAGNOSTIC`:记录 pageRole/pageId、traceRows/turns/messages 数量、sampleTraceIds、尾部 traceRow/turn/message 归属。若目标 trace 的 turn/message/final 存在但 traceRows 全部属于旧 trace,应按 Workbench read model authority 分裂登记到架构/业务 issue(例:HWLAB #2124),不得把旧 traceRows 当作新 turn 通过证据,也不得让 analyzer 的聚合计数压过 CLI trace 视图。 - analyzer finding 不得压过 CLI `trace-frame` 人工视图。尤其 `trace-assistant-message-duplicates-final-response` 只有在 `trace-frame` 中同一 completed turn 可见多条相同 assistant final rows 时才按业务 bug 处理;如果 `trace-frame` 只有一条 assistant final row、后面固定 `Final Response` 区块正确且 API messages/turns 对齐,该 amber 归类为 analyzer 精度问题,应登记/修工具,不得阻止业务 closeout。