Skip to content

WaveBench v0.2.0

Choose a tag to compare

@Scaxlibur Scaxlibur released this 30 Apr 16:26
· 510 commits to master since this release

WaveBench v0.2.0 - readable evidence reports / 可读的测量证据报告

中文说明

WaveBench v0.2.0 的重点是把已经采集到的测量数据变成更容易阅读、复盘和分享的证据报告。

这一版没有扩展更多仪器型号,也没有引入 GUI。目标很明确:让 data/raw/...data/runs/... 里已经存在的数据更有用。

新增功能

  • 新增离线 capture / run package 读取能力,支持读取 data/raw/...data/runs/...

  • 新增:

    wavebench capture inspect <capture_dir>

    用于查看采集包摘要。

  • 新增:

    wavebench run report <run_dir>

    用于从已有 run package 生成静态 HTML 报告。

  • 新增:

    wavebench scope capture --screenshot

    支持 RTM2032 保存 PNG 截图 artifact。

  • run plan 的 scope.capture 现在支持:

    [[steps]]
    kind = "scope.capture"
    screenshot = true
  • HTML 报告现在会在存在截图时自动嵌入截图缩略图,并生成 Screenshots 区块。

  • HTML 报告新增 Signal analysis 区块,展示:

    • 频率
    • Vpp
    • RMS
    • 均值
    • duty cycle
    • rise/fall time
    • quality warnings
  • 新增 plans/demo_dg4202_10k_screenshot_report.toml,作为 v0.2 的最小实机 demo plan。

  • WSL 环境下新增 pyvisa-py fallback:当 native RS VISA 不可用时,可以通过 pyvisa-py 继续连接仪器。

安全模型

  • run reportcapture inspect 都是离线命令,不会连接仪器。

  • 截图是 capture artifact,不是 report 的副作用。

  • run plan 继续保持显式语义:

    • 不隐藏 reset
    • 不在 capture 前隐式 autoscale
    • 不偷偷修改电源输出
    • 不自动修正硬件状态
  • source restore 仍然需要显式启用:

    [restore]
    source_state = true

验证情况

  • 单元测试:118 tests passing。
  • WSL 实机 demo 已通过:
    • DG4202 输出
    • RTM2032 采集
    • 10 kHz 波形
    • screenshot artifact
    • HTML report generation
  • Demo report 中已确认包含 Signal analysis 和 Screenshots 区块。

已知边界

  • 没有 GUI。
  • 没有 YAML workflow layer。
  • run plan 仍不支持条件分支、循环、矩阵实验或表达式语言。
  • report 里的 Signal analysis 目前汇总已有 capture metadata,不重新读取 NPY 做二次分析。
  • 仪器支持仍然保持窄范围,只针对当前文档中验证过的 RTM2032 / DG4202 / DP800 路径。

English Notes

WaveBench v0.2.0 focuses on turning captured measurement data into readable evidence.

This release does not expand the instrument matrix or introduce a GUI. The goal is simple: make existing data/raw/... and data/runs/... artifacts easier to inspect, review, and share.

New features

  • Added offline capture/run package readers for data/raw/... and data/runs/....

  • Added:

    wavebench capture inspect <capture_dir>

    for human-readable capture summaries.

  • Added:

    wavebench run report <run_dir>

    for static offline HTML reports.

  • Added:

    wavebench scope capture --screenshot

    for RTM2032 PNG screenshot artifacts.

  • Run-plan scope.capture now supports:

    [[steps]]
    kind = "scope.capture"
    screenshot = true
  • HTML reports now embed screenshot thumbnails and include a Screenshots section when captures provide screenshot.png.

  • HTML reports now include a Signal analysis section with:

    • frequency
    • Vpp
    • RMS
    • mean
    • duty cycle
    • rise/fall time
    • quality warnings
  • Added plans/demo_dg4202_10k_screenshot_report.toml as a minimal v0.2 hardware demo plan.

  • Added WSL-friendly VISA fallback through pyvisa-py when native RS VISA is unavailable.

Safety model

  • run report and capture inspect are offline-only commands and never connect to instruments.

  • Screenshots are capture artifacts, not report side effects.

  • Run plans remain explicit:

    • no hidden reset
    • no implicit autoscale before capture
    • no hidden power output changes
    • no automatic hardware correction
  • Source restore remains opt-in:

    [restore]
    source_state = true

Validation

  • Unit test suite: 118 tests passing.
  • Real WSL hardware demo passed:
    • DG4202 output
    • RTM2032 capture
    • 10 kHz waveform
    • screenshot artifact
    • HTML report generation
  • Demo reports include both Signal analysis and Screenshots sections.

Known limits

  • No GUI.
  • No YAML workflow layer.
  • No conditionals, loops, matrix experiments, or expression language in run plans.
  • Signal analysis in reports summarizes existing capture metadata; it does not reprocess NPY waveforms yet.
  • Instrument support remains intentionally narrow and verified only for the documented RTM2032 / DG4202 / DP800 paths.