{
  "entry": {
    "seq": 6572,
    "at": "2026-11-03T09:42:37.512Z",
    "type": "safety.rating",
    "subject": "skill:github-com-signal-forge-ai-x402-agent-tools-764eccdcd6",
    "payload": {
      "as_of": "2026-11-03T07:31:58.423Z",
      "band": "Moderate public signals",
      "check_version": "rs-safety-checks-2.0",
      "evidence_sha256": "75b134ceb5b7f07aefcd9dc4598264a617185646e03a25cc40aae9b5570203bc",
      "id": "github-com-signal-forge-ai-x402-agent-tools-764eccdcd6",
      "kind": "skill",
      "rating_sha256": "43e45c72ca05798b811a425cc578e4bf7d326fdede16a3a69697c7af8cb00ed2",
      "score": 64,
      "stream": "safety_ratings"
    },
    "payload_hash": "278b0185ce236d2a2310f8da1b3b2ad254572cb496e603305642c6ad340bd9ed",
    "leaf_hash": "3ec910c982b6b6c06dd85c9fbed293c944ef59732174a845f57a20b30fb70d37",
    "block_height": 2874,
    "texts": {},
    "data": {
      "as_of": "2026-11-03T07:31:58.423Z",
      "band": "Moderate public signals",
      "check_version": "rs-safety-checks-2.0",
      "evidence_sha256": "75b134ceb5b7f07aefcd9dc4598264a617185646e03a25cc40aae9b5570203bc",
      "id": "github-com-signal-forge-ai-x402-agent-tools-764eccdcd6",
      "kind": "skill",
      "rating_sha256": "43e45c72ca05798b811a425cc578e4bf7d326fdede16a3a69697c7af8cb00ed2",
      "score": 64,
      "stream": "safety_ratings"
    }
  },
  "status": "sealed",
  "block": {
    "v": 1,
    "height": 2874,
    "prev_hash": "9182bab25b06343bb29ae88adf98037d48fa2e1da2539cf506ab271c1f7ef356",
    "merkle_root": "aecdc35f7b97f7008407bf5102292a7754ce169f94516254fceb0d3c35cad006",
    "first_seq": 6570,
    "last_seq": 6574,
    "entry_count": 5,
    "at": "2026-11-03T09:42:37.565Z",
    "key_id": "key_41eb7b6d1b11968a",
    "block_hash": "805ecbd4ceb056bd41cef676676656b6f764d25f64a8e35c684a25dc835cd417",
    "signature": "yhbfzdge59zr4wF8Y3m6yLUV2DvEc+EIRmos31y4kk3/Tr/6FzKDNvAgE6RnWxqBkVuGKLI/JgUPZ9vy0iR8BA==",
    "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEYWJAvPDwdwiByA4ucuPBAV0jLWwXGgtbZqbyrLNMiM=\n-----END PUBLIC KEY-----\n"
  },
  "proof": {
    "leaf_hash": "3ec910c982b6b6c06dd85c9fbed293c944ef59732174a845f57a20b30fb70d37",
    "index": 2,
    "path": [
      {
        "side": "R",
        "hash": "9fabd97c9ceb1a3a504da3e68e8ee41f8fd419b46d88dde9f76382e5d8feb852"
      },
      {
        "side": "L",
        "hash": "21efe84bf5ef5e9c91e4f4eaf1b64b3c7244a7e0799996c0b841a8649fde53e9"
      },
      {
        "side": "R",
        "hash": "6b5c45ece81db4ec51fd5feea2c1d44d4df3e2c288387f3aa5194ad8e99440ba"
      }
    ],
    "merkle_root": "aecdc35f7b97f7008407bf5102292a7754ce169f94516254fceb0d3c35cad006",
    "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": 974381,
      "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."
  }
}