Files
pikasTech-HWLAB/docs/reference/spec-v03-caserun-web.md
T
root 2bc5fc653a
Pipelines as Code CI / hwlab-nc01-v03-ci-poll- Success
feat: 完善 CaseRun 原生证据视图
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-18 06:01:58 +02:00

6.3 KiB
Raw Blame History

HWLAB v0.3 CaseRun 独立页面设计规格

1. 设计结论

CaseRun 是硬件执行运行台,不是 Workbench 的附属诊断卡片。页面必须使用独立路由 /caserun,让用户从选择 case 到阅读执行证据都在同一条稳定深链内完成。

页面采用“命令栏 + 运行摘要 + 三栏运行工作区”的结构:

  • 左栏负责 case、HWPOD 资源和执行上下文选择。
  • 中栏负责当前 run 的阶段时间线、事件流和终态变化。
  • 右栏负责 aggregate、artifact、Trace、HWPOD operation result 和 blocker 阅读。

工作台可以保留跳转入口,但不再嵌入 CaseRun 控制面板,避免同一 run 在两个页面各自维护选择、轮询和状态投影。

2. 调研依据

  • AgentRun 运行观察页:采用窄命令栏、状态摘要条、可筛选主列表和右侧 Inspector,适合高密度运行状态扫描。
  • TaskTree 页面:采用稳定 URL、主内容区占优、时间线和可折叠详情,适合执行阶段与长列表阅读。
  • Temporal/CI 运行详情惯例:把 workflow/run identity、阶段、失败断点和产物引用分层展示,不能只用一个总体状态替代过程证据。
  • HWLAB 当前 Workbench:已有 CaseRunPanel、CaseRun store/API 和 native fixture,但面板尺寸、工作台上下文和 HWPOD 操作共用空间,无法承载完整证据阅读。
  • HarnessRL 合同:CaseRun 结果包含 runIdcaseIdstatusstageterminalblocker、events、aggregate、manifest、replay、Trace 和 HWPOD 引用,页面不得丢弃这些事实。

3. 视觉方向

采用“实验室控制台”视觉方向:

  • 复用 HWLAB 现有浅色 console token、IBM Plex Sans/Mono、窄命令栏和状态条。
  • 主色使用石墨、青绿色和少量琥珀/红色状态色,避免紫色渐变、营销式 hero 和装饰性大卡片。
  • 页面首屏直接展示可操作运行对象,标题区保持紧凑,不添加说明型大段文案。
  • 证据区使用浅色代码/日志表面,长文本内部滚动,不让原始 JSON 撑破页面。
  • 所有按钮遵循已有图标与文字组合;刷新、复制、打开 Trace 等熟悉动作使用图标并保留无障碍名称。
  • 卡片只用于重复的 case、阶段和证据条目,页面分区使用无装饰的 bounded layout,不嵌套卡片。

4. 页面信息架构

4.1 命令栏

  • eyebrowHARNESSRL / CASERUN
  • 标题:CaseRun 执行台
  • 描述:显示当前 selected origin、API mode 和最后一次读取时间。
  • 操作:刷新 cases、重新读取当前 run、复制 runId;运行中提供取消入口时使用后端已有 cancel contract。
  • 状态条:可用 cases、当前 status、stage、terminal、events 数量、artifact 数量。

4.2 左栏:执行选择

  • case 列表显示 caseId、标题、mode、目标 HWPOD 和可用状态。
  • 选择 case 后显示目标硬件、执行范围、workspace/能力摘要和已知 blocker。
  • 启动按钮只提交 caseId,不在客户端拼接 workspace、node、runtime URL 或 fallback。
  • 当前 run 进入深链后,左栏保留 case 选择但不覆盖当前 run。

4.3 中栏:运行过程

  • 顶部显示 runId、caseId、当前 status、stage、terminal 和更新时间。
  • 阶段时间线至少支持 queuedpreparingagent-runningbuildingdownloadinguart-readingaggregatingcompletedfailedcanceledblocked
  • 事件流显示服务端返回的时间、stage、status 和脱敏 payload 摘要。
  • 运行中按现有 API read model 轮询;terminal 只能由 API 返回的 terminal 决定。
  • 空态、加载态、错误态和 blocker 态必须保留主区域结构,不能以空白或通用请求失败替代。

4.4 右栏:证据 Inspector

使用 Tab 或折叠区组织以下证据:

  • Aggregatestatus、summary、evidence、aggregate SHA 和 run identity。
  • Artifactsmanifest 引用、artifact 数量、hash/ref 和可用状态。
  • TracetraceId、AgentRun/command/session 引用及只读下钻入口。
  • HWPODhwpodId、nodeId、operation result、workspace、能力和连接状态。
  • Blockercode、summary、layer、details 和下一步只读诊断。

默认展开 Aggregate 和 BlockerTrace、原始事件和 manifest 在需要时展开,避免长日志抢占首屏。

5. 深链与状态权威

  • 基础路由为 /caserun
  • 当前 run 使用 /caserun/runs/:runId,刷新后恢复同一个 run。
  • query 只承载 casetab 等集合视图状态,不承载终态、stage、artifact 或 blocker。
  • Web 只调用 selected origin 的同源 CaseRun API。
  • API 的 statusstageterminaleventsaggregate 和引用字段是唯一事实;客户端不能依据 elapsed time、事件数量、HTTP 200 或 fixture 名称合成终态。

6. L1 Native 合同

前后端必须独立启动、独立日志、独立停止:

  • API/fixture:使用现有 caserun:native:start|stop|status|logs,默认 native API port 为 4316
  • Web:使用 dev:native-caserunVite HMR 与 /v1/caserun/* native proxy 独立运行。
  • Native fixture:继续覆盖 queued、running、completed、failed、blocked、canceled、events 和 aggregate。
  • Web smoke:使用 repo-owned caserun-native-web-probe.mjs,验证 /caserun 首屏、case 选择、启动、刷新、事件和 aggregate。
  • Native 页面必须显示 mode=native-test,但生产 selected origin 不得读取 native fixture 或 native fallback。

7. 响应式与验收

  • 桌面首屏使用三栏 bounded workspace,主 run 区域优先保证可读宽度。
  • 中等宽度将右侧 Inspector 收为抽屉或下方区域,不能压缩事件流至不可读。
  • 移动端按“命令栏 → 当前 run → case 选择 → 事件 → 证据”纵向排列,启动和刷新保持可达。
  • L1 验收使用 web-probe custom/local 入口,覆盖桌面 1920x1080 和紧凑桌面视口。
  • 必须确认首屏 DOM、启动/刷新交互、无 pageerror、无 console.error、无关键失败请求和无 document 横向溢出。

8. 非目标

  • 不在本次页面改造中重写 HarnessRL API、Temporal workflow 或 CaseRun evidence contract。
  • 不恢复 v0.2 direct URL、旧 runner、G14 fallback 或客户端第二状态源。
  • 不把 CI/CD、Kubernetes、HWPOD node 或原始数据库访问暴露给浏览器。