125 lines
6.3 KiB
Markdown
125 lines
6.3 KiB
Markdown
# 20-04 HAL Scope/Meter JSON Gate 实现缺口复核
|
||
|
||
## 定位
|
||
|
||
本文件落实 `ACC-032/INT-019`:在 `17-04-HAL-Scope-Meter结构化证据复核.md` 已完成源码边界复核之后,继续检查 `wasm-port` 和 `web-rtcp-5axis-xyzbc-trt-sim-plan` 是否已经具备可执行的 HAL Meter / HAL Scope JSON gate。
|
||
|
||
覆盖 04 条目:
|
||
|
||
- `4.13 HAL Scope`
|
||
- `4.14 HAL Meter`
|
||
- `10.6 HAL 信号监视`
|
||
- `10.7 HAL Scope`
|
||
|
||
严格口径:已有 HAL 模型、HAL graph、postgui net、gmoccapy HAL pin 映射或截图,不能自动等价为 `hal_meter_evidence` / `hal_scope_waveform_evidence`。只有存在结构化 JSON 字段和可执行校验脚本时,才能从“源码边界复核完成”晋级为“JSON gate 已完成”。
|
||
|
||
## 当前实现复核
|
||
|
||
### `wasm-port`
|
||
|
||
已确认存在:
|
||
|
||
- `wasm-port/tests/wasm/node/verify_hal_runtime.sh`
|
||
- `wasm-port/tests/wasm/node/verify_hal_runtime.mjs`
|
||
- `wasm-port/tests/wasm/node/verify_task_hal_wasm.sh`
|
||
- `wasm-port/tests/wasm/node/verify_motion_hal_sync.sh`
|
||
|
||
这些 gate 可证明 virtual HAL runtime 的 pin/signal/param/net/thread 基础能力,但当前未发现:
|
||
|
||
```text
|
||
wasm-port/tests/ui/node/verify_hal_meter_evidence.mjs
|
||
wasm-port/tests/ui/node/verify_hal_scope_waveform_evidence.mjs
|
||
```
|
||
|
||
因此 `wasm-port` 当前不能把 04 的 `4.13`、`4.14`、`10.7` 晋级为 HAL Scope/Meter JSON gate 完成。
|
||
|
||
### `web-rtcp-5axis-xyzbc-trt-sim-plan`
|
||
|
||
已确认存在:
|
||
|
||
- `web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs`
|
||
- `web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/runtime/gmoccapy-hal-model.js`
|
||
- `web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json`
|
||
- `web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json`
|
||
|
||
`verify_gmoccapy_hal_model.mjs` 可证明:
|
||
|
||
- gmoccapy HAL 文件、pin group、core net、spindle net、postgui net 的结构化模型存在。
|
||
- `gmoccapy.spindle_feedback_bar`、`gmoccapy.spindle_at_speed_led`、`gmoccapy.tooloffset-x`、`gmoccapy.tooloffset-z` 等 postgui net 被登记。
|
||
- 硬按钮、jog、override、operator input、tool、program、message 等 gmoccapy HAL pin 映射有 Node smoke。
|
||
|
||
但当前 evidence JSON 顶层字段只包含 `halGraph`、`halNets`、`taskHalEquivalence`、`taskHalFullState`、`pyvcpPostgui`、`visualEvidence` 等,不包含:
|
||
|
||
```text
|
||
hal_meter_evidence
|
||
hal_scope_waveform_evidence
|
||
```
|
||
|
||
因此目标 Web 项目当前可登记为“HAL 模型和 UI 监视有证据”,不能登记为“HAL Meter JSON gate / HAL Scope waveform JSON gate 已完成”。
|
||
|
||
## LinuxCNC 对照证据
|
||
|
||
| 对照对象 | 本地 LinuxCNC 路径 | 对 JSON gate 的要求 |
|
||
| --- | --- | --- |
|
||
| `halmeter` 原生工具 | `linuxcnc/src/hal/utils/meter.c`、`linuxcnc/docs/src/man/man1/halmeter.1.adoc` | 至少输出 pin/signal/parameter 当前值、HAL 类型、来源、完整性和 source reference |
|
||
| `halscope` 原生工具 | `linuxcnc/src/hal/utils/scope.c`、`scope_rt.c`、`scope_shm.h`、`scope_usr.h`、`linuxcnc/docs/src/hal/halscope.adoc` | 至少输出 sample period、record length、channel、trigger、sample 序列和 source reference |
|
||
| gmoccapy HAL UI 入口 | `linuxcnc/src/emc/usr_intf/gmoccapy/gmoccapy.py`、gmoccapy HAL/Glade 文件 | 只能作为 UI/HAL model 参考,不能替代原生 `halmeter`/`halscope` 数据结构 |
|
||
|
||
## 必须补齐的 JSON Gate
|
||
|
||
### `hal_meter_evidence`
|
||
|
||
最小字段:
|
||
|
||
| 字段 | 规则 |
|
||
| --- | --- |
|
||
| `apiName` | 必须等于 `hal_meter_evidence` |
|
||
| `source` | `browser-virtual-hal`、`wasm-hal-runtime` 或明确的 native source |
|
||
| `items[]` | 非空;每项包含 `name`、`sourceKind`、`type`、`value` |
|
||
| `items[].sourceKind` | 只能是 `pin`、`signal`、`parameter` 之一 |
|
||
| `integrity.complete` | 必须为 `true` 才能晋级 |
|
||
| `integrity.sourceReference` | 必须引用 LinuxCNC `meter.c` 或 `halmeter.1.adoc` |
|
||
|
||
建议 gate:
|
||
|
||
```bash
|
||
cd wasm-port && node tests/ui/node/verify_hal_meter_evidence.mjs
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
```
|
||
|
||
### `hal_scope_waveform_evidence`
|
||
|
||
最小字段:
|
||
|
||
| 字段 | 规则 |
|
||
| --- | --- |
|
||
| `apiName` | 必须等于 `hal_scope_waveform_evidence` |
|
||
| `source` | `browser-virtual-hal`、`wasm-hal-runtime` 或明确的 native source |
|
||
| `samplePeriodNs` | 正整数 |
|
||
| `recordLength` | 正整数,必须与 `samples.length` 一致或有明确截断原因 |
|
||
| `channelCount` | 必须与 `channels.length` 和每个 sample 的 `values.length` 一致 |
|
||
| `trigger` | 必须记录 channel/edge/level 或显式 `forced: true` |
|
||
| `channels[]` | 每项包含 `index`、`name`、`kind`、`type` |
|
||
| `samples[]` | 时间单调;每个 sample 包含 `sampleIndex`、`timeNs`、`values` |
|
||
| `sourceReference.linuxcnc[]` | 必须引用 `scope_rt.c`、`scope_shm.h` 或 `halscope.adoc` |
|
||
|
||
建议 gate:
|
||
|
||
```bash
|
||
cd wasm-port && node tests/ui/node/verify_hal_scope_waveform_evidence.mjs
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
## 当前严格状态
|
||
|
||
| 04 项 | 当前状态 | 原因 | 晋级条件 |
|
||
| --- | --- | --- | --- |
|
||
| `4.13 HAL Scope` | 待实现 JSON gate | 原生 `halscope` 源码已定位;当前没有 `hal_scope_waveform_evidence` 字段和校验脚本 | 补 waveform JSON、Node gate、Browser/evidence compare |
|
||
| `4.14 HAL Meter` | 条件通过,待补 JSON gate | virtual HAL / gmoccapy HAL model 可支撑当前值来源;当前没有 `hal_meter_evidence` 字段和校验脚本 | 补 meter JSON、Node gate、至少覆盖 pin/signal/parameter 当前值 |
|
||
| `10.6 HAL 信号监视` | 条件通过 | `halGraph`、`halNets`、gmoccapy HAL model 可证明监视模型;还不是 meter/scope gate | 若声明 meter-like 功能,必须输出 `hal_meter_evidence` |
|
||
| `10.7 HAL Scope` | 待实现 JSON gate | Web evidence 中未见 waveform JSON;截图和 canvas 不可替代 | 补 `hal_scope_waveform_evidence`、字段校验和 UI 渲染 smoke |
|
||
|
||
## 结论
|
||
|
||
`ACC-032/INT-019` 已完成实现缺口复核。当前两个目标项目已有 HAL runtime、HAL graph、gmoccapy HAL model 和代表 Web evidence,但未形成 `hal_meter_evidence` / `hal_scope_waveform_evidence` 的可执行 JSON gate。后续不得把 `halGraph`、`halNets`、gmoccapy HAL model、按钮图标或截图直接宣称为 HAL Scope/Meter 完整对标;只有补齐上述 JSON 字段和校验脚本后,04 的 `4.13`、`4.14`、`10.7` 才能继续晋级。
|