{
  "entry": {
    "seq": 27321,
    "at": "2026-11-09T16:01:40.682Z",
    "type": "safety.rating",
    "subject": "skill:github-com-harnessrouter-harnessrouter-1d803e47e2",
    "payload": {
      "as_of": "2026-11-09T00:38:07.256Z",
      "band": "Limited public signals",
      "check_version": "rs-safety-checks-2.0",
      "evidence_sha256": "c475e014561c07b9c9d17d176d803fd5192e1cd9474e6b056dd65b626d48c576",
      "id": "github-com-harnessrouter-harnessrouter-1d803e47e2",
      "kind": "skill",
      "rating_sha256": "dd01b4e7d931e6e32e7b0a115edb95b4f4ff909c881b7cbdae2258e63d043115",
      "score": 48,
      "stream": "safety_ratings"
    },
    "payload_hash": "e8f1bce5b7a32dcf6824a5356782614e5e4ea1a5587cb3da441280a3521f37d7",
    "leaf_hash": "f6b590706f68b27b32d13fa2721438a651265e3a7d93592fcd54e34c4cac4816",
    "block_height": 5275,
    "texts": {},
    "data": {
      "as_of": "2026-11-09T00:38:07.256Z",
      "band": "Limited public signals",
      "check_version": "rs-safety-checks-2.0",
      "evidence_sha256": "c475e014561c07b9c9d17d176d803fd5192e1cd9474e6b056dd65b626d48c576",
      "id": "github-com-harnessrouter-harnessrouter-1d803e47e2",
      "kind": "skill",
      "rating_sha256": "dd01b4e7d931e6e32e7b0a115edb95b4f4ff909c881b7cbdae2258e63d043115",
      "score": 48,
      "stream": "safety_ratings"
    }
  },
  "status": "sealed",
  "block": {
    "v": 1,
    "height": 5275,
    "prev_hash": "24f00234b3d6392a6b2c295be09d1871528baabd0ea812573bc81f9b9703fbd5",
    "merkle_root": "bd0208ce5e4debbb17f3e005d64ae9ce65972bc371e27f18146fced5ba656cdf",
    "first_seq": 27316,
    "last_seq": 27324,
    "entry_count": 9,
    "at": "2026-11-09T16:01:40.734Z",
    "key_id": "key_41eb7b6d1b11968a",
    "block_hash": "c7029e35bc630ea365f8a55c356f26a48292363ae92cffd4a0094bf28fe71c57",
    "signature": "Bn31oq37YBVdbJBEaeAMpqVRf+ROq4419dGbzLy1SrZoza5lO962izYDNk0YcYlE6PsnWM65k2rnPNIqA55xCg==",
    "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEYWJAvPDwdwiByA4ucuPBAV0jLWwXGgtbZqbyrLNMiM=\n-----END PUBLIC KEY-----\n"
  },
  "proof": {
    "leaf_hash": "f6b590706f68b27b32d13fa2721438a651265e3a7d93592fcd54e34c4cac4816",
    "index": 5,
    "path": [
      {
        "side": "L",
        "hash": "15323130abbbaecfc25c2a590ffdfa50696a6ab01e3d295611bb890f858715c0"
      },
      {
        "side": "R",
        "hash": "fdb2405a4d8d6b3eb2049debc406ec72fe06a1a0ec18ccc2701cda54e08f6b39"
      },
      {
        "side": "L",
        "hash": "39b7f21c8e84de2d874da7a30586a321f826d76a6606b0d7f576174c900d94f9"
      },
      {
        "side": "R",
        "hash": "c5cf54ae0ddeabf249235b8dff82c5430f543852ce0eb61c6c34bba238df215d"
      }
    ],
    "merkle_root": "bd0208ce5e4debbb17f3e005d64ae9ce65972bc371e27f18146fced5ba656cdf",
    "how_to_verify": "payload_hash = sha256(canonical(payload)); leaf = sha256('leaf:' + canonical({seq, at, type, subject, payload_hash})); fold the path (R: sha256('node:' + acc + hash), L: sha256('node:' + hash + acc)) to merkle_root; verify the Ed25519 signature over canonical(block header)."
  },
  "finality": {
    "state": "bitcoin-anchored",
    "final": false,
    "witnesses": 0,
    "witnesses_confirmed_unaffiliated": 0,
    "witnesses_total": 0,
    "required": 2,
    "finalized_through": null,
    "bitcoin": {
      "anchored": true,
      "block_height": 975195,
      "confirmed_through": 6065
    },
    "states": [
      "recorded",
      "sealed",
      "bitcoin-anchored",
      "witness-quorum",
      "final"
    ],
    "rule": "States climb recorded -> sealed -> bitcoin-anchored -> witness-quorum -> final. A block is final only once its hash is confirmed in Bitcoin AND 2 confirmed-unaffiliated witnesses on distinct registrable domains with distinct keys have cosigned it or any later block; each header commits to every earlier block. Cosignatures from affiliated, unconfirmed, pending or challenged witnesses are public evidence but never count toward quorum. The quorum steps up on a published schedule as confirmed-unaffiliated witnesses grow: 2 required while fewer than 5 are confirmed, 3 at 5, 4 at 10, 6 at 20, 8 at 40. Every tier's requirement sits well below the count that triggers it, so churn is weather, not a freeze; the requirement is recomputed from the live count on every read."
  }
}