test: 收口纯 Kafka 调试集成门禁
Pipelines as Code CI / hwlab-nc01-v03-ci-poll- Success

This commit is contained in:
root
2026-07-10 16:04:14 +02:00
parent 13b10c0f14
commit 9478f20301
4 changed files with 15 additions and 11 deletions
@@ -22,11 +22,16 @@
- 所有批次记录固定写入 debug topic 的 partition 0
- 由 Kafka publish metadata 返回 `firstOffset``lastOffset``count`
- 发布后无法形成唯一 offset range 时,以 `debug_publish_barrier_missing` 失败关闭。
- correlated v2 consumer 直接定位该 barrier
- 新 group 完成 assignment 后执行 `seek(firstOffset)`,不从增长中的 debug topic 起点盲扫;
- 观测 `lastOffset` 后立即形成完成/停止边界;
- 缺首尾 offset、缺中间 offset、重复 offset、parse/filter/delivery 少于整批 cardinality 均不能得到 `terminal_complete`
- 未携带 v2 参数时保留明确的 `trace-only-v1` 诊断;出现任一 v2 参数时必须同时具备安全 `replayId` 和完整 offset range,显式 producer/source 失败证据不得降级成功。
- debug SSE 在 JSON parse 和 trace/replay filter 前采集 broker 事实:
- 报告 `scanned``barrierScanned``parsed``traceMatched``replayMatched``matched``delivered`
- 分别保留 requested、scanned、matched 和 delivered offset range
- completion 保留第一条匹配事件的脱敏 source lineage
- `clientReceived``decoded``applied` 在客户端尚未回报时保持 `null`,不伪造成功计数。
- 服务端明确声明 client counts unavailable`clientReceived``decoded``applied` 保持 `null`,不伪造浏览器成功计数。
- 新增分层结果合同:
- producer/source`producer_not_invoked``source_trace_missing`
- Kafka/server`topic_no_append_for_replay``record_parse_rejected``records_scanned_but_filter_mismatch``sse_write_failed`
@@ -50,7 +55,7 @@ bun test \
```
- 结果:
- `45 pass`
- `50 pass`
- `0 fail`
- 已覆盖四类 MDTODO 验收结果:
- empty`producer_not_invoked`
@@ -64,9 +69,7 @@ bun test \
## 边界与后续集成
- 本子任务未修改 `WorkbenchKafkaDebugPanel.vue` 或其他 UI。
- 本子任务未部署或修改 NC01/v03 运行面。
- UI 集成时应:
- 把 producer 返回的 `replayId``outputBarrier` 原样传入 debug SSE
- 把客户端实际 `received/decoded/applied` 计数交给同一分类合同;
- 不把 debug topic、debug group 或结果合同接入产品实时事实源。
- 集成分支已让 UI 支持透传 `replayId`/`outputBarrier`,并用同一 EventSource 的本地 `received/decoded/applied` 对服务端结果二次复判;四层计数不严格相等时分别返回 transport、decoder 或 reducer typed failure。
- debug topic、debug group 和结果合同仍只属于隔离调试,不接入产品实时事实源。
- 真实 Kafka `seek` 行为与浏览器分层计数仍须由 R2.4 在 NC01/v03 原入口受控验收。
@@ -25,7 +25,7 @@
### R2.2 [completed]
在同一产品 EventSource 的 decode/coalesce 前 tee 原始 frame,并在隔离调试卡片增加 Trace 卡片/原始 HWLAB Event 子标签;raw 按到达顺序写入 bounded 内存、暴露 invalid JSONYAML-first 开关和容量独立配置,不新增 SSE 或 Kafka consumer。上下文:[主 issue #2474](https://github.com/pikasTech/HWLAB/issues/2474)、[前端设计 #2475](https://github.com/pikasTech/HWLAB/issues/2475#issuecomment-4935381417)。依赖:无,可与 Trace 序列权威修复并行。验证:每个产品 frame 恰好 raw+1 且 reducer 一次,切换标签不新增 EventSourceeviction/invalid-json/runtime contract 通过,完成任务后将详细报告写入[任务报告](./details/pure-kafka-live-single-step-debug/R2.2_Task_Report.md)。
### R2.3
### R2.3 [in_progress]
修复隔离 debug replay 的 producer/barrier 与分层结果合同:保留 source lineage、replayId、offset range,报告 scanned/matched/delivered/decoded/applied/terminal,区分 producer-not-invoked、trace missing、filter mismatch、decoder/reducer rejection 与 terminal missing;仅写 debug topic。上下文:[隔离根因 #2476](https://github.com/pikasTech/HWLAB/issues/2476#issuecomment-4935398125)、[主方案 #2474](https://github.com/pikasTech/HWLAB/issues/2474#issuecomment-4935408473)。依赖:无。验证:empty、matched-no-terminal、reducer-rejected、terminal-complete 四类 typed 结果及 semantic internal web-probe command,完成任务后将详细报告写入[任务报告](./details/pure-kafka-live-single-step-debug/R2.3_Task_Report.md)。
### R2.4