{
  "entry": {
    "seq": 30812,
    "at": "2026-11-10T15:08:52.392Z",
    "type": "safety.rating",
    "subject": "github:jev-chat/jev-chat-jarvis",
    "payload": {
      "as_of": "2026-11-10T14:58:18.914Z",
      "band": "Moderate public signals",
      "check_version": "rs-safety-checks-1.0",
      "evidence_sha256": "d023887264889e1507438ddcb7e38f7467d5d5b4c940c3977ce0b586851f1f60",
      "rating_sha256": "85c7a39db37e57f0da93bb12c1ac4ad5f7cd6d29dee963dc6ad54b751f4a3d33",
      "repo": "jev-chat/jev-chat-jarvis",
      "score": 62,
      "stream": "safety_ratings"
    },
    "payload_hash": "56eafe622aa4e15d8429d0fba0f83fef176a5354f91b2d929bd3771a604cee64",
    "leaf_hash": "547f6cfc512a03af39a07f766f4ef14bbcf3a66b6a54ffd49483fa5fc0963ab5",
    "block_height": 5713,
    "texts": {},
    "data": {
      "as_of": "2026-11-10T14:58:18.914Z",
      "band": "Moderate public signals",
      "check_version": "rs-safety-checks-1.0",
      "evidence_sha256": "d023887264889e1507438ddcb7e38f7467d5d5b4c940c3977ce0b586851f1f60",
      "rating_sha256": "85c7a39db37e57f0da93bb12c1ac4ad5f7cd6d29dee963dc6ad54b751f4a3d33",
      "repo": "jev-chat/jev-chat-jarvis",
      "score": 62,
      "stream": "safety_ratings"
    }
  },
  "status": "sealed",
  "block": {
    "v": 1,
    "height": 5713,
    "prev_hash": "ebdc3b033ef3ab78c926cc6482ef0df079067b7a259189c7bf2acbf504c6f557",
    "merkle_root": "1372654f3bc2b358ead803c4ff6338726bbfd711f6c354c43e1e7d72406c799e",
    "first_seq": 30808,
    "last_seq": 30827,
    "entry_count": 20,
    "at": "2026-11-10T15:08:54.904Z",
    "key_id": "key_41eb7b6d1b11968a",
    "block_hash": "0b7cb87092e76159bf695420da42e6f9333243b7e7fb9888ba1c30957faf8d56",
    "signature": "HsR7c9/HZwcanHJVMektqxcHwvJcIRUcffPlABoijWQ72xzPBEetCRAaRpk0mfwqAMKwmZNIJWiyT/9ze0SPAw==",
    "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEYWJAvPDwdwiByA4ucuPBAV0jLWwXGgtbZqbyrLNMiM=\n-----END PUBLIC KEY-----\n"
  },
  "proof": {
    "leaf_hash": "547f6cfc512a03af39a07f766f4ef14bbcf3a66b6a54ffd49483fa5fc0963ab5",
    "index": 4,
    "path": [
      {
        "side": "R",
        "hash": "0c18be17e08162dc83d6e4bccc9bbdc66b87547691dbe51df2337fbd78642a2c"
      },
      {
        "side": "R",
        "hash": "f43eebd4a7b48107418de23588f3ef64a6f2bc4c1ae6a0337740d1b95217dc2c"
      },
      {
        "side": "L",
        "hash": "115cb0df666a2284396337d82519dcbae798c21282fa2e7da1a105edfbebe065"
      },
      {
        "side": "R",
        "hash": "f97f65ee6240e30539474205f01440b15b7f4ef1e295671a47e40b41b9f09c2f"
      },
      {
        "side": "R",
        "hash": "eaff485aa2c83f221771f7603a9185e2182ac62aa44bf581d77ee7f5e9269270"
      }
    ],
    "merkle_root": "1372654f3bc2b358ead803c4ff6338726bbfd711f6c354c43e1e7d72406c799e",
    "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": 1,
    "required": 2,
    "finalized_through": null,
    "bitcoin": {
      "anchored": true,
      "block_height": 975319,
      "confirmed_through": 6047
    },
    "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."
  }
}