Overview
Track end-to-end implementation of ADR-125 — RuView ↔ Apple Home native HAP bridge using real hardware, no mocks or simulations.
What this is
ADR-125 (codename APPLE-FABRIC) turns the Cognitum Seed into a discoverable HomeKit accessory on the LAN so an Apple HomePod — acting as Home Hub — discovers it via Bonjour/mDNS, and Apple Home / Siri / iPhone Home app become the operator UX for RuView's RF sensing. No connection is made to the HomePod; RuView advertises, HomePod discovers.
Architectural chain (target)
ESP32-C6 (real, COM12, ruv.net)
└─ ADR-081 rv_feature_state UDP @ 5005 (60-byte packed, CRC32-validated)
└─ sensing-server-equivalent ingestor (mac-mini, Tailscale)
└─ BFLD PrivacyGate (ADR-118 §2.2 invariant I1; only class-2/3 cross)
└─ Semantic event mapper (ADR-125 §2.1.d: Unknown Presence / Unexpected Occupancy / Unrecognized Activity Pattern)
└─ HAP-1.1 bridge (mDNS-advertised, paired)
└─ HomePod (Home Hub) → Apple Home → iPhone Home app + Siri
Why the chain matters
- ADR-116 §P7 left HAP/Matter as a
matter = [] feature-flag stub. This issue closes that gap with the HAP-python sidecar reference impl named in ADR-125 §2.1.a (P2 will replace with Rust-native via the hap crate).
- ADR-118 §2.2 structural invariant I1 holds at the HomeKit boundary: raw BFI never crosses. The BFLD
PrivacyGate (class enum: Raw=0, Derived=1, Anonymous=2, Restricted=3) gates the HAP advertiser — only Anonymous and Restricted classes are HomeKit-eligible. Soul-Signature match probabilities and rf_signature_hash never appear on the wire.
- ADR-125 §2.1.d: identity_risk_score is not wired to
SecuritySystemCurrentState. Continuous probabilities become thresholded semantic events that read as ambient awareness, not threat detection. The naming is the contract.
Substrate (validated before iter 1)
| Resource |
State |
| ESP32-C6 (Seeed MR60BHA2) |
COM12 (Windows) — running esp32-csi-node v0.6.9 (May 23 2026) |
| ESP32-S3 |
COM9 (Windows) — separate node, not used in this loop |
| ruv-mac-mini (Tailscale 100.84.53.55, LAN 192.168.1.166) |
macOS arm64; Python 3.13 venv with HAP-python; sink for C6 UDP stream |
| HomePod |
On ruv.net (same SSID as the C6); discovers HAP bridge via Home Hub |
| iPhone Home app |
Already paired with RuView Test Bridge 224DF9 (1 paired controller in ~/.ruview-hap/accessory.state) |
Iter plan
| Iter |
Increment |
Stop |
| 1 |
Provision C6 + document substrate |
C6 streams UDP feature_state to mac-mini |
| 2 |
Parse rv_feature_state wire format → HAP toggle |
iPhone Home app sees motion flip from real C6 presence_score |
| 3 |
Insert BFLD PrivacyGate + semantic-event naming |
Class-2 enforced at HAP boundary; characteristic exposed as semantic |
| 4 |
Wire Rust wifi-densepose-sensing-server as the canonical ingestor |
Replaces Python feature_state parser |
| 5 |
Bundle in the multi-arch Docker image (Dockerfile.rust) |
docker run … hap-accessory --privacy-mode works on Apple Silicon |
| 6 |
Witness + close |
Full chain green; CronDelete; close issue |
Loop discipline
- Branch:
main. Each commit ≤250 LOC. Real hardware only (no mocks/sims).
- Cron
4e1bb9f2 (every 5 min) fires the loop.
- Every iter: branch check → pull → C6+HAP liveness → one increment → commit on green → push → progress comment on this issue.
Comments below track per-iter outcome with the commit SHA, the empirically-measured numbers, and the validated state of the chain.
Overview
Track end-to-end implementation of ADR-125 — RuView ↔ Apple Home native HAP bridge using real hardware, no mocks or simulations.
What this is
ADR-125 (codename APPLE-FABRIC) turns the Cognitum Seed into a discoverable HomeKit accessory on the LAN so an Apple HomePod — acting as Home Hub — discovers it via Bonjour/mDNS, and Apple Home / Siri / iPhone Home app become the operator UX for RuView's RF sensing. No connection is made to the HomePod; RuView advertises, HomePod discovers.
Architectural chain (target)
Why the chain matters
matter = []feature-flag stub. This issue closes that gap with the HAP-python sidecar reference impl named in ADR-125 §2.1.a (P2 will replace with Rust-native via thehapcrate).PrivacyGate(class enum: Raw=0, Derived=1, Anonymous=2, Restricted=3) gates the HAP advertiser — only Anonymous and Restricted classes are HomeKit-eligible. Soul-Signature match probabilities andrf_signature_hashnever appear on the wire.SecuritySystemCurrentState. Continuous probabilities become thresholded semantic events that read as ambient awareness, not threat detection. The naming is the contract.Substrate (validated before iter 1)
esp32-csi-nodev0.6.9 (May 23 2026)ruv.net(same SSID as the C6); discovers HAP bridge via Home HubRuView Test Bridge 224DF9(1 paired controller in~/.ruview-hap/accessory.state)Iter plan
rv_feature_statewire format → HAP togglewifi-densepose-sensing-serveras the canonical ingestordocker run … hap-accessory --privacy-modeworks on Apple SiliconLoop discipline
main. Each commit ≤250 LOC. Real hardware only (no mocks/sims).4e1bb9f2(every 5 min) fires the loop.Comments below track per-iter outcome with the commit SHA, the empirically-measured numbers, and the validated state of the chain.