# WASM build reproducibility v23では、`src/`を監査可能なkernel source、`src/abi.json`を公開ABI、 `toolchain.lock.json`を固定toolchain契約として扱います。 ## 互換payloadを展開する ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/extract-wasm.ps1 ``` 現在配布している8 payloadを`dist/wasm/`へ展開し、byte数とSHA-256を `manifest.json`へ記録します。COLOR SIMD/scalarがbyte単位で同一ならStandaloneでは Base64文字列を1本へ自動集約し、異なる場合は各payloadを保持します。どちらの場合もmanifest上の2 ABI名は維持します。 ## sourceから再生成する clang 17.0.6をPATHへ置き、次を実行します。 ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-wasm.ps1 ``` 生成先は`build/wasm-v23/`です。`src/shallow_kernel.c`、 `src/deep_kernel.c`、`src/bla_kernel_v18.c`、`src/color_kernel.c`をそれぞれ SIMD/scalarでcompileし、timestampを含まないsource manifestを生成します。 配布payloadへ昇格するときだけ`-Promote`を指定します。昇格前に `tests/kernel-golden.mjs`が、画素中心座標、escape iteration、magnitude、 smooth補正、SIMD/scalar同値性を検査します。golden失敗時はコピーも `kernels.js`再生成も行いません。 ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-wasm.ps1 -Promote ``` ## 信頼境界 公式配布物のSHA-256を照合したclang 17.0.6とNode.js v22.18.0を作業領域内で使用し、 復元sourceのcompile、generated-WASM golden、SIMD/scalar同値性、画素中心契約を実行済みです。 golden合格後に8 payloadと`kernels.js`を昇格し、Hosted/Standalone成果物も再生成しました。 実測結果と生成manifestのSHA-256は`audit/v23-source-baseline.json`へ記録しています。 省略なしの再検証は、toolchainをPATHへ追加した状態で次を実行します。 ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/test-all.ps1 -RequireToolchain ```