{"kind":"crawlcheck-log","v":1,"log_id":"crawlcheck-resolve-log-v1","head":{"kind":"crawlcheck-log-sth","v":1,"log_id":"crawlcheck-resolve-log-v1","batch":595,"first_index":126357,"batch_size":8,"tree_size":126365,"batch_root":"e0b32d24c4450bcbe09e0b9f0804e7aeba7cf0b0ee03505bd0970d72e7034f32","prev_sth_sha256":"14576eef0fdd43b234784c0546c6c789407cabbff137e0f45ce30b88e777ceee","created_at":"2026-10-16T10:32:29.051Z","rules":{"leaf":"SHA-256(0x00 || canonical JSON of the answer's decision content)","tree":"RFC 9162 Merkle tree hash over this batch's leaf hashes, sorted","chain":"prev_sth_sha256 is the sha256 of the previous batch's signed tree head; batch numbers are consecutive and tree_size grows by batch_size"},"code":{"version_id":"03a2fe48-da7f-4760-83a0-11e9b8db31a6","script_sha16":"75004d4e7c7f1c4a","state":"attested","deployed":{"at":"2026-10-16T05:34:14.964Z","commit":"4021022fa581","run":"38856409951"},"build_log_entry":419,"score_version":32,"scoring_policy_sha256":"d3c9c95d409dae4e90b8e868ff113e631e445e33c14a0cc008dda144293821b3","decision_rules_sha256":"18dd5636e0896692ab518050cb401744edea2e6f1086dff94fead314959bdc3e","check":"https://crawlcheck.io/api/v1/builds/03a2fe48-da7f-4760-83a0-11e9b8db31a6"},"sha256":"7f389b3b76b235cb768bcee50d468583a6c0ae754d83fd33cd1755d98966d5b9","signature":{"v":1,"alg":"Ed25519","kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","over":"sha256","message":"crawlcheck-data-v1\n7f389b3b76b235cb768bcee50d468583a6c0ae754d83fd33cd1755d98966d5b9","sig":"UQGeGYcITbClu6Gfv-iBVDTIS0DWJgpdB8lhJWKt3GvEhJZowNMDVsPGc1C0WcNhbW9kS7D6zy-aZPjWSGSxCg","signed_at":"2026-10-16T10:32:29.174Z","key":{"kid":"1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps","jwk":{"kty":"OKP","crv":"Ed25519","x":"5TmKCOx0TTHepq7HwyXBHvGQpVCSBd2lV8cLzYVqFxQ"},"published_in":"https://crawlcheck.io/.well-known/http-message-signatures-directory"},"canonical":"sha256 over canonical JSON of every field except sha256 and signature"}},"batches":596,"tree_size":126365,"last_witnessed":{"batch":593,"sth_sha256":"47cf3fc872e70248028828adade67f3e8c8e48824dfaa0de83734fdb7ac660f6","at":"2026-10-16T09:56:38.578Z","witness":"github-actions:emmanuelorta/crawlcheck/.github/workflows/log-witness.yml","run":{"run_id":"38883878608","sha":"3ef275ed81b754bbefab24ffb037252e70776a9b","ref":"refs/heads/main"}},"reading":"Every signed Resolve answer names its leaf. Batches are merged every batch window (:02, :32, :47 past the hour); each signed tree head chains to the one before. An outside witness re-checks each new head and co-signs it with a GitHub OIDC token whose audience is the head's digest.","routes":{"sth":"https://crawlcheck.io/api/v1/log/sth/<batch>","batch":"https://crawlcheck.io/api/v1/log/batch/<batch>","proof":"https://crawlcheck.io/api/v1/log/proof?leaf=<hex>","witness_latest":"https://crawlcheck.io/api/v1/log/witness/latest","gossip":"https://crawlcheck.io/api/v1/log/gossip"},"split_view":"Clients keep the heads they are shown and compare them with each other and with the witnessed chain (SDK logCheck); a head CrawlCheck signed that contradicts this log is a fork, reported at https://crawlcheck.io/api/v1/log/gossip"}