@@ -21,33 +21,77 @@ All 5 ruvector crates integrated in workspace:
2121- ` ruvector-attention ` → ` model.rs ` (apply_spatial_attention) + ` bvp.rs `
2222
2323### Architecture Decisions
24- All ADRs in ` docs/adr/ ` (ADR-001 through ADR-017 ). Key ones:
24+ 28 ADRs in ` docs/adr/ ` (ADR-001 through ADR-028 ). Key ones:
2525- ADR-014: SOTA signal processing (Accepted)
2626- ADR-015: MM-Fi + Wi-Pose training datasets (Accepted)
2727- ADR-016: RuVector training pipeline integration (Accepted — complete)
2828- ADR-017: RuVector signal + MAT integration (Proposed — next target)
29+ - ADR-024: Contrastive CSI embedding / AETHER (Accepted)
30+ - ADR-027: Cross-environment domain generalization / MERIDIAN (Accepted)
31+ - ADR-028: ESP32 capability audit + witness verification (Accepted)
2932
3033### Build & Test Commands (this repo)
3134``` bash
32- # Rust — check training crate (no GPU needed )
35+ # Rust — full workspace tests (1,031 tests, ~2 min )
3336cd rust-port/wifi-densepose-rs
34- cargo check -p wifi-densepose-train --no-default-features
35-
36- # Rust — run all tests
37- cargo test -p wifi-densepose-train --no-default-features
37+ cargo test --workspace --no-default-features
3838
39- # Rust — full workspace check
40- cargo check --workspace --no-default-features
39+ # Rust — single crate check (no GPU needed)
40+ cargo check -p wifi-densepose-train --no-default-features
4141
42- # Python — proof verification
42+ # Python — deterministic proof verification (SHA-256)
4343python v1/data/proof/verify.py
4444
4545# Python — test suite
4646cd v1 && python -m pytest tests/ -x -q
4747```
4848
49+ ### Validation & Witness Verification (ADR-028)
50+
51+ ** After any significant code change, run the full validation:**
52+
53+ ``` bash
54+ # 1. Rust tests — must be 1,031+ passed, 0 failed
55+ cd rust-port/wifi-densepose-rs
56+ cargo test --workspace --no-default-features
57+
58+ # 2. Python proof — must print VERDICT: PASS
59+ cd ../..
60+ python v1/data/proof/verify.py
61+
62+ # 3. Generate witness bundle (includes both above + firmware hashes)
63+ bash scripts/generate-witness-bundle.sh
64+
65+ # 4. Self-verify the bundle — must be 7/7 PASS
66+ cd dist/witness-bundle-ADR028-* /
67+ bash VERIFY.sh
68+ ```
69+
70+ ** If the Python proof hash changes** (e.g., numpy/scipy version update):
71+ ``` bash
72+ # Regenerate the expected hash, then verify it passes
73+ python v1/data/proof/verify.py --generate-hash
74+ python v1/data/proof/verify.py
75+ ```
76+
77+ ** Witness bundle contents** (` dist/witness-bundle-ADR028-<sha>.tar.gz ` ):
78+ - ` WITNESS-LOG-028.md ` — 33-row attestation matrix with evidence per capability
79+ - ` ADR-028-esp32-capability-audit.md ` — Full audit findings
80+ - ` proof/verify.py ` + ` expected_features.sha256 ` — Deterministic pipeline proof
81+ - ` test-results/rust-workspace-tests.log ` — Full cargo test output
82+ - ` firmware-manifest/source-hashes.txt ` — SHA-256 of all 7 ESP32 firmware files
83+ - ` crate-manifest/versions.txt ` — All 15 crates with versions
84+ - ` VERIFY.sh ` — One-command self-verification for recipients
85+
86+ ** Key proof artifacts:**
87+ - ` v1/data/proof/verify.py ` — Trust Kill Switch: feeds reference signal through production pipeline, hashes output
88+ - ` v1/data/proof/expected_features.sha256 ` — Published expected hash
89+ - ` v1/data/proof/sample_csi_data.json ` — 1,000 synthetic CSI frames (seed=42)
90+ - ` docs/WITNESS-LOG-028.md ` — 11-step reproducible verification procedure
91+ - ` docs/adr/ADR-028-esp32-capability-audit.md ` — Complete audit record
92+
4993### Branch
50- All development on : ` claude/validate-code-quality-WNrNw `
94+ Default branch : ` main `
5195
5296---
5397
@@ -93,14 +137,16 @@ All development on: `claude/validate-code-quality-WNrNw`
93137
94138Before merging any PR, verify each item applies and is addressed:
95139
96- 1 . ** Tests pass** — ` cargo test ` (Rust) and ` python -m pytest ` (Python) green
97- 2 . ** README.md** — Update platform tables, crate descriptions, hardware tables, feature summaries if scope changed
98- 3 . ** CHANGELOG.md** — Add entry under ` [Unreleased] ` with what was added/fixed/changed
99- 4 . ** User guide** (` docs/user-guide.md ` ) — Update if new data sources, CLI flags, or setup steps were added
100- 5 . ** ADR index** — Update ADR count in README docs table if a new ADR was created
101- 6 . ** Docker Hub image** — Only rebuild if Dockerfile, dependencies, or runtime behavior changed (not needed for platform-gated code that doesn't affect the Linux container)
102- 7 . ** Crate publishing** — Only needed if a crate is published to crates.io and its public API changed (workspace-internal crates don't need publishing)
103- 8 . ** ` .gitignore ` ** — Add any new build artifacts or binaries
140+ 1 . ** Rust tests pass** — ` cargo test --workspace --no-default-features ` (1,031+ passed, 0 failed)
141+ 2 . ** Python proof passes** — ` python v1/data/proof/verify.py ` (VERDICT: PASS)
142+ 3 . ** README.md** — Update platform tables, crate descriptions, hardware tables, feature summaries if scope changed
143+ 4 . ** CHANGELOG.md** — Add entry under ` [Unreleased] ` with what was added/fixed/changed
144+ 5 . ** User guide** (` docs/user-guide.md ` ) — Update if new data sources, CLI flags, or setup steps were added
145+ 6 . ** ADR index** — Update ADR count in README docs table if a new ADR was created
146+ 7 . ** Witness bundle** — Regenerate if tests or proof hash changed: ` bash scripts/generate-witness-bundle.sh `
147+ 8 . ** Docker Hub image** — Only rebuild if Dockerfile, dependencies, or runtime behavior changed
148+ 9 . ** Crate publishing** — Only needed if a crate is published to crates.io and its public API changed
149+ 10 . ** ` .gitignore ` ** — Add any new build artifacts or binaries
104150
105151## Build & Test
106152
0 commit comments