docs: 拆分 Workbench 回放验收规则

This commit is contained in:
pikastech
2026-07-21 13:45:44 +02:00
parent db594bf871
commit 0bca0a4034
2 changed files with 10 additions and 3 deletions
+3 -1
View File
@@ -209,7 +209,9 @@ description: UniDesk Web 开发与受控浏览器验证技能。用户提到 Web
- session 切换或重连期间的 replay 可见性以 `docs/reference/hwlab.md#纯-kafka-页面刷新与实时交接合同` 为唯一权威: - session 切换或重连期间的 replay 可见性以 `docs/reference/hwlab.md#纯-kafka-页面刷新与实时交接合同` 为唯一权威:
- connected 前允许后台追赶,但页面必须保留切走前的稳定投影,不得显示历史前缀导致最近更新时间倒退; - connected 前允许后台追赶,但页面必须保留切走前的稳定投影,不得显示历史前缀导致最近更新时间倒退;
- handoff 完成后只把待处理 frame 交给原 reducer 一次发布,失败或 scope 替换时丢弃未完成事务; - handoff 完成后只把待处理 frame 交给原 reducer 一次发布,失败或 scope 替换时丢弃未完成事务;
- L1 先用 `validateExistingSessionRefresh` 证明单 EventSource、retention→live 和禁止恢复请求,再对真实运行中 session 用 `switchAwayAndBack --session-id <id>` 验证用户操作路径; - L1 验收分为两个现有 typed command
- 先用 `validateExistingSessionRefresh` 证明单 EventSource、retention→live 和禁止恢复请求;
- 再对真实运行中 session 用 `switchAwayAndBack --session-id <id>` 验证用户操作路径;
- 在统一 typed command 尚未提供切换期间的时间标签采样前,L0 可见性测试是“不回退”的主证据,L1 两条 typed command 只补真实入口和 transport 合同,禁止把最终截图冒充过程证据; - 在统一 typed command 尚未提供切换期间的时间标签采样前,L0 可见性测试是“不回退”的主证据,L1 两条 typed command 只补真实入口和 transport 合同,禁止把最终截图冒充过程证据;
- 已有 session 的 rail、turn card、Final Response 或回放提示不一致时: - 已有 session 的 rail、turn card、Final Response 或回放提示不一致时:
- 先执行一次 `workbench events inspect --over-api` 证明服务端 connected、核心事件族和 terminal - 先执行一次 `workbench events inspect --over-api` 证明服务端 connected、核心事件族和 terminal
+7 -2
View File
@@ -481,7 +481,9 @@ HWLAB v0.3 订阅 AgentRun Kafka event 的权威输入是 `agentrun.event.v1`
- retention replay 的页面可见性采用单一事务边界: - retention replay 的页面可见性采用单一事务边界:
- 返回已有 session 或 SSE 重连时,connected 前的 Kafka business frame 可以在后台追赶,但不得逐帧发布历史前缀到当前可见 session bucket - 返回已有 session 或 SSE 重连时,connected 前的 Kafka business frame 可以在后台追赶,但不得逐帧发布历史前缀到当前可见 session bucket
- 追赶期间必须保留切走前的稳定消息、Trace、terminal 和最近更新时间,错误与基础设施诊断仍应立即可见; - 追赶期间必须保留切走前的稳定消息、Trace、terminal 和最近更新时间,错误与基础设施诊断仍应立即可见;
- 只有同一 session scope 的 `workbench.connected` 证明 retention 到 live handoff 完成后,才能在同一浏览器任务内把待处理 frame 交给原生产 reducer 并一次发布最终投影; - replay 提交必须同时满足以下条件:
- 同一 session scope 的 `workbench.connected` 已证明 retention 到 live handoff 完成;
- 待处理 frame 在同一浏览器任务内交给原生产 reducer,并且只发布一次最终投影;
- scope 被替换、连接失败或 handoff 合同无效时必须丢弃未完成事务,禁止提交部分历史前缀; - scope 被替换、连接失败或 handoff 合同无效时必须丢弃未完成事务,禁止提交部分历史前缀;
- 该事务只控制同一 Kafka+SSE reducer 的可见时机,不得演变为 snapshot、HTTP history、时间戳仲裁、第二 reducer 或第二状态权威。 - 该事务只控制同一 Kafka+SSE reducer 的可见时机,不得演变为 snapshot、HTTP history、时间戳仲裁、第二 reducer 或第二状态权威。
- 单一路径禁止用状态优先级伪装: - 单一路径禁止用状态优先级伪装:
@@ -496,7 +498,10 @@ HWLAB v0.3 订阅 AgentRun Kafka event 的权威输入是 `agentrun.event.v1`
- 关闭此类问题时先用 repo-owned CLI 复用生产 bootstrap/codec/reducer,披露 scanned、matched、applied、barrier、buffered、deduplicated、terminal 与 stable identity - 关闭此类问题时先用 repo-owned CLI 复用生产 bootstrap/codec/reducer,披露 scanned、matched、applied、barrier、buffered、deduplicated、terminal 与 stable identity
- CLI 通过后,使用 semantic internal WebProbe 在同一已有 session 上执行只刷新、不提交新输入的验收; - CLI 通过后,使用 semantic internal WebProbe 在同一已有 session 上执行只刷新、不提交新输入的验收;
- 刷新前后 user/agent identity 和可见顺序必须一致,retention 与产品 SSE envelope 多重集必须精确相等; - 刷新前后 user/agent identity 和可见顺序必须一致,retention 与产品 SSE envelope 多重集必须精确相等;
- 涉及 session 切换时,必须在真实运行中 session 上执行切走再切回,并证明 handoff 前可见最近更新时间不回退、handoff 后继续接收 live event - 涉及 session 切换时
- 必须在真实运行中 session 上执行切走再切回;
- 必须证明 handoff 前可见最近更新时间不回退;
- 必须证明 handoff 后继续接收 live event
- OTel 应只出现 direct publish、shared fanout receive 和 product SSE writeprojector/projection write span 必须为 0。 - OTel 应只出现 direct publish、shared fanout receive 和 product SSE writeprojector/projection write span 必须为 0。
纯 Kafka 调试分成三个可复用入口,不以临时脚本作为长期路径。AgentRun 使用 `./scripts/agentrun kafka regenerate agentrun --session-id <ses_agentrun_...> --trace-id <trc_...>`,从 stdio Kafka/JSONL 调用生产 reducer,只输出 `agentrun.event.debug.v1` 并明示 partial reconstructionHWLAB 使用 `hwlab-cli kafka regenerate hwlab --from kafka|jsonl --session-id <id> --trace-id <id>` 调用生产 mapper,只输出 `hwlab.event.debug.v1`。原 Workbench 页面的管理员 YAML 调试开关只在显式点击后按当前 traceId 建立唯一 debug group,清空隔离面板并复用生产 reducer/card;正式浏览器验收使用 `web-probe observe command <observer> --type validateWorkbenchKafkaDebugReplay`。typed command 继承 observer 的 YAML `internal|public` origin,不接受 URL/IP 来选择内外网。 纯 Kafka 调试分成三个可复用入口,不以临时脚本作为长期路径。AgentRun 使用 `./scripts/agentrun kafka regenerate agentrun --session-id <ses_agentrun_...> --trace-id <trc_...>`,从 stdio Kafka/JSONL 调用生产 reducer,只输出 `agentrun.event.debug.v1` 并明示 partial reconstructionHWLAB 使用 `hwlab-cli kafka regenerate hwlab --from kafka|jsonl --session-id <id> --trace-id <id>` 调用生产 mapper,只输出 `hwlab.event.debug.v1`。原 Workbench 页面的管理员 YAML 调试开关只在显式点击后按当前 traceId 建立唯一 debug group,清空隔离面板并复用生产 reducer/card;正式浏览器验收使用 `web-probe observe command <observer> --type validateWorkbenchKafkaDebugReplay`。typed command 继承 observer 的 YAML `internal|public` origin,不接受 URL/IP 来选择内外网。