yggvault ratatoskr-space connected via regular web
Color theme
also available via yggdrasil mesh http://[203:b338:2a84:a18f:986:47ae:1a4:d8d3]/pkg/ruview/v1591
vault / ruview / v1591

ruview @ v1591

integrity

size
61.1 MiB
downloaded
last checked
source https://github.com/ruvnet/RuView · available · github

release notes

Automated release from CI pipeline

Changes: fix(protocol): resolve 0xC511_0004 magic collision (closes #928) (#931)

Two real problems in the Static Application Security Testing job:

  1. It scanned a path that no longer exists. bandit -r src/ and semgrep … src/ pointed at the repo-root src/, but the Python code moved to archive/v1/src/ (64 .py files) when the runtime was rewritten in Rust. So the SAST scan matched nothing — a silent no-op (this is also why bandit-results.sarif was "Path does not exist" on recent runs). Fixed both to archive/v1/src/.

  2. Deprecated + redundant + flaky semgrep step. The returntocorp/semgrep-action@v1 step pulled returntocorp/semgrep-agent:v1 from Docker Hub every run (intermittently timing out → red check, e.g. on #929) and is EOL. It was redundant: the pip semgrep --sarif step is what feeds GitHub Security; the action only pushed to the Semgrep cloud app via SEMGREP_APP_TOKEN. Removed it and folded its p/docker + p/kubernetes rulesets into the pip semgrep command, so coverage is preserved with no Docker pull.

The job stays continue-on-error: true (non-gating). YAML validated.

Co-Authored-By: claude-flow ruv@ruv.net

Background

0xC511_0004 was assigned to two different packet formats in firmware — EDGE_FUSED_MAGIC (ADR-063, 48-byte edge_fused_vitals_pkt_t) and WASM_OUTPUT_MAGIC (ADR-040, variable-length wasm_output_pkt_t). Both were transmitted. The sensing-server only had a WASM parser for that magic and no fused-vitals parser, so on the ESP32-C6 + MR60BHA2 mmWave configuration the fused-vitals packet was silently misparsed as a malformed WASM output — breathing_rate was read as event_count, mmWave-fused vitals were lost, and spurious WASM events were emitted to subscribers.

Fix

  1. Reassign WASM_OUTPUT_MAGIC to 0xC511_0007 (next free slot per the registry in rv_feature_state.h). Smaller blast radius than moving fused-vitals — the registry already treats 0xC511_0004 as fused-vitals canonical and several years of deployed feature tracking depends on that assignment.

  2. Add parse_edge_fused_vitals + EdgeFusedVitalsPacket in wifi-densepose-sensing-server::main. Byte layout taken directly from edge_processing.h:129, mirroring the firmware's _Static_assert(sizeof(edge_fused_vitals_pkt_t) == 48) so future firmware changes that grow the packet will break this parser loudly instead of silently.

  3. Add a dispatch arm in the UDP receive loop. Fused-vitals is tried BEFORE WASM so a stale firmware (still emitting 0xC511_0004 with the WASM payload) fails to parse as fused-vitals (size mismatch), then fails to parse as WASM (magic mismatch on the new 0x...0007), and gets dropped — a deliberate "fail loud" outcome rather than the pre-fix silent garbage.

  4. Update the registry comment in rv_feature_state.h to add the new 0x...0007 row.

  5. Add five tests in a new issue_928_magic_collision_tests mod:

    • parse_edge_fused_vitals_extracts_fields_correctly
    • parse_edge_fused_vitals_rejects_short_buffer
    • parse_edge_fused_vitals_rejects_wrong_magic
    • parse_wasm_output_rejects_legacy_0004_magic
    • parse_wasm_output_accepts_new_0007_magic

WebSocket payload

Fused-vitals now broadcasts as {"type": "edge_fused_vitals", ...} with the mmWave-specific block nested under mmwave. Schema is additive — existing subscribers that only inspect type are unaffected; subscribers that switch on type gain a new branch.

Deployment note

This is a wire-protocol change. Firmware older than this commit that emits WASM output on 0xC511_0004 will lose its WASM event stream against an updated host (host expects 0xC511_0007). Per the issue discussion, "fail loud" is preferred to silent misparsing. Operators running C6+mmWave should reflash firmware concurrent with the host upgrade.

Test results cargo test -p wifi-densepose-sensing-server --no-default-features --bin sensing-server → 122 passed / 0 failed (5 new + 117 existing, unchanged)

Co-Authored-By: claude-flow ruv@ruv.net

Docker Image: ghcr.io/ruvnet/RuView:2c136aca7456ee5555a21fdcf7176fae38b8cf38

download

unix · zip
curl -fL -o v1591.zip https://ratatoskr.space/pkg/ruview/v1591.zip
                    printf '%s  %s\n' '79ddee0796bab56f5b9fc4c21c2d70d184d930ae3b36059e93393b1344ae38bd' 'v1591.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v1591.zip"
$out = "v1591.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "79ddee0796bab56f5b9fc4c21c2d70d184d930ae3b36059e93393b1344ae38bd") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1591.tar.gz https://ratatoskr.space/pkg/ruview/v1591.tar.gz
                    printf '%s  %s\n' 'f6283f14ec41af19e815ac060ed29b4519853c972ee84ccf31a2e6a29ccc598d' 'v1591.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v1591.tar.gz"
$out = "v1591.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "f6283f14ec41af19e815ac060ed29b4519853c972ee84ccf31a2e6a29ccc598d") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1591.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1591.zip
                    printf '%s  %s\n' '79ddee0796bab56f5b9fc4c21c2d70d184d930ae3b36059e93393b1344ae38bd' 'v1591.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1591.zip"
$out = "v1591.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "79ddee0796bab56f5b9fc4c21c2d70d184d930ae3b36059e93393b1344ae38bd") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1591.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1591.tar.gz
                    printf '%s  %s\n' 'f6283f14ec41af19e815ac060ed29b4519853c972ee84ccf31a2e6a29ccc598d' 'v1591.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1591.tar.gz"
$out = "v1591.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "f6283f14ec41af19e815ac060ed29b4519853c972ee84ccf31a2e6a29ccc598d") { throw "sha256 mismatch" }
artifact format size hashes
v1591.zip zip 61.1 MiB
blake3-24 6a8fceb0e088bce9eaba2ba8e3946da3c065c67025f16226
sha256 79ddee0796bab56f5b9fc4c21c2d70d184d930ae3b36059e93393b1344ae38bd
sha1 2b91b51fae0233199efbbab2597d4cf878a6d1f8
v1591.tar.gz tar.gz 59.3 MiB
blake3-24 595e4c4f1d174995157658904bacc575fe92b78708218105
sha256 f6283f14ec41af19e815ac060ed29b4519853c972ee84ccf31a2e6a29ccc598d
sha1 bb8f16f0eab44e5a68351c8e0750e1b286778803

install

bazel
http_archive(
    name = "ruview",
    urls = ["https://ratatoskr.space/pkg/ruview/v1591.tar.gz"],
    integrity = "sha256-9ig/FOxBrxnoFawGDtKbRRmFPJcu6EzPMaLmopzMWY0=",
    strip_prefix = "ruview-v1591",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v1591.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "ruview",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1591.tar.gz"],
    integrity = "sha256-9ig/FOxBrxnoFawGDtKbRRmFPJcu6EzPMaLmopzMWY0=",
    strip_prefix = "ruview-v1591",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1591.tar.gz",
← v1596v1590 →