Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
346fff2
refactor: deduplicate config replacements
Scaxlibur Aug 28, 2026
653f5e7
refactor: share scope JSON serialization
Scaxlibur Aug 28, 2026
d7baf1c
refactor: share TUI command log formatting
Scaxlibur Aug 28, 2026
fa924bf
refactor: call report artifact URLs directly
Scaxlibur Aug 28, 2026
58daa14
refactor: share run operation validation
Scaxlibur Aug 28, 2026
69e1771
refactor: keep config import surface private
Scaxlibur Aug 28, 2026
eb1d80a
refactor: keep only execution intent aliases
Scaxlibur Aug 28, 2026
fa49532
refactor: remove unused binary validator wrapper
Scaxlibur Aug 28, 2026
d17d44d
refactor: remove bounded waveform marker aliases
Scaxlibur Aug 28, 2026
7b231e9
refactor: remove unused TUI DMM state cache
Scaxlibur Aug 28, 2026
bbd97e9
refactor: share scope CLI value formatters
Scaxlibur Aug 28, 2026
55270ec
refactor: reuse finite report value parsing
Scaxlibur Aug 28, 2026
f9e1d45
refactor: share scope V2 profile lookup
Scaxlibur Aug 28, 2026
49e8feb
fix: retain waveform marker compatibility
Scaxlibur Aug 28, 2026
58210c6
refactor: retire waveform marker compatibility aliases
Scaxlibur Aug 28, 2026
a655070
fix: retain scope V2 profile getter surface
Scaxlibur Aug 28, 2026
582fdeb
feat(source): model parameterized coupling readback
Scaxlibur Aug 29, 2026
18a562e
feat(source): make sync a channel read facet
Scaxlibur Aug 29, 2026
77a4bcb
feat(source): model read-only noise overlay
Scaxlibur Aug 29, 2026
e5a9c8e
fix(source): validate extended readback profiles
Scaxlibur Aug 29, 2026
e3e4bbb
docs(source): design coupling noise and sync writes
Scaxlibur Aug 29, 2026
1af0f23
feat(source): restore basic state through v2 transactions
Scaxlibur Aug 30, 2026
f77efc0
feat(source): support restricted live basic updates
Scaxlibur Aug 30, 2026
e418c01
feat(source): add guarded burst and sweep fire
Scaxlibur Aug 30, 2026
5879038
feat(source): freeze volatile arb and counter contracts
Scaxlibur Aug 30, 2026
a1d639c
fix(source): restore basic v2 fields one at a time
Scaxlibur Aug 30, 2026
759421b
feat(source): add volatile arbitrary replacement transaction
Scaxlibur Aug 30, 2026
4100f00
feat(source): add counter v2 candidate transactions
Scaxlibur Aug 30, 2026
4395f36
chore: ignore local codegraph index
Scaxlibur Aug 30, 2026
1f67f16
feat(source): add explicit additive V2 routes
Scaxlibur Aug 30, 2026
a03d42b
feat(source): expose Counter V2 CLI and run steps
Scaxlibur Aug 30, 2026
f9b8211
docs(source): document Counter V2 operations
Scaxlibur Aug 30, 2026
2b43ed3
test(source): lock V1 V2 migration boundary
Scaxlibur Aug 31, 2026
0d74608
feat(source): add volatile ARB and sweep run surfaces
Scaxlibur Aug 31, 2026
f459975
feat(source): model sweep implicit disable interlocks
Scaxlibur Aug 31, 2026
78b1886
test(source): preserve sweep overlap gate on opt-out
Scaxlibur Aug 31, 2026
eabe3d3
docs(source): clarify sweep and volatile boundaries
Scaxlibur Aug 31, 2026
41ac7fd
fix(source): preserve digest compatibility for additive defaults
Scaxlibur Aug 31, 2026
19a0a54
feat(source): admit sweep fire conformance evidence
Scaxlibur Aug 31, 2026
46fb5af
feat(plugins): manage multi-entry distributions
Scaxlibur Aug 31, 2026
a12226d
fix(source): allow volatile replace from inactive arb state
Scaxlibur Aug 31, 2026
338aaae
fix(source): allow stale disabled sweep marker
Scaxlibur Aug 31, 2026
5880d90
feat(source): add opt-in volatile workspace replace
Scaxlibur Aug 31, 2026
675becf
fix(source): allow disable-only output v2
Scaxlibur Aug 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Rei scratchpad / local helper workspace
tool-of-rei/
.codegraph/

# Local agent/Codex metadata
/.agents/*
Expand Down
18 changes: 18 additions & 0 deletions docs/project/contributing/WaveBench_插件开发指南.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,24 @@ selection 与 storage digest、允许 playback mode;true-ARB 还要求 sample
selection 只允许目标输出 OFF,完成后仍为 OFF,不会隐式 ON。声明任一 ARB V2 capability 后,V1
`upload_arbitrary_waveform` 会在本地文件读取和仪器 I/O 前被拒绝,不能把混合 upload/selection/ON 的旧 route 部分映射。

单一、无命名的易失 ARB 工作区使用 `source.arbitrary_volatile_replace_v2`。driver 实现
`replace_source_arbitrary_volatile_v2(request, payload)`;request 只记录精确 payload 的主机 SHA-256、字节数和点数,
不包含 payload。ARB profile 必须同时声明 `volatile_replace_min_points`、`volatile_replace_max_points` 与
`volatile_replace_max_payload_bytes`;descriptor 还必须声明 `source.output_v2`,以便二进制写入后发生异常时由 Core
只尝试一次 OFF 收敛。上传后必须独立确认当前 basic waveform 为 `arbitrary`、已选择 driver 返回的工作区 ID,且目标输出仍为 OFF。

该 capability 不表示具名 storage,不得填造设备侧 digest、内容读回或旧内容可恢复性。它也不等价于旧
`upload_arbitrary_waveform`:旧 route 还包含播放频率、Vpp/offset、可选输出 ON 和旧 artifact 语义。不得将旧 route
部分改写为 volatile replace;需要公开该组合时,应另行定义完整的复合 capability、artifact 与验收。

Counter 使用独立的 `source.counter_configure_v2`、`source.counter_enable_v2` 与
`source.counter_measure_v2`。descriptor 必须声明 Counter `READ`,配置还需 `CONFIGURE` 与可读的
`configurable_fields`,启停还需成对的 `ENABLE`/`DISABLE` 与 `enabled_configurable`。每次配置 request
只能设置 coupling、input impedance、attenuation、trigger level 或 statistics enable 中的一项;Core 不会因配置或
测量自动启用 Counter,也不会写 `AUTO`、gate、HF、sensitivity、display 或 statistics clear。配置和启停在写后必须独立
回读;结果不明时不自动回滚或 disable,连接保守失效。测量只允许已启用的输入,并以单条受授权查询进入 driver。当前
CLI 与 run schema 不提供这三项入口;production descriptor 必须另有对应的实机证据才能声明 capability。

跨通道 Combine、Coupling、Tracking 和相位关系分别使用 `source.combine_configure_v2`、
`source.coupling_configure_v2`、`source.tracking_configure_v2` 与 `source.phase_relation_configure_v2`。每项都使用
独立 driver method,request 只包含递增且唯一的 channel set 与 enabled state。descriptor 必须为该 relation 的
Expand Down
25 changes: 24 additions & 1 deletion docs/project/guides/WaveBench_run_plan_使用指南.md
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ state = "on"

### Source V2 基础、高级配置与 ARB 写 step

声明 `source.snapshot_v2` 与对应写 capability 的插件可以使用十七个 Source V2 step。基础配置只在目标输出已关闭时执行;输出 ON 与 OFF 分别使用不同 step:
声明 `source.snapshot_v2` 与对应写 capability 的插件可以使用 Source V2 step。基础配置只在目标输出已关闭时执行;输出 ON 与 OFF 分别使用不同 step:

```toml
[[steps]]
Expand All @@ -438,6 +438,23 @@ channel = 1
kind = "source.output_disable_v2"
channel = 1

[[steps]]
kind = "source.counter_configure_v2"
input_id = "counter"
coupling = "ac"

[[steps]]
kind = "source.counter_enable_v2"
input_id = "counter"

[[steps]]
kind = "source.counter_measure_v2"
input_id = "counter"

[[steps]]
kind = "source.counter_disable_v2"
input_id = "counter"

[[steps]]
kind = "source.harmonics_configure_v2"
channel = 1
Expand Down Expand Up @@ -522,6 +539,12 @@ enabled = true
要求 `channel`、整数 `order >= 2` 与 `all`、`even`、`odd` 之一的 `preset`;核心还会在执行前检查运行时
profile 是否支持该 order 和预设。`source.modulation_configure_v2` 要求 `channel`、位于 `[0, 100]` 的
`depth_percent` 与有限正值 `internal_frequency_hz`;它只配置内部正弦 AM。
`source.counter_configure_v2` 要求安全 token 形式的 `input_id`,并在 coupling、
`impedance_ohm`、`attenuation`、`trigger_level_v` 与 `statistics_enabled` 中恰好指定一个字段。
它不启用 Counter。`source.counter_enable_v2` 与 `source.counter_disable_v2` 只接受 `input_id`,
不隐式改写输入配置;`source.counter_measure_v2` 也只接受 `input_id`,要求 Counter 已启用。
Counter 测量 artifact 位于该 step 的 `counter_measurement`,不进入 `source_operations`。实际信号、
输入阻抗与最大 Vpp 仍必须由计划 safety 和接线确认;Counter step 不替代输出安全门。
`source.modulation_pm_configure_v2` 要求 `channel`、位于 `[0, 360]` 的 `phase_deviation_deg` 与有限正值
`internal_frequency_hz`;它只配置内部正弦 PM。
`source.modulation_fm_configure_v2` 要求 `channel`、有限正值 `frequency_deviation_hz` 与有限正值
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,11 @@ I/O 前拒绝嵌入请求。需要 v2 截图时使用独立的 `scope screenshot
| `source.arbitrary_upload` | `upload_dg4000_dac14_block` |
| `source.snapshot_v2` | `execute_source_query_plan_v2` |
| `source.basic_configure_v2` | `configure_source_basic_v2` |
| `source.basic_live_configure_v2` | `configure_source_basic_live_v2` |
| `source.output_v2` | `set_source_output_v2` |
| `source.counter_configure_v2` | `configure_source_counter_v2` |
| `source.counter_enable_v2` | `set_source_counter_enabled_v2` |
| `source.counter_measure_v2` | `measure_source_counter_v2` |
| `source.harmonics_configure_v2` | `configure_source_harmonics_v2` |
| `source.harmonics_disable_v2` | `disable_source_harmonics_v2` |
| `source.modulation_configure_v2` | `configure_source_modulation_v2` |
Expand All @@ -448,15 +452,17 @@ I/O 前拒绝嵌入请求。需要 v2 截图时使用独立的 `scope screenshot

### Source V2 扩展

`source.snapshot_v2`、`source.basic_configure_v2`、`source.output_v2`、
`source.snapshot_v2`、`source.basic_configure_v2`、`source.basic_live_configure_v2`、`source.output_v2`、
`source.counter_configure_v2`、`source.counter_enable_v2`、`source.counter_measure_v2`、
`source.harmonics_configure_v2`、`source.harmonics_disable_v2`、`source.modulation_configure_v2`、`source.modulation_pm_configure_v2`、`source.modulation_fm_configure_v2`、`source.modulation_pwm_configure_v2`、`source.sweep_configure_v2`、`source.burst_configure_v2`、`source.pulse_configure_v2`、`source.arbitrary_storage_v2`、`source.arbitrary_select_v2`、`source.combine_configure_v2`、`source.coupling_configure_v2`、`source.tracking_configure_v2` 和 `source.phase_relation_configure_v2` 从核心 `0.8.24` 开始提供,仍使用
`wavebench.instrument.v2`。采用任一 Source V2 capability 的
wheel 依赖和 descriptor `wavebench_min_version` 都必须为 `0.8.24` 或更高的 `0.8.x` 版本。
`source_extensions` 位于 descriptor 末尾且默认值为 `None`,因此未声明该能力的 V1 插件不需要
修改 descriptor 或提高版本下限。

插件从 `wavebench.instruments` 导入 `SourceDescriptorExtensions`、`SourceSnapshotV2Driver`、
`SourceBasicConfigureV2Driver`、`SourceOutputV2Driver`、`SourceHarmonicConfigureV2Driver`、`SourceHarmonicDisableV2Driver`、
`SourceBasicConfigureV2Driver`、`SourceBasicLiveConfigureV2Driver`、`SourceOutputV2Driver`、
`SourceCounterConfigureV2Driver`、`SourceCounterEnableV2Driver`、`SourceCounterMeasureV2Driver`、`SourceHarmonicConfigureV2Driver`、`SourceHarmonicDisableV2Driver`、
`SourceModulationConfigureV2Driver`、`SourcePmModulationConfigureV2Driver`、`SourceFmModulationConfigureV2Driver`、`SourcePwmModulationConfigureV2Driver`、`SourceSweepConfigureV2Driver`、`SourceBurstConfigureV2Driver`、`SourcePulseConfigureV2Driver`、`SourceArbitraryStorageV2Driver`、`SourceArbitrarySelectV2Driver`、`SourceCombineConfigureV2Driver`、`SourceCouplingConfigureV2Driver`、`SourceTrackingConfigureV2Driver`、`SourcePhaseRelationConfigureV2Driver`、query
plan/execution record 和各类 typed profile。核心签发 semantic query plan;snapshot driver 只负责将
item 转成合法的厂商协议查询并返回类型化执行记录。插件不得返回完整 `SourceSnapshotV2`,也不得自行判定 `UNSUPPORTED`、
Expand All @@ -477,7 +483,11 @@ wavebench source snapshot-v2

```text
SourceService.configure_basic_v2(request, *, correlation_id=None)
SourceService.configure_basic_live_v2(request, *, correlation_id=None)
SourceService.set_output_v2(request, *, correlation_id=None)
SourceService.configure_counter_v2(request, *, correlation_id=None)
SourceService.set_counter_enabled_v2(request, *, correlation_id=None)
SourceService.measure_counter_v2(request, *, correlation_id=None)
SourceService.configure_harmonics_v2(request, *, correlation_id=None)
SourceService.disable_harmonics_v2(request, *, correlation_id=None)
SourceService.configure_modulation_v2(request, *, correlation_id=None)
Expand All @@ -490,7 +500,12 @@ SourceService.configure_pulse_v2(request, *, correlation_id=None)
SourceService.mutate_arbitrary_storage_v2(request, *, payload, correlation_id=None)
SourceService.select_arbitrary_v2(request, *, correlation_id=None)
wavebench source basic-configure-v2 --channel N ...
wavebench source basic-live-configure-v2 --channel N (--frequency-hz HZ | --amplitude-vpp VPP)
wavebench source output-v2 --channel N on|off
wavebench source counter-configure-v2 --input-id INPUT_ID <one configuration option>
wavebench source counter-enable-v2 --input-id INPUT_ID
wavebench source counter-disable-v2 --input-id INPUT_ID
wavebench source counter-measure-v2 --input-id INPUT_ID
wavebench source harmonics-configure-v2 --channel N --order N --preset all|even|odd
wavebench source harmonics-disable-v2 --channel N
wavebench source modulation-configure-v2 --channel N --depth-percent PERCENT --internal-frequency-hz HZ
Expand All @@ -504,7 +519,8 @@ wavebench source arbitrary-storage-v2 --channel N --slot-id SLOT --payload-file
wavebench source arbitrary-select-v2 --channel N --slot-id SLOT --playback-mode dds|true-arb (--playback-frequency-hz HZ | --sample-rate-hz HZ)
```

十三个 Service 方法分别返回 `(typed_result, operation_artifact)`。`operation_artifact` 使用
十六个 mutation Service 方法分别返回 `(typed_result, operation_artifact)`;
`measure_counter_v2()` 是只读方法,直接返回 `SourceCounterMeasureResult`。`operation_artifact` 使用
`wavebench.source.operation.v1`,不得包含 raw SCPI、完整响应、资源地址、序列号、授权 token 或 nonce。

`source.harmonics_configure_v2` 只允许单通道的 `all`、`even`、`odd` 预设。descriptor 必须同时声明
Expand Down Expand Up @@ -566,9 +582,10 @@ selection request 使用 DDS 的 `playback_frequency_hz` 或 true-ARB 的 `sampl
并回读 Basic `arbitrary` waveform、selected slot、mode、对应速率和 storage digest;它不会授权 output ON。若声明任一
ARB V2 capability,V1 `upload_arbitrary_waveform` 会在读取本地 waveform 文件、构造块或发送仪器 I/O 前拒绝。

run plan 接受 `source.basic_configure_v2`、`source.output_enable_v2`、`source.output_disable_v2`、
`source.harmonics_configure_v2`、`source.harmonics_disable_v2`、`source.modulation_configure_v2`、`source.modulation_pm_configure_v2`、`source.modulation_fm_configure_v2`、`source.modulation_pwm_configure_v2`、`source.sweep_configure_v2`、`source.burst_configure_v2`、`source.pulse_configure_v2`、`source.arbitrary_storage_v2`、`source.arbitrary_select_v2`、`source.combine_configure_v2`、`source.coupling_configure_v2`、`source.tracking_configure_v2` 与 `source.phase_relation_configure_v2` 十八个 Source V2 step;它们的 artifact 只在实际执行时写入
`run.json.source_operations`。
run plan 接受 `source.basic_configure_v2`、`source.basic_live_configure_v2`、`source.output_enable_v2`、`source.output_disable_v2`、
`source.counter_configure_v2`、`source.counter_enable_v2`、`source.counter_disable_v2`、`source.counter_measure_v2`、
`source.harmonics_configure_v2`、`source.harmonics_disable_v2`、`source.modulation_configure_v2`、`source.modulation_pm_configure_v2`、`source.modulation_fm_configure_v2`、`source.modulation_pwm_configure_v2`、`source.sweep_configure_v2`、`source.burst_configure_v2`、`source.pulse_configure_v2`、`source.arbitrary_storage_v2`、`source.arbitrary_select_v2`、`source.combine_configure_v2`、`source.coupling_configure_v2`、`source.tracking_configure_v2` 与 `source.phase_relation_configure_v2` 二十三个 Source V2 step;mutation artifact 只在实际执行时写入
`run.json.source_operations`,而 `source.counter_measure_v2` 使用其 step 专有的 `counter_measurement` artifact。

旧 `source.*` setter、output、trigger 和 ARB 路径继续保留。双合同插件上,四个 basic setter 与
`set_output` 会进入相应 V2 transaction;restore、ARB upload 和 V2 output 重叠的 trigger 在仪器 I/O 前
Expand Down
Loading
Loading