ruview @ v1224
integrity
- size
- 59.6 MiB
- downloaded
- last checked
release notes
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
download
curl -fL -o v1224.zip https://ratatoskr.space/pkg/ruview/v1224.zip
printf '%s %s\n' '8ac32855c36cf09b1a6b5a24d5d7c1bb66091ef6f3dc3d0c3d94ab32576327e8' 'v1224.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1224.zip"
$out = "v1224.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "8ac32855c36cf09b1a6b5a24d5d7c1bb66091ef6f3dc3d0c3d94ab32576327e8") { throw "sha256 mismatch" }
curl -fL -o v1224.tar.gz https://ratatoskr.space/pkg/ruview/v1224.tar.gz
printf '%s %s\n' '06d357c6a36eb38befaf5a2e5c3e6b4a3a456ad244722ee7f0cde31db10a25f5' 'v1224.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1224.tar.gz"
$out = "v1224.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "06d357c6a36eb38befaf5a2e5c3e6b4a3a456ad244722ee7f0cde31db10a25f5") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1224.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1224.zip
printf '%s %s\n' '8ac32855c36cf09b1a6b5a24d5d7c1bb66091ef6f3dc3d0c3d94ab32576327e8' 'v1224.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1224.zip"
$out = "v1224.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "8ac32855c36cf09b1a6b5a24d5d7c1bb66091ef6f3dc3d0c3d94ab32576327e8") { throw "sha256 mismatch" }
curl -fL -o v1224.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1224.tar.gz
printf '%s %s\n' '06d357c6a36eb38befaf5a2e5c3e6b4a3a456ad244722ee7f0cde31db10a25f5' 'v1224.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1224.tar.gz"
$out = "v1224.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "06d357c6a36eb38befaf5a2e5c3e6b4a3a456ad244722ee7f0cde31db10a25f5") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1224.zip | zip | 59.6 MiB |
blake3-24 63f0defda36a021a02ffeda4dae3972007b0b6a0a5270e81
sha256 8ac32855c36cf09b1a6b5a24d5d7c1bb66091ef6f3dc3d0c3d94ab32576327e8
sha1 84d5b5dbec1decb0de057f38a60ca63cd6696db1
|
| v1224.tar.gz | tar.gz | 58.1 MiB |
blake3-24 b657e8e85dba18a12ebe15f1c782beb7dbd8a6698352dcb2
sha256 06d357c6a36eb38befaf5a2e5c3e6b4a3a456ad244722ee7f0cde31db10a25f5
sha1 7a5eed4afdbfe7c87066dd6f46f07bc64904e173
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1224.tar.gz"],
integrity = "sha256-BtNXxqNus4vvr1ouXD5rSjpFatJEci7n8M3jHbEKJfU=",
strip_prefix = "ruview-v1224",
)
.url = "https://ratatoskr.space/pkg/ruview/v1224.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1224.tar.gz"],
integrity = "sha256-BtNXxqNus4vvr1ouXD5rSjpFatJEci7n8M3jHbEKJfU=",
strip_prefix = "ruview-v1224",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1224.tar.gz",