Files
cnc_wams/完善wasm/working/26-04-HAL-Component-P1源码同步与哈希Gate实施记录.md
2026-07-10 21:26:42 -04:00

7.5 KiB
Raw Permalink Blame History

26-04 HAL Component P1 源码同步与哈希 Gate 实施记录

定位

本文件落实 ACC-038/INT-025,执行 24-04-HAL-Component-Precompile-Manifest-Truth-Table-Gate落地蓝图.md 的阶段 Aand2or2notmux2scale 五个 LinuxCNC .comp 纳入 wasm-port 的可复现源码抽取,并用锁定 commit、双清单、逐字节比较和固定 SHA-256 建立专项 gate。

本轮只晋级 P1 源码同步,不晋级以下能力:

  • LinuxCNC halcompile 派生 C 生成;
  • HAL component precompile manifest
  • WASM factory/step symbol
  • loadrt -> addf -> servo-step 真实组件执行;
  • truth-table/formula、thread/net 或 Web runtime evidence
  • 任意运行时动态模块加载。

LinuxCNC 基线

upstream_commit=60597ee0718873d2449058c824262a275e5e4bad
组件 上游/P1 相对路径 固定 SHA-256
and2 src/hal/components/and2.comp 29f02d1342bae24d138bbb1387b006b97f592967b8688ccb1c6c0af451cae419
or2 src/hal/components/or2.comp c27663ce45f9562d7a5dc1b542da50ec2cc60802ef591ee729222002083a3c08
not src/hal/components/not.comp 9fd9522627db9926d037dc0c116badce7dc880f190c6f8b85c690cbb8b638332
mux2 src/hal/components/mux2.comp b75e3eeb74297d09d13052e812de53a38613ea8287522c371cc2fdaf76be3284
scale src/hal/components/scale.comp d6830d74fd3462c7b7285a9e0b37cbcd2c53d2243007a198e3f19bfed9817f4f

实施内容

双清单登记

五个路径已同时加入:

wasm-port/tools/source-manifest.txt
wasm-port/tools/task-hal-source-manifest.txt

source-manifest.txtextract_sources.sh 和全量 vendor sync 的输入;task-hal-source-manifest.txt 保留 task/motion/HAL phase0 来源计数。本轮没有把 task-HAL 清单中的其他参考源码自动复制进 vendor。

P1 文件

既有 extract_sources.sh 从只读上游复制得到:

wasm-port/vendor/linuxcnc/src/hal/components/and2.comp
wasm-port/vendor/linuxcnc/src/hal/components/or2.comp
wasm-port/vendor/linuxcnc/src/hal/components/not.comp
wasm-port/vendor/linuxcnc/src/hal/components/mux2.comp
wasm-port/vendor/linuxcnc/src/hal/components/scale.comp

没有修改 /home/mes123456/cnc_wams/linuxcnc

专项 gate

新增:

wasm-port/tools/verify_hal_component_source_sync.sh

gate 同时检查:

  1. LinuxCNC HEAD 等于 tools/upstream-baseline.txt
  2. 五个路径在 source manifest 和 task-HAL manifest 中均恰好可定位;
  3. 上游文件和 vendored 文件都存在;
  4. P0 与 P1 逐字节一致;
  5. P0/P1 SHA-256 都等于锁定值;
  6. 五项全部完成后才输出 hal_component_source_sync=ok

固定哈希的目的是让上游公式、pin 或声明变化显式失败;不能因重新运行抽取脚本而自动接受语义变化。

执行证据

抽取与基线

cd wasm-port
./tools/extract_sources.sh
./tools/verify_upstream_baseline.sh

关键输出:

copied src/hal/components/and2.comp
copied src/hal/components/or2.comp
copied src/hal/components/not.comp
copied src/hal/components/mux2.comp
copied src/hal/components/scale.comp
extraction complete
upstream baseline validation complete

专项源码同步 gate

cd wasm-port
./tools/verify_hal_component_source_sync.sh

实际输出:

hal_component_source=and2 sha256=29f02d1342bae24d138bbb1387b006b97f592967b8688ccb1c6c0af451cae419 vendor_match=1
hal_component_source=or2 sha256=c27663ce45f9562d7a5dc1b542da50ec2cc60802ef591ee729222002083a3c08 vendor_match=1
hal_component_source=not sha256=9fd9522627db9926d037dc0c116badce7dc880f190c6f8b85c690cbb8b638332 vendor_match=1
hal_component_source=mux2 sha256=b75e3eeb74297d09d13052e812de53a38613ea8287522c371cc2fdaf76be3284 vendor_match=1
hal_component_source=scale sha256=d6830d74fd3462c7b7285a9e0b37cbcd2c53d2243007a198e3f19bfed9817f4f vendor_match=1
hal_component_upstream_commit=60597ee0718873d2449058c824262a275e5e4bad
hal_component_source_count=5
hal_component_source_sync=ok

task-HAL 参考清单

cd wasm-port
./tools/verify_task_hal_source_manifest.sh

关键输出:

task_hal_source_manifest_status=ok
task_hal_source_manifest_ready=1
task_hal_source_count=25
hal_source_count=9
task_hal_reference_source_ready=1
task_hal_vendor_source_ready=0
task_hal_vendor_hash_match_ready=1
task_hal_runtime_promoted=0
nativeHalSyncReady=false

task_hal_vendor_source_ready=0 是预期保守状态:该 phase0 清单中的 task、motion、hal_lib.cthreads.c 等 15 个参考文件仍未全部进入 vendor。本轮只闭合五个基础组件不能借此把整个 task-HAL 来源或 runtime 晋级。

全量 Vendor Gate 与 Generated Overlay 分层

本轮执行 ./tools/verify_vendor_sync.sh 时,实际失败为:

vendor files not listed in manifest:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt_cmds.hal

该文件不是本轮生成;它是前序 ACC-034 为 native TRT phase0 probe 恢复的 vendor fallback来源为目标 Web app dist锁定 LinuxCNC commit 中没有同名上游文件。按照“不回退既有改动”和 D-013 overlay 决策,本轮没有删除或伪装其上游来源。

首次失败后的临时结论分为两层:

  • 五个 HAL component 的专项 P1 source sync/hash gate 已通过;
  • 全量 vendor tree gate 当时被既有非上游 fallback 阻塞,尚不能记录为通过。

本轮随后新增 tools/vendor-overlay-manifest.tsv,只登记该路径、固定 SHA-256 d12f6c...a4ab3basic_sim.tcl 生成 provenanceverify_vendor_sync.sh 同时验证严格上游清单与独立 overlay 清单,并拒绝未登记额外文件、路径重叠、重复条目、无效 hash/provenance 和 hash 漂移。重跑输出:

vendor generated overlay validation complete: 1
vendor sync validation complete

因此最终结论分为两层:五个 HAL component 的专项 P1 gate 通过,全量 vendor/overlay gate 也通过;但 xyzac-trt_cmds.hal 仍明确是生成 overlay不得描述为锁定 commit 内的上游文件。

04 状态

04 项 本轮后状态 尚缺
4.7 and2 P1 源码同步完成,执行 gate 待补 halcompile 生成、manifest、WASM symbol、truth table、thread/net
4.8 or2 P1 源码同步完成,执行 gate 待补 halcompile 生成、manifest、WASM symbol、truth table、thread/net
4.9 not P1 源码同步完成,执行 gate 待补 halcompile 生成、manifest、WASM symbol、truth table、thread/net
4.10 mux2 P1 源码同步完成,执行 gate 待补 names=、代表配置、WASM execution、thread/net
4.11 scale P1 源码同步完成,执行 gate 待补 formula/容差、rpm_rps、WASM execution、thread/net
4.16 loadrt 仍为预编译 allowlist 条件通过/动态加载 Blocked factory、未知组件 blocked、真实 step 输出

下一步

  1. 24 阶段 B 定位锁定基线可执行 halcompile,生成可复现 C 和 generation report。
  2. 完成 precompile manifest、真实 loadrt/addf/servo-step、truth-table/formula 和 thread/net gate。
  3. 目标 Web 项目只消费同一 WASM runtime 的组件 evidence不另写组件公式。

结论

ACC-038/INT-025 已将五个基础 HAL component 从 P0 推进到专项 gate 保护的 P1。此结果证明源码来源、commit、双清单、字节和哈希一致不证明组件已编译或执行。04 的 4.7-4.11 仍不能标为功能完成,4.16 仍不支持任意动态加载。