Commit Graph

2 Commits

Author SHA1 Message Date
ruv 0f7a4bd36e feat(adr-115): flip Status → Accepted (MQTT track) + property-based fuzz tests + ADR index entry
## Status flip — ADR-115 §Status

Per maintainer ACK (#776 issue body + 13 ACK'd open questions) and the
shipped implementation in PR #778 (410 lib tests, witness bundle
VERIFIED), the MQTT track is now Accepted. The Matter SDK wiring P8b
remains Proposed pending the §9.10 deferral to v0.7.1.

ADR header table updated:
- Status: "**Accepted** (MQTT track P1-P7 + P8a + P9 + P10 shipped
   2026-05-23 in PR #778, 410 lib tests, witness bundle VERIFIED) /
   **Proposed** (Matter SDK wiring P8b deferred to v0.7.1 per §9.10)"
- Codename: HA-DISCO (MQTT) + HA-FABRIC (Matter) + **HA-MIND** (semantic
   primitives) — the third codename always belonged in the masthead.
- Tracking issue: now points at #776 + PR #778

`docs/adr/README.md` ADR index gets an ADR-115 row in the
"Platform and UI" section with the same Accepted/Proposed split.

## Property-based fuzzing — mqtt::security

Added 5 proptest cases (each runs ~256 iterations per cargo-test
invocation, so ~1280 additional assertions per CI run):

- topic_segment_rejects_anything_with_wildcards_or_separators —
  random Unicode prefix/suffix + an injected '+', '#', NUL, or '/'
  MUST be rejected
- topic_segment_accepts_safe_alphabet — any string built solely from
  the safe alphabet MUST be accepted
- topic_segment_always_rejects_empty — invariant across seeds
- payload_size_check_is_monotonic — every size ≤ MAX is OK, every
  size > MAX errors with the exact size
- path_safety_rejects_nul_or_newline_anywhere — NUL/newline at any
  offset in the path MUST be rejected

`proptest` 1.5 added as dev-dep with default features off (no
proptest-derive needed). ~3 transitive crates added, dev-only.

Total lib tests: 410 → 415 passed, 0 failed, 1 properly ignored.

Refs #776, PR #778.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-05-23 15:11:32 -04:00
ruv 2ff1dcb37a feat(adr-115): ADR + P1 — MQTT/Matter/Semantic CLI plumbing (refs #776)
ADR-115 lands the dual-protocol HA integration design:
- MQTT auto-discovery (HA-DISCO) carrying full RuView telemetry
- Matter Bridge (HA-FABRIC) carrying the standardised subset across
  Apple Home / Google Home / Alexa / SmartThings / HA
- Semantic Automation Primitives (HA-MIND) — 10 v1 inferred states
  (someone-sleeping, possible-distress, room-active, elderly-anomaly,
  meeting-in-progress, bathroom-occupied, fall-risk-elevated, bed-exit,
  no-movement, multi-room-transition) that turn raw signals into HA
  entities, Matter events, and Apple Home scene triggers — the inference
  layer that moves RuView from "RF sensing" to "ambient intelligence
  infrastructure". All 13 §9 open questions ACK'd by maintainer.

P1 (this commit) — `mqtt` and `matter` Cargo features (default off) +
20+ new CLI flags wired through cli.rs:
- --mqtt / --mqtt-host / --mqtt-port / --mqtt-username /
  --mqtt-password-env / --mqtt-client-id / --mqtt-prefix /
  --mqtt-tls / --mqtt-ca-file / --mqtt-client-cert / --mqtt-client-key
- --mqtt-refresh-secs / --mqtt-rate-{vitals,motion,count,rssi,pose} /
  --mqtt-publish-pose
- --privacy-mode (ADR-106 primitive-isolation contract)
- --matter / --matter-setup-file / --matter-reset /
  --matter-vendor-id (dev VID 0xFFF1 per §9.9) / --matter-product-id
- --semantic (default ON) / --semantic-thresholds-file /
  --semantic-zones-file / --semantic-baseline-window-days /
  --no-semantic <PRIMITIVE> (repeatable)

6 unit tests cover: defaults safe (mqtt off, vid=0xFFF1, semantic on),
compound flag composition, repeatable --no-semantic. All pass:

  cargo test -p wifi-densepose-sensing-server --no-default-features cli::tests
  test result: ok. 6 passed; 0 failed.

rumqttc 0.24 added as optional dep (gated behind `mqtt` feature) with
rustls instead of openssl for Windows parity with the rest of the
workspace. matter-rs intentionally absent until P7 spike validates the
SDK choice (§9.10).

Coordinates with ADR-110 work (different branch, different files).
This branch is feat/adr-115-ha-mqtt-matter off main. ADR-110 work
continues on adr-110-esp32c6.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-05-23 13:32:59 -04:00