{
  "entry": {
    "seq": 16730,
    "at": "2026-11-06T15:41:25.239Z",
    "type": "safety.rating",
    "subject": "github:calesthio/openmontage",
    "payload": {
      "as_of": "2026-11-06T15:27:16.829Z",
      "band": "Moderate public signals",
      "check_version": "rs-safety-checks-1.0",
      "evidence_sha256": "e7b943f19f8f2e62a8609fde59216dfa8c79910a8be7170946fced510e968980",
      "rating_sha256": "b7a6c1fc7dc75e95cecb60c23dae45ab627586bbad027ffa43127278b7b98e7e",
      "repo": "calesthio/OpenMontage",
      "score": 61,
      "stream": "safety_ratings"
    },
    "payload_hash": "39ce9dd5d54775ee7abf366b8a39fca86e502510af718c62d0adfa63f3764fb3",
    "leaf_hash": "f8983eef2ead1328d4015803fb0ed941235af3f655674acb12139cf9d43b7d51",
    "block_height": 3986,
    "texts": {},
    "data": {
      "as_of": "2026-11-06T15:27:16.829Z",
      "band": "Moderate public signals",
      "check_version": "rs-safety-checks-1.0",
      "evidence_sha256": "e7b943f19f8f2e62a8609fde59216dfa8c79910a8be7170946fced510e968980",
      "rating_sha256": "b7a6c1fc7dc75e95cecb60c23dae45ab627586bbad027ffa43127278b7b98e7e",
      "repo": "calesthio/OpenMontage",
      "score": 61,
      "stream": "safety_ratings"
    }
  },
  "status": "sealed",
  "block": {
    "v": 1,
    "height": 3986,
    "prev_hash": "7656d52b78f85a6f6d6ade6e9aa439810989da97e559f39723946dd4b909f9a3",
    "merkle_root": "bc245d9ce40c7e298ee13537019f0bbef5eeb5baabfed74075088198c5af8264",
    "first_seq": 16721,
    "last_seq": 16740,
    "entry_count": 20,
    "at": "2026-11-06T15:41:26.806Z",
    "key_id": "key_41eb7b6d1b11968a",
    "block_hash": "b855b14250ed97b167b87b319984c1a5fc1fa07e6c8b93b22dcb0412d648f8e4",
    "signature": "Gk6h9beN+E5i/ZXZGctwJS9gYWFdGZjY20IYS3Usw2QOarb+LF9VFVK+v63iiwFWuBj2fGSx/SmiMzqkWz6kDg==",
    "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEYWJAvPDwdwiByA4ucuPBAV0jLWwXGgtbZqbyrLNMiM=\n-----END PUBLIC KEY-----\n"
  },
  "proof": {
    "leaf_hash": "f8983eef2ead1328d4015803fb0ed941235af3f655674acb12139cf9d43b7d51",
    "index": 9,
    "path": [
      {
        "side": "L",
        "hash": "505b413ceaaaa9a4e9e3f447c97a1da56917cd9d67691d9e54dc9dded05915ce"
      },
      {
        "side": "R",
        "hash": "2b207dc1cab9509156abc3603a711df854d90e10e133c6f055c74cba7b258f4e"
      },
      {
        "side": "R",
        "hash": "6f4c67d7059d5b40f2f8f97c8cff079d1aacf13bbe720a8c700c1144258b208b"
      },
      {
        "side": "L",
        "hash": "10e3b87cca0257c117080146cef4c6e84af34480dd80e7d0ec60507152d0db4d"
      },
      {
        "side": "R",
        "hash": "5c4d1cdf17cf722f127aefee4c666f921003f2aa0578485682c9f3349a19087e"
      }
    ],
    "merkle_root": "bc245d9ce40c7e298ee13537019f0bbef5eeb5baabfed74075088198c5af8264",
    "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": 974832,
      "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."
  }
}