docs: capture sentinel dashboard scope rules

This commit is contained in:
Codex
2026-06-28 08:55:07 +00:00
parent b14df0f8a0
commit d8761ed26f
4 changed files with 13 additions and 5 deletions
@@ -155,7 +155,7 @@ MDTODO 或 Project Management 的 Web 重写/布局 closeout 不能只引用组
- `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('<sentinel publicBaseUrl>/')``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 作为通过条件
- 验证 sentinel public dashboard **页面 DOM/截图**(区别于 CI/CD `sentinel status|plan|image|control-plane`)时,优先使用 `web-probe sentinel dashboard verify|screenshot --node <node> --lane <lane> --sentinel <id>`;该受控入口会从 YAML public exposure 进入 dashboard 页面,使用目标 node/lane 远程浏览器,并输出 bounded DOM/截图证据。`web-probe script` 的默认 origin 仍是 lane 的 HWLAB Cloud Web,不是 sentinel dashboard origin;只有受控 dashboard 命令暂时覆盖不到的一次性探索才用显式 `page.goto('<sentinel publicBaseUrl>/')`,同类动作第二次出现时必须沉淀回 sentinel dashboard 命令
- `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。