Automated release from CI pipeline
Changes:
cog-ha-matter (ADR-116 P4): pure mDNS service-record builder
Opens P4 with the smallest extractable unit: a pure builder that
produces the wire-format MdnsService the responder will publish
next iter. Splitting the record-builder from the responder lets
us:
- lock the TXT-record surface with named unit tests so drift
between the cog and the HA-side YAML auto-discovery binding
fires a test instead of silently breaking deployments, - swap the responder library (mdns-sd / zeroconf / pnet) without
touching content, - include the advertisement in
--print-manifestfor Seed
integration tests that can't boot tokio.
TXT surface (sorted, RFC 6763):
| cog_id | "ha-matter" |
| cog_version | CARGO_PKG_VERSION |
| node_id | identity.node_id |
| mqtt_port | u16 stringified |
| privacy | "1" | "0" |
| proto | "ruview-ha/1" |
9 new tests:
- service_type locked to
_ruview-ha._tcp - instance_name carries node_id
- control_port advertises the control plane, not MQTT
- privacy flag is "1"/"0" (HA config flow reads it byte-stable)
- proto version locked to ruview-ha/1 (bump is deliberate)
- cog_id in TXT matches crate constant
- txt_records sorted for byte-stable mDNS responses
- PII leak guard: TXT must NOT carry hr_bpm, br_bpm, pose_*,
keypoint, ssid, lat, lon, mac, rssi — broadcasts in cleartext
so a future "let's add hr_bpm for convenience" patch fires
here, not in a privacy incident. - required-keys lock — adding is fine, removing/renaming breaks
every deployed Seed.
21/21 cog tests green (12 → 21).
ADR-116 P4 flipped pending → in progress, with the responder /
embedded broker / witness chain enumerated as the remaining P4
sub-units.
Co-Authored-By: claude-flow ruv@ruv.net
Docker Image:
ghcr.io/ruvnet/RuView:35722529bfded89adab12136d113713df51643bf