wifi-densepose/docs
ruv 1f5b7b48c9 cog-ha-matter (ADR-116 P4): witness file persistence + chain-level verify
Closes the witness audit-bundle surface. The hash-chain primitive
+ JSONL serializer from earlier iters only handled one event at a
time; this lands the file-stream surface that operations actually
need:

  * `WitnessChain::write_jsonl(&mut impl Write) -> io::Result<()>`
    — streams every event as one line + `\n`, empty chain writes
    zero bytes
  * `WitnessChain::read_jsonl(impl BufRead) -> Result<WitnessChain,
    WitnessReadError>` — parses event-by-event AND runs chain-level
    `verify()` on the loaded chain, catching reordered or replayed
    prefixes that per-event hashing alone misses

Critical security property: `read_jsonl` calls `WitnessChain::verify`
on the loaded chain BEFORE returning Ok. A forged bundle assembled
from two valid chains pasted together would slip past the
per-event hash check (each event's `this_hash` is internally
consistent) but the cross-event `prev_hash` linkage detects the
seam. Test `read_jsonl_chain_verify_catches_reordered_events`
locks this — swap two events in a 2-event bundle, see Verify error.

Error surface (new `WitnessReadError` enum):
  * `Io { line_no, msg }`           — read failure mid-stream
  * `Parse { line_no, source }`     — per-event from_jsonl_line failure
  * `Verify { source }`             — chain-level verify failure

`line_no` is 1-indexed so an auditor sees the same number their
text editor shows. Blank lines tolerated for hand-edited bundles.

7 new tests:
  * empty chain writes zero bytes
  * write→read round-trips a 3-event chain
  * exactly N newlines for N events; trailing newline present
  * blank lines / leading newline tolerated
  * parse error surfaces with correct line_no
  * reordered events caught by chain-level verify
  * no-trailing-newline still loads the final event

51/51 cog tests green (44 → 51).

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-05-23 18:19:05 -04:00
..
adr cog-ha-matter (ADR-116 P4): witness file persistence + chain-level verify 2026-05-23 18:19:05 -04:00
archtocode-visual-overview docs: add visual architecture overview images (#208) 2026-05-17 18:18:07 -04:00
benchmarks docs(bench): append v0.0.2 section to person-count benchmark log 2026-05-21 19:47:55 -04:00
ddd docs: rvCSI edge RF sensing platform — PRD, ADR-095, DDD domain model 2026-05-12 23:15:10 +00:00
edge-modules chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00
huggingface fix(train): wire wifi-densepose-signal into the pipeline; correct MODEL_CARD env-sensor claim (#536) 2026-05-11 23:40:55 -04:00
integrations docs(ha): add cross-industry application examples to home-assistant.md 2026-05-23 17:08:10 -04:00
prd docs: rvCSI edge RF sensing platform — PRD, ADR-095, DDD domain model 2026-05-12 23:15:10 +00:00
qe-reports chore(repo): move v1/ → archive/v1/ + add archive/README.md (#430) 2026-04-25 23:07:52 -04:00
releases ADR-115: Home Assistant + Matter integration (#778) 2026-05-23 16:13:28 -04:00
research cog-ha-matter (ADR-116 P3): extract pure publisher-input builder 2026-05-23 17:55:17 -04:00
tutorials docs(tutorials): Pi 5 + Hailo cluster rvcsi tutorial (#546) 2026-05-17 17:41:39 -04:00
ADR-110-BRANCH-STATE.md ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
ADR-110-REVIEW-GUIDE.md ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
TROUBLESHOOTING.md fix(docker): UDP relay for multi-source ESP32 on Docker Desktop Windows (#502) 2026-05-17 18:01:44 -04:00
WITNESS-LOG-028.md chore(repo): move v1/ → archive/v1/ + add archive/README.md (#430) 2026-04-25 23:07:52 -04:00
WITNESS-LOG-110.md ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
build-guide.md chore(repo): move v1/ → archive/v1/ + add archive/README.md (#430) 2026-04-25 23:07:52 -04:00
readme-details.md docs(readme): split details to docs/readme-details.md and reorganize 2026-04-29 19:34:24 -04:00
security-audit-wasm-edge-vendor.md chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00
user-guide.md ADR-115: Home Assistant + Matter integration (#778) 2026-05-23 16:13:28 -04:00
wifi-mat-user-guide.md chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00