288 lines
22 KiB
Markdown
288 lines
22 KiB
Markdown
# PJ2026-0103 HarnessRL
|
||
|
||
## 修改历史
|
||
|
||
| 版本 | 对应 commit id | 更新日期 | 变更说明 |
|
||
| --- | --- | --- | --- |
|
||
| v0.3 | b5d8cee438a3bd66ca440a25bf5a16d9081d9efa | 2026-06-14 | 将 issue/PR 引用显示改为短号 Markdown 链接,链接目标保留完整 URL。 |
|
||
| v0.2 | b0cbe9b721b50e9fff4d350ee50ed2af03cf0405 | 2026-06-14 | 将 issue/PR 引用改为完整 GitHub URL,避免 Markdown 渲染时裸 # 编号失效。 |
|
||
| v0.1 | 37de91c653c055bf19ac271bdb687b54072639fa | 2026-06-14 | 从迁移来源 pikasTech/HWLAB#1205 迁移到 UniDesk 项目管理目录。 |
|
||
|
||
当前正文仍在规格治理草稿中;未定稿前不新增版本号,不为单次编辑追加 `待提交` 版本。
|
||
|
||
## 正文
|
||
|
||
## PJ2026-0103 HarnessRL 需求规格
|
||
|
||
## 1. 文档控制
|
||
|
||
| 字段 | 内容 |
|
||
| --- | --- |
|
||
| 编号 | PJ2026-0103 |
|
||
| 短名 | HarnessRL |
|
||
| 层级 | L1 方向 |
|
||
| 状态 | 已生效 |
|
||
| 实现引用版本 | draft-2026-06-25-p0-web-caserun-e2e; draft-2026-07-17-p0-temporal-native-agile |
|
||
| 需求规格模板 | [ISO/IEC/IEEE 29148 需求规格模板](../../templates/iso-iec-ieee-29148-requirements-spec-template.md) |
|
||
| 上级规格 | [PJ2026-01 HWLAB 总规格](PJ2026-01-HWLAB.md) |
|
||
| 规格治理索引 | [规格治理](spec-governance.md) |
|
||
|
||
本文采用 ISO/IEC/IEEE 29148 需求规格模板的项目裁剪版:正文只保留 HarnessRL 的稳定使命、范围、术语、系统边界、内部分工和原子需求。
|
||
|
||
## 2. 目的和范围
|
||
|
||
### 2.1 目的
|
||
|
||
HarnessRL 负责把真实硬件执行组织成可审计、可复验、可比较、可回流改进的 Harness/RL 闭环。它定义 CaseRun 语义、外部观测模型、评价回放和训练反馈,使 HWLAB 不只知道一次任务是否执行过,还能解释执行结果如何被判定和如何改进。
|
||
|
||
Web CaseRun 是 HarnessRL 面向用户的正式端到端能力:用户从 YAML 选中的 Cloud Web origin 或同源非视觉入口提交 CaseRun,经 AgentRun、HWPOD 服务和靠近硬件的 HWPOD node 执行,再把 trace、硬件 operation result、artifact manifest、aggregate 和回放线索回到同一入口。
|
||
|
||
### 2.2 范围内
|
||
|
||
- CaseRun case definition、stage model、postValidation、run-local workspace 和 case registry 语义。
|
||
- Web CaseRun 端到端语义,包括同源提交、短返回 runId、run stage 查询、AgentRun trace 引用、HWPOD operation result 引用、artifact/aggregate 归属和 web-probe 等价验收边界。
|
||
- CaseRun durable workflow、API/worker 分离、取消与重启恢复,以及 native 前后端独立开发和 smoke 合同。
|
||
- HWPOD raw output、Agent trace、artifact、diff、final response 和硬件观测之间的验证事实关系。
|
||
- CaseRun 对 HWPOD 服务返回观测事实的引用,包括 probeId、单位、采样、统计和与硬件动作的关联;ioProbe 是其中一种 HWPOD 观测输入。
|
||
- aggregate、评价、baseline、replay、失败分类和可复验比较。
|
||
- 训练反馈、失败标签、reward、prompt/skill/case 改进数据和 RL 闭环。
|
||
|
||
### 2.3 范围外
|
||
|
||
- 真实硬件资源、probe 能力、HWPOD node 和原始硬件事实归 [硬件池](PJ2026-0101-hardware-pool.md)。
|
||
- Agent run、command、session、workspace 和 provider profile 生命周期归 [Agent编排](PJ2026-0102-agent-orchestration.md)。
|
||
- Web、CLI 和 HTTP API 的用户入口体验归 [客户端](PJ2026-0104-client.md)。
|
||
- 用户身份、额度、账本和租户策略归 [用户管理](PJ2026-0105-user-management.md)。
|
||
- CI/CD、registry 保留、日志基础设施和平台发布归 [平台运维](PJ2026-0106-platform-ops.md)。
|
||
|
||
## 3. 术语表
|
||
|
||
| 术语 | 定义 |
|
||
| --- | --- |
|
||
| CaseRun | 按 case definition 执行硬件研发任务并形成 registry 记录的 Harness 运行。 |
|
||
| Web CaseRun | 用户通过 Cloud Web 或同源自动化入口提交、观察和复验的 CaseRun 形态。 |
|
||
| case registry | CaseRun 的结构化结果登记,用于保存 case、run、stage、artifact 和评价关系。 |
|
||
| aggregate | 面向人工和客户端的低噪声结果摘要,不替代原始执行事实。 |
|
||
| operation result | HWPOD 服务归属的一次硬件操作结果,包含 HWPOD、node、租约、调用方、操作类型、时间上下文和原始硬件事实摘要。 |
|
||
| artifact manifest | CaseRun 对 trace、diff、build/download/UART 证据、日志片段、aggregate 和外部产物哈希的结构化索引。 |
|
||
| selected Web origin | 由 node/lane YAML 声明并经受控 CLI 解析的 Web origin;默认是 public origin,本次 D601/v03 端到端验收允许 YAML 选择 internal IP origin。 |
|
||
| web-probe | 通过 selected Web origin 运行的非视觉浏览器验收路径;它只能使用同源用户/API 路径,不是新的业务入口或后门。 |
|
||
| ioProbe | 由 HWPOD 服务管理的板外物理状态观测探针,输出带单位、采样和统计语义的数据。 |
|
||
| replay | 基于同一 case 和验证事实关系复核执行结果的能力。 |
|
||
| 训练反馈 | 从成功/失败路径中沉淀出的 prompt、skill、case、reward 或策略改进材料。 |
|
||
| CaseRun workflow | 由 Temporal 持久化推进的 CaseRun 编排历史,只拥有 stage 调度、retry、timer、signal、cancel 和恢复语义。 |
|
||
| HarnessRL API | 提供 CaseRun admission、query、events、aggregate 和 cancel 的无状态 API 进程,不执行硬件 activity。 |
|
||
| HarnessRL worker | 执行 CaseRun workflow 与 activity 的独立进程,不承载用户 HTTP API。 |
|
||
| native 模式 | 不依赖 Kubernetes 即可独立启动 Temporal 开发运行时、API、worker、CLI adapter 和前端测试服务的开发形态;它不构成生产 fallback。 |
|
||
|
||
## 4. 系统边界和接口
|
||
|
||
本规格把 HarnessRL 作为 HWLAB 内部的验证与训练反馈子系统看待;本章只描述该子系统的输入、输出和责任边界。
|
||
|
||
| 边界项 | 内容 |
|
||
| --- | --- |
|
||
| 外部使用者 | Agent编排、客户端、用户管理、硬件池和训练任务。 |
|
||
| 外部输入 | case definition、Web/CLI/API 提交请求、workspace commit、HWPOD raw output、HWPOD 服务观测结果、Agent trace、artifact、diff、run context 和用户/资源摘要。 |
|
||
| 受控资源 | CaseRun 定义、case registry、aggregate、评价模型、replay 入口、训练反馈样本和失败标签。 |
|
||
| 外部输出 | CaseRun 结果、run stage、aggregate、artifact manifest、评价结论、replay 线索、失败分类、训练反馈和可复验的验证关系。 |
|
||
| 用户接口 | YAML-selected Cloud Web CaseRun 入口、同源 CaseRun API、web-probe 验收路径、CaseRun CLI、case registry、aggregate、评价/回放入口、Agent Review 后端语义。 |
|
||
| 系统边界 | HarnessRL 负责评价和反馈语义;不定义硬件可用性、Agent 生命周期、客户端布局、用户账本或平台发布。 |
|
||
|
||
## 5. 内部分工与规格索引
|
||
|
||
| 编号 | 模块或课题 | 规格文档 | 主责边界 | 上游依赖 | 下游支撑 |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| PJ2026-010301 | CaseRun规格 | 本规格 6.1 | case definition、stage model、postValidation、registry 语义 | Agent编排、硬件池、平台运维 | 客户端、用户管理 |
|
||
| PJ2026-010302 | 观测引用 | 本规格 6.2 | CaseRun 中引用 HWPOD 服务返回的外部观测、单位、采样、统计和硬件动作关联 | [PJ2026-010103 HWPOD服务](PJ2026-010103-hwpod-service.md) | CaseRun、评价回放 |
|
||
| PJ2026-010303 | 评估回放 | 本规格 6.3 | aggregate、baseline、judge、replay 和失败分类 | CaseRun、Agent编排、硬件池 | 客户端、训练反馈 |
|
||
| PJ2026-010304 | 训练反馈 | 本规格 6.4 | reward、失败标签、prompt/skill/case 改进样本 | 评估回放、Agent编排 | Agent编排、用户管理 |
|
||
| PJ2026-010305 | Web CaseRun端到端 | 本规格 6.5 | Web/API/web-probe 入口到 CaseRun、AgentRun、HWPOD、artifact、aggregate 的端到端语义和验收边界 | 客户端、Agent编排、硬件池、平台运维 | 用户、内测、训练反馈 |
|
||
|
||
### 5.1 目标架构图
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
subgraph Client[客户端]
|
||
W[Cloud Web CaseRun UI]
|
||
P[web-probe 同源浏览器验收]
|
||
C[HWLAB CLI thin client]
|
||
end
|
||
subgraph API[HarnessRL API]
|
||
R[CaseRun REST API]
|
||
T[Temporal client]
|
||
A[Registry / aggregate read model]
|
||
end
|
||
subgraph Worker[HarnessRL Worker]
|
||
WF[Temporal CaseRun workflow]
|
||
AC[prepare / build / collect activities]
|
||
end
|
||
subgraph Agent[Agent编排]
|
||
AR[AgentRun run / command / trace]
|
||
WS[subject worktree / RuntimeAssembly]
|
||
end
|
||
subgraph Hwpod[硬件池]
|
||
S[HWPOD service / lease / route]
|
||
N[HWPOD node / Python UI node]
|
||
HW[Keil / debug probe / UART / board]
|
||
end
|
||
W --> R
|
||
P --> R
|
||
C --> R
|
||
R --> T
|
||
T --> WF
|
||
WF --> AC
|
||
AC --> AR
|
||
AR --> WS
|
||
AC --> S
|
||
S --> N
|
||
N --> HW
|
||
HW --> N
|
||
N --> S
|
||
S --> AC
|
||
AR --> AC
|
||
AC --> A
|
||
A --> R
|
||
```
|
||
|
||
目标架构要求 Cloud Web、web-probe 和 CLI `--over-api` 都通过 YAML 选中的同一 Web origin 和同源 CaseRun API 访问同一 run 事实。HarnessRL API 与 worker 必须是独立进程和独立部署对象。Temporal workflow history 只作为 durable orchestration authority;HarnessRL registry 是 run、stage event、workflow identity、artifact manifest 和 aggregate 的产品 read model 与归档索引;Agent编排和硬件池的事实权威保持不变。API 或 worker 重启不得使 workflow 退回进程内 memory state,也不得从 Temporal UI、stdout 或客户端投影合成业务成功事实。
|
||
|
||
### 5.2 目标数据流图
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
Submit[用户或 web-probe 提交 caseId + hwpodId] --> Admission[CaseRun admission]
|
||
Admission --> Registry[registry runId / stage=queued]
|
||
Admission --> Workflow[Temporal workflow start]
|
||
Workflow --> Lease[HWPOD lease request]
|
||
Workflow --> AgentRun[AgentRun run/command]
|
||
AgentRun --> Diff[subject worktree diff / final response]
|
||
Lease --> Ops[HWPOD operation results]
|
||
Ops --> Build[build/download/UART/raw facts]
|
||
Diff --> Manifest[artifact manifest]
|
||
Build --> Manifest
|
||
AgentRun --> Manifest
|
||
Manifest --> Aggregate[aggregate / evaluation / replay refs]
|
||
Aggregate --> Registry
|
||
Registry --> Status[CaseRun status/read model]
|
||
Status --> Web[Cloud Web run card]
|
||
Status --> Probe[web-probe report]
|
||
```
|
||
|
||
数据流必须保证:CaseRun admission 只短返回 runId、workflow identity 和查询入口;workflow activity 必须幂等,并以稳定 activity identity 写入 registry;AgentRun trace、HWPOD operation result、diff、build/download/UART 证据和 aggregate 都以 artifact manifest 关联到同一 run。Web、CLI `--over-api` 和 web-probe 只读取同一 status/read model。共享 registry 必须提供纯读、游标分页的运行历史,使 Web 能发现并加载 CLI `--over-api` 已提交的 run;列表只交接运行身份、状态、阶段、时间和证据摘要,完整事件与 aggregate 仍按 runId 渐进读取。CLI local 模式复用同一 application service、DTO 和 workflow/activity 合同,但使用显式 local adapter,不把本地 fixture 写入生产 registry,也不得静默发布到 Web 所读取的共享 registry。
|
||
|
||
### 5.3 关键时序图
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant U as Web / web-probe
|
||
participant API as CaseRun API
|
||
participant HR as HarnessRL API / Registry
|
||
participant TW as Temporal Workflow
|
||
participant WK as HarnessRL Worker
|
||
participant AR as AgentRun
|
||
participant HP as HWPOD service
|
||
participant PN as Python UI node
|
||
participant HW as STM32 / Arm2D HWPOD
|
||
U->>API: POST /v1/caserun/runs
|
||
API->>HR: validate case + create registry run
|
||
HR-->>U: 202 runId + statusUrl
|
||
HR->>TW: start workflow
|
||
TW->>WK: schedule idempotent activities
|
||
WK->>AR: create AgentRun run/command
|
||
WK->>HP: acquire lease + route operation
|
||
HP->>PN: dispatch debug/workspace/UART op
|
||
PN->>HW: build/download/reset/UART
|
||
HW-->>PN: raw hardware facts
|
||
PN-->>HP: operation result
|
||
AR-->>WK: trace/result/diff refs
|
||
HP-->>WK: operation result refs
|
||
WK->>HR: write stage / manifest / aggregate refs
|
||
WK-->>TW: activity result
|
||
U->>API: GET status/events/aggregate
|
||
API-->>U: run stage + trace + HWPOD evidence + aggregate
|
||
```
|
||
|
||
关键时序要求长任务异步推进。`POST /v1/caserun/runs` 不等待 Agent、Keil、download 或 UART 完成;Web 和 web-probe 通过 status、events 和 aggregate 观察 terminal。HWPOD 写操作必须经 HWPOD 服务租约和 node 路由,不允许 Web、web-probe、CLI 或 Agent 直接连接用户 PC gateway、旧 v0.2 direct-url 或手工 SSH 路径。
|
||
|
||
取消必须进入 Temporal signal/cancel 语义,并由 workflow 在 registry 中写入 durable `canceled` 终态。API 进程重启不得影响 workflow;worker 重启后必须从 Temporal history 恢复并继续未完成 activity。activity retry 不得复制 AgentRun command、HWPOD operation 或 artifact;已有下游 identity 必须通过稳定幂等键恢复。
|
||
|
||
### 5.4 Web CaseRun 独立页面与设计契约
|
||
|
||
Web CaseRun 必须作为独立产品页面提供,入口为 `/caserun`,运行详情支持稳定深链 `/caserun/runs/:runId`。它不是 Workbench 的附属面板,也不得要求用户先进入代码编辑或 Agent 对话上下文。导航、直接访问和刷新深链都必须使用同一 `workbench.code` 权限边界与同一 CaseRun API。
|
||
|
||
页面采用面向重复操作的实验室控制台布局:顶部命令栏承载页面身份、模式/来源、刷新、复制 runId 和启动动作;状态摘要集中显示当前 run 的终态、阶段、耗时和证据完整度;主体使用左侧 case/HWPOD 选择、中间运行时间线与事件流、右侧 aggregate/artifact/trace/HWPOD 证据检查器的三栏结构。窄屏按“选择上下文→运行状态→证据”顺序折叠,不能依靠横向滚动才能完成核心操作。
|
||
|
||
页面可见文案应以中文为主;`CaseRun`、`HarnessRL`、`HWPOD`、`runId`、`traceId`、`SHA256` 和 API 字段等领域标识可以保留原文,但状态、阶段、操作、空态和错误说明必须提供中文表达。页面必须采用受限工作区:AppShell 主内容区和 CaseRun 页面根容器不产生全局滚动,命令栏与状态摘要稳定可见,case 列表、事件流、阶段轨道和证据检查器只在所属 pane 内滚动;移动端按既定顺序在工作区内部纵向滚动,不把滚动责任退回 document。
|
||
|
||
视觉设计应服务于硬件执行的扫描、比较和故障定位:沿用 Cloud Web 控制台 token、清晰的状态色、紧凑的 IBM Plex Sans/Mono 信息层级、稳定的表格/时间线间距和可识别的图标按钮;不得使用营销式 hero、紫色渐变、装饰性背景块、嵌套卡片或把关键结果藏在视觉装饰中。按钮、标签、状态、时间线和证据区必须在桌面、紧凑桌面与移动视口下保持文本不重叠、控件不跳动和可读。
|
||
|
||
页面只投影 API 返回的 `status`、`stage`、`terminal`、`events`、`aggregate` 和 `references`。客户端不得依据 elapsed time、HTTP 状态码、事件数量、fixture 名称或本地计时器合成终态、成功或证据完整度。native test fixture 只能作为显式 `mode=native-test` 的开发输入,并且页面应与真实 API 的 DTO 和错误契约保持一致。
|
||
|
||
## 6. 原子需求
|
||
|
||
### 6.1 HARNESS-L1-REQ-001 CaseRun 执行语义
|
||
|
||
| 编号 | 短名 | 主责模块 | 关联模块 |
|
||
| --- | --- | --- | --- |
|
||
| HARNESS-L1-REQ-001 | CaseRun 语义 | PJ2026-010301 CaseRun规格 | [Agent编排](PJ2026-0102-agent-orchestration.md)、[硬件池](PJ2026-0101-hardware-pool.md)、[平台运维](PJ2026-0106-platform-ops.md) |
|
||
|
||
HarnessRL 应定义 CaseRun 的 case definition、stage model、postValidation、run-local workspace 和 case registry 语义,使一次真实硬件任务可以被稳定表达和复验。
|
||
|
||
CaseRun 语义必须引用 Agent 执行上下文和硬件事实,但不接管这些事实的生产。Agent编排提供 run/session/workspace 指针,硬件池提供真实硬件输出,平台运维提供 registry 和运行支撑。
|
||
|
||
CaseRun stage model 至少应能表达 queued、preparing、agent-running、building、downloading、uart-reading、aggregating、completed、failed、canceled 和 blocked 等用户可理解状态。每个 stage 必须能关联其上游事实来源,例如 AgentRun run/command/trace、HWPOD operation result、artifact manifest 或 aggregate revision。
|
||
|
||
CaseRun 必须由 Temporal durable workflow 推进。workflow 代码只包含确定性编排,所有文件系统、网络、AgentRun、HWPOD、registry 和时间相关副作用必须进入 activity。HarnessRL API 与 worker 必须分离;API 只承担 admission、query、events、aggregate 和 cancel,worker 只承担 workflow/activity。运行中的 workflow 不得依赖 API 进程内 `Map`、后台 Promise 或 Pod 本地 record 才能恢复。
|
||
|
||
HarnessRL registry 必须使用 HWLAB 既有 PostgreSQL 运行面中的服务自有 schema/table 保存 run、stage event、workflow identity 和 artifact ref。Temporal history 与 registry 职责必须单向明确:Temporal 是编排历史权威,registry 是产品 read model 和归档索引;两者都不得覆盖 AgentRun 或 HWPOD 的领域事实。
|
||
|
||
### 6.2 HARNESS-L1-REQ-002 CaseRun 观测引用
|
||
|
||
| 编号 | 短名 | 主责模块 | 关联模块 |
|
||
| --- | --- | --- | --- |
|
||
| HARNESS-L1-REQ-002 | 观测引用 | PJ2026-010302 观测引用 | [硬件池](PJ2026-0101-hardware-pool.md)、[客户端](PJ2026-0104-client.md) |
|
||
|
||
HarnessRL 应在 CaseRun 语义中引用 HWPOD 服务提供的外部观测结果,使外部读数能够与 case stage、硬件动作、评价和回放关系稳定关联。
|
||
|
||
ioProbe 只是 HWPOD 观测输入的一种。probe 能力、probe 绑定、物理采样、HWPOD node 路由和原始硬件事实归 [PJ2026-010103 HWPOD服务](PJ2026-010103-hwpod-service.md) 负责;HarnessRL 不自建 ioProbe 硬件模型,也不绕过 HWPOD 服务直接管理 probe。
|
||
|
||
HarnessRL 只负责把 HWPOD 服务返回的观测事实纳入 CaseRun stage、postValidation、评估和回放关系,并区分板内 echo、日志输出和板外真实读数。客户端只负责展示这些结果,不重新定义观测来源。
|
||
|
||
### 6.3 HARNESS-L1-REQ-003 评估与回放
|
||
|
||
| 编号 | 短名 | 主责模块 | 关联模块 |
|
||
| --- | --- | --- | --- |
|
||
| HARNESS-L1-REQ-003 | 评估回放 | PJ2026-010303 评估回放 | [客户端](PJ2026-0104-client.md)、[Agent编排](PJ2026-0102-agent-orchestration.md) |
|
||
|
||
HarnessRL 应提供评估与回放语义,使同一次硬件执行可以被 aggregate 阅读、被 baseline 或 judge 比较,并能基于同一验证关系复核结论。
|
||
|
||
评估回放不是客户端展示,也不是 Agent 执行状态。它定义判断结果如何产生、如何解释、如何复核;客户端可以展示结论,Agent编排可以消费反馈,但不能替代 HarnessRL 定义评价语义。
|
||
|
||
### 6.4 HARNESS-L1-REQ-004 训练反馈
|
||
|
||
| 编号 | 短名 | 主责模块 | 关联模块 |
|
||
| --- | --- | --- | --- |
|
||
| HARNESS-L1-REQ-004 | 训练反馈 | PJ2026-010304 训练反馈 | [Agent编排](PJ2026-0102-agent-orchestration.md)、[用户管理](PJ2026-0105-user-management.md) |
|
||
|
||
HarnessRL 应把成功路径、失败分类和评价结论转化为可回流的训练反馈,使 prompt、skill、case、node-op 或 reward 数据能进入后续改进。
|
||
|
||
训练反馈必须来自真实执行和可复验评价,不能绕过硬件事实或使用特权模拟路径制造成功样本。Agent编排消费改进材料,用户管理只在需要时提供租户、权限和 usage 归因。
|
||
|
||
### 6.5 HARNESS-L1-REQ-005 Web CaseRun 端到端
|
||
|
||
| 编号 | 短名 | 主责模块 | 关联模块 |
|
||
| --- | --- | --- | --- |
|
||
| HARNESS-L1-REQ-005 | Web CaseRun端到端 | PJ2026-010305 Web CaseRun端到端 | [客户端](PJ2026-0104-client.md)、[Agent编排](PJ2026-0102-agent-orchestration.md)、[硬件池](PJ2026-0101-hardware-pool.md)、[平台运维](PJ2026-0106-platform-ops.md) |
|
||
|
||
HarnessRL 应把 Web CaseRun 定义为正式端到端能力,使用户能从 Cloud Web 或同源非视觉入口选择 case 与 HWPOD,提交运行,观察 run stage、Trace、HWPOD evidence、artifact manifest 和 aggregate,并在终态后获得可回放、可复验的结果。
|
||
|
||
Web CaseRun 必须采用同源短返回 API:提交请求返回 runId 和状态查询入口,长执行由 HarnessRL、Agent编排和硬件池异步推进。Cloud Web、HWLAB CLI 和 web-probe 都必须使用 YAML 选中的同一 origin、同一 CaseRun API、同一用户身份、同一 run/read model 和同一 aggregate;web-probe 只是 Cloud Web 的非视觉验收路径,不能使用后门 API、未在 YAML 声明的内部服务端口、SSH、数据库或旧 lane 直连来替代用户路径。
|
||
|
||
Web CaseRun 的执行事实必须按职责分仓。AgentRun run、command、trace、diff 和 final response 归 Agent编排生产;HWPOD spec、租约、节点路由、operation result、Keil build、download、UART 和原始硬件事实归硬件池生产;HarnessRL 只把这些事实纳入 CaseRun stage、artifact manifest、aggregate、评价和 replay。任何模块缺失、延迟或失败时,CaseRun 应输出结构化 blocker 和事实来源,而不是用客户端文案、人工 steer、stdout 尾部或旧 CLI 成功样本补造成通过。
|
||
|
||
Web CaseRun 的最小完成标准应先覆盖 compile-only case:同一 run 能从 Web 或 web-probe 提交,终态包含 caseId、runId、hwpodId、nodeId、AgentRun traceId、HWPOD operation result 引用、artifact manifest hash 和 aggregate。download+UART 与 Arm2D 场景可作为增强阶段,但其证据仍必须进入同一 CaseRun manifest 和 aggregate 语义。
|
||
|
||
CaseRun 必须提供 repo-native 敏捷开发形态。后端应能在 Kubernetes 外独立启动 Temporal 开发运行时、HarnessRL API 和 worker,并分别支持 watch/reload;CLI 应提供默认 local 模式和显式 `--over-api` 模式,两者共享 application service、DTO、typed error 和 submit-and-poll 合同;前端应能独立启动 Vite HMR 与可热重载的 native CaseRun test API,覆盖 queued、running、completed、failed、blocked、canceled、events 和 aggregate。native fixture 必须显式标记 `mode=native-test`,不得成为生产 fallback 或通过判定来源。L1 的固定端口、host、状态目录和服务组成必须由 YAML-first 配置声明,API、worker 和 Web 的启动、停止、重启、状态和日志必须由项目 CLI 管理;裸起脚本只作为 CLI 内部实现。L1 浏览器和用户入口必须从 owning YAML 解析出的公网 IP 与固定 port 访问,localhost 只允许作为进程健康 probe。
|
||
|
||
交付顺序必须先完成 native smoke,再回归原 CI/CD。native smoke 至少验证 software-smoke、cancel、API restart、worker restart recovery 和 CLI local/`--over-api` 合同等价;生产回归只由 `v0.3` PR merge 触发既有 GitHub webhook、Gitea snapshot、PaC、Tekton、GitOps/Argo 自动链,不得人工补跑或同步。
|