diff --git a/docs/proof-of-capabilities.md b/docs/proof-of-capabilities.md index dd52bcd1..e2a4a7d3 100644 --- a/docs/proof-of-capabilities.md +++ b/docs/proof-of-capabilities.md @@ -78,11 +78,18 @@ random or mocked, the hash would not be reproducible. ```bash python archive/v1/data/proof/verify.py # Expect: VERDICT: PASS -# Pipeline hash: ca58956c1bbee8c46f1798b3d6b6f1f829aa5db90bba53e07177830eca429199 +# Pipeline hash: f8e76f21a0f9852b70b6d9dd5318239f6b20cbcb4cdd995863263cecdc446f7a ``` The published expected hash is committed at `archive/v1/data/proof/expected_features.sha256`. -Run it on your machine; the hash must match bit-for-bit. +Run it on your machine — it reproduces **bit-for-bit across platforms** (verified identical on +Windows, two independent Linux hosts, and the GitHub Azure CI runner). For the one feature that +*isn't* bit-stable — the peak-normalized Doppler spectrum, whose argmax flips under +cross-microarchitecture FFT reordering — the proof excludes it from the hash and additionally +checks every other feature against a committed reference vector within a strict relative tolerance +(`expected_features_reference.npz`), so a genuine regression still fails while CPU-level float +noise does not. Five features (amplitude mean/variance, phase difference, correlation matrix, and +the FFT-based PSD) carry the deterministic proof. **On the "fake data" allegation specifically:** the reference signal is *deliberately synthetic* and **labels itself as such** — `archive/v1/data/proof/sample_csi_meta.json` says: