3.1 KiB
3.1 KiB
R2.2 原始 HWLAB Event 观察窗报告
上下文
- 主问题:
- 前端设计与最小 seam:
完成结果
- 现有产品 EventSource 增加单一 ingress tee:
- 每个命名
hwlab.event.v1frame 在 decode 和 coalesce 前记录一次; - 同一次 decode 结果继续进入原生产 reducer;
- 未增加产品 EventSource、Kafka consumer 或第二事实源。
- 每个命名
- 原始观察状态为 bounded 内存:
- 按到达顺序保留完整
MessageEvent.data; - 不按 trace、event type 或 reducer 结果做客户端过滤;
- invalid JSON 和非对象 JSON 保留原文并显示拒绝原因;
- 淘汰完整 envelope,不截断仍被保留的 envelope;
- 不写 localStorage、数据库或 canonical Workbench store。
- 按到达顺序保留完整
- 隔离调试卡片增加独立子标签:
Trace 卡片保留隔离 debug replay 和生产 reducer 卡片;原始 HWLAB Event使用只读纯文本框显示同一产品 ingress;- 切换标签不创建或关闭网络连接;
- 清空观察窗只清原始内存 buffer。
- R2.3 v2 UI 集成点已预留:
- 支持
replayId和 output barrier query 参数; - 接收
replay-complete.result; - 展示 server
scanned/matched/delivered; - 用明确标注的 client local overlay 展示
received/decoded/applied。
- 支持
YAML-first
- owning YAML:
deploy/deploy.yaml#lanes.v03.workbench.rawHwlabEventWindow。
- 独立字段:
enabled;maxEntries;maxRetainedBytes。
- 渲染链:
- deploy schema 校验字段形状;
- GitOps renderer 生成 Cloud Web env;
- Cloud Web runtime 注入浏览器配置;
- 前端只读取显式值,不设置容量默认值。
- 特例分类:
keep-domain-special:观察窗保持管理员可见、内存只读;remove-code-default:容量与开关没有代码默认值;legacy-retire:本任务没有新增或保留旧入口。
验证
- ingress 与 buffer:
- 每个产品 frame 恰好产生一条 raw ingress 和一次 reducer delivery;
- invalid JSON 可见但不进入 reducer;
- entry/byte eviction 均保持完整 envelope。
- UI:
- 两个子标签、局部清空和 raw 文本顺序通过;
- 标签切换期间 EventSource 实例数保持不变。
- 配置与 runtime:
- Cloud Web runtime:
18 pass; - v03 GitOps render 目标用例:
1 pass; - deploy 合同:
15个 JSON 文件验证通过。
- Cloud Web runtime:
- 定向功能测试:
- Bun 后端、renderer、merge 和 SSE API:
50 pass; - TraceTimeline 与调试面板组件:
4 pass。
- Bun 后端、renderer、merge 和 SSE API:
- 已知基线失败:
- renderer 全套仍有两个与本变更无关的旧断言失败;
- Web check 的 source-shape、显式 any 扫描和 Vite build 通过;
workbench-isolated-kafka-debug.test.ts:61仍有 R2.3 分支已有的类型断言错误。
边界
- 未部署 NC01/v03。
- 未修改父 issue HWLAB #2474。
- 产品链继续保持纯 Kafka 实时,不增加补洞或投影路径。