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/v1226
vault / ruview / v1226

ruview @ v1226

integrity

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

release notes

Automated release from CI pipeline

Changes: cog-ha-matter (ADR-116 P4): witness JSONL persistence

Third P4 sub-unit: serialize/parse for the witness hash chain so audit bundles can be written to disk and replayed.

Wire shape (one record per line, alphabetical field order locked):

{"kind":"...","payload_hex":"...","prev_hash":"...","seq":N, "this_hash":"...","timestamp_unix_s":N}

Why alphabetical field order: auditors archive whole bundles and hash them. A rebuild that reordered fields would silently invalidate every archival hash — locking the order is what makes the JSONL stable across compiler / serde-json upgrades.

Why hex everywhere: human-greppable, monospace-friendly, no base64 ambiguity, no Vec JSON-array ugliness. Same convention as ADR-101's binary_sha256.

Critically, from_jsonl_line RE-VERIFIES this_hash against the canonical bytes derived from the parsed fields. A tampered bundle fires WitnessParseError::HashMismatch BEFORE the event loads — the parser is itself an auditor.

New surfaces:

10 new tests:

44/44 cog tests green (34 → 44).

ADR-116 P4 row enumerates 4 sub-units now: ✅ mDNS record-builder, ✅ witness chain primitive, ✅ witness JSONL persistence, ⏳ responder + embedded broker + Ed25519 signing.

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

Docker Image: ghcr.io/ruvnet/RuView:a3478ea3b50b5a1550dbd8234a575e2978e00183

download

unix · zip
curl -fL -o v1226.zip https://ratatoskr.space/pkg/ruview/v1226.zip
                    printf '%s  %s\n' '5901ac81a054545cee04db06104e4d1b90188a34e9fadf6867b2920bbfceb479' 'v1226.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v1226.zip"
$out = "v1226.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5901ac81a054545cee04db06104e4d1b90188a34e9fadf6867b2920bbfceb479") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1226.tar.gz https://ratatoskr.space/pkg/ruview/v1226.tar.gz
                    printf '%s  %s\n' 'baaf8c1aabc19ed003943f3f890c0c1182397e6990b1629c5576737ca27d114a' 'v1226.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v1226.tar.gz"
$out = "v1226.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "baaf8c1aabc19ed003943f3f890c0c1182397e6990b1629c5576737ca27d114a") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1226.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1226.zip
                    printf '%s  %s\n' '5901ac81a054545cee04db06104e4d1b90188a34e9fadf6867b2920bbfceb479' 'v1226.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1226.zip"
$out = "v1226.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5901ac81a054545cee04db06104e4d1b90188a34e9fadf6867b2920bbfceb479") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1226.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1226.tar.gz
                    printf '%s  %s\n' 'baaf8c1aabc19ed003943f3f890c0c1182397e6990b1629c5576737ca27d114a' 'v1226.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1226.tar.gz"
$out = "v1226.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "baaf8c1aabc19ed003943f3f890c0c1182397e6990b1629c5576737ca27d114a") { throw "sha256 mismatch" }
artifact format size hashes
v1226.zip zip 59.6 MiB
blake3-24 ee766412b6655d3e44e1e6dbbcd201d35f05b3dddb0bc050
sha256 5901ac81a054545cee04db06104e4d1b90188a34e9fadf6867b2920bbfceb479
sha1 b4321aa7cf0bea9e3d6ad650188d7c7dea02b4a3
v1226.tar.gz tar.gz 58.1 MiB
blake3-24 b15e73796d2d51bd784eef9cbe7b0732f9cfbedc99f9dafd
sha256 baaf8c1aabc19ed003943f3f890c0c1182397e6990b1629c5576737ca27d114a
sha1 daafb043d91ae11413887d877a64a884bb2ce5b0

install

bazel
http_archive(
    name = "ruview",
    urls = ["https://ratatoskr.space/pkg/ruview/v1226.tar.gz"],
    integrity = "sha256-uq+MGqvBntADlD8/iQwMEYI5fmmQsWKcVXZzfKJ9EUo=",
    strip_prefix = "ruview-v1226",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v1226.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "ruview",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1226.tar.gz"],
    integrity = "sha256-uq+MGqvBntADlD8/iQwMEYI5fmmQsWKcVXZzfKJ9EUo=",
    strip_prefix = "ruview-v1226",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1226.tar.gz",
← v1227v1225 →