{
  "entry": {
    "seq": 15108,
    "at": "2026-11-06T03:52:17.890Z",
    "type": "safety.rating",
    "subject": "skill:github-com-nickytonline-beads-mcp-cf1fe71007",
    "payload": {
      "as_of": "2026-11-06T03:30:16.649Z",
      "band": "Limited public signals",
      "check_version": "rs-safety-checks-2.0",
      "evidence_sha256": "32be5433e6f4ed2bced4f7958cc40c282578516883929de918177616c357c34c",
      "id": "github-com-nickytonline-beads-mcp-cf1fe71007",
      "kind": "skill",
      "rating_sha256": "e685a336f2a73f6a725c9ed2cad1aaf95f99fa0fbbb31210ca9d3eb6506f67cf",
      "score": 48,
      "stream": "safety_ratings"
    },
    "payload_hash": "23917dcc79eaf743a0af9ffe5b95e046d44b82e6ca841d743869e968471eb017",
    "leaf_hash": "ea3b0e6dba503fb97e979408a8c43f12887305c1aafbb40f272953a62eed72ae",
    "block_height": 3820,
    "texts": {},
    "data": {
      "as_of": "2026-11-06T03:30:16.649Z",
      "band": "Limited public signals",
      "check_version": "rs-safety-checks-2.0",
      "evidence_sha256": "32be5433e6f4ed2bced4f7958cc40c282578516883929de918177616c357c34c",
      "id": "github-com-nickytonline-beads-mcp-cf1fe71007",
      "kind": "skill",
      "rating_sha256": "e685a336f2a73f6a725c9ed2cad1aaf95f99fa0fbbb31210ca9d3eb6506f67cf",
      "score": 48,
      "stream": "safety_ratings"
    }
  },
  "status": "sealed",
  "block": {
    "v": 1,
    "height": 3820,
    "prev_hash": "1acda380dd24700730a39f48bf6575e4a7c18d085fe930610c7bdda024b4fa08",
    "merkle_root": "828c5f0403a65af17bff606167d2c7c06a108d57d71ef8a8578fefea5a982a5b",
    "first_seq": 15104,
    "last_seq": 15110,
    "entry_count": 7,
    "at": "2026-11-06T03:52:17.967Z",
    "key_id": "key_41eb7b6d1b11968a",
    "block_hash": "975a8b3f556b7e180b2759760e81e3f22764a5ae1a714ac69739ca8084041877",
    "signature": "rSA2MbTzoaN4Dqs1tyyQHhR1W7xbPlTNq6QCI58mdmQtpnNqEsL8GmDSgEQx7wROhbo70gcV+EOerB0q79izDA==",
    "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEYWJAvPDwdwiByA4ucuPBAV0jLWwXGgtbZqbyrLNMiM=\n-----END PUBLIC KEY-----\n"
  },
  "proof": {
    "leaf_hash": "ea3b0e6dba503fb97e979408a8c43f12887305c1aafbb40f272953a62eed72ae",
    "index": 4,
    "path": [
      {
        "side": "R",
        "hash": "676d79a7db0406e8367a00b4cb162b662f418d3a23ec8fa37308a783fe30a2ff"
      },
      {
        "side": "R",
        "hash": "8d013e9ec04c61900ac5814805709a82c4a9701be2db976cc1193b3e4dbd0f6d"
      },
      {
        "side": "L",
        "hash": "f77cb55130f35ca74689d1d949182dfc7a801076d371abc1ebb87f0f654b4664"
      }
    ],
    "merkle_root": "828c5f0403a65af17bff606167d2c7c06a108d57d71ef8a8578fefea5a982a5b",
    "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": 974758,
      "confirmed_through": 6068
    },
    "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."
  }
}