mandelbrot/BUILD_REPRODUCIBILITY.md
2026-08-22 20:55:27 +09:00

48 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```