WATCHTOWER 2.0 — BASELINE LEARNING
Independent verification

Verify the chain.

Paste a scan ID, block hash, or Merkle root below. The tool checks it against the live chain of custody and shows you exactly what was recorded, when, and whether the chain is intact. No account needed. No special access. Anyone can do this.

Try copying a scan_id from the table below, or a block hash from the chain.

Reference — last 24 scan artifacts

Recent scans to try

Copy any scan_id from this table and paste it into the verification box above.

Whenscan_idDetectionsFlaggedMerkle root
No scans ingested yet.
Chain of custody

Merkle chain blocks

Copy any block hash or Merkle root and paste it into the verification box.

BlockSealedTableRowsBlock hashPrevious
#4145Aug 25, 05:33 AM PDTviolation_classifications_v332c796397f85…5a489b83888040954c…ba468181
#4144Aug 25, 02:51 AM PDTviolation_classifications_v30ee570f958b…4a898fac747d027901…624699f3
#4143Aug 25, 02:51 AM PDTviolation_classifications_v360560996cd84…523f4203ed7b25ec8f…d4322f94
#4142Aug 25, 02:39 AM PDTviolation_classifications_v3027f65ba70f…c7614c32b354b42b1c…673b69b4
#4141Aug 25, 02:39 AM PDTviolation_classifications_v371d709ddc06b…801b4733f2bf1738eb…78ea178d
#4140Aug 25, 02:27 AM PDTviolation_classifications_v30de47ba541f…e11b0a82b58632f194…5b3249dd
#4139Aug 25, 02:26 AM PDTviolation_classifications_v341e6caf25298…968206d6ca8881e98b…b4539b6d
#4138Aug 25, 02:14 AM PDTviolation_classifications_v306c55adc5f9…86983753d003c073df…afdcfa7e
#4137Aug 25, 02:14 AM PDTviolation_classifications_v33905b56a9b09…dfce04cd1248a6070d…a741700b
#4136Aug 25, 02:02 AM PDTviolation_classifications_v30065cc06e39…b2fa535e141fc3c25d…72705fde
#4135Aug 24, 06:31 PM PDTanomaly_events12,93824fc174512…b6ebca8de6688533ef…8324b9f7
#4134Aug 24, 06:29 PM PDTviolation_classifications_v33,963e7aa85db74…707c7545651e7138ad…c1da951b
#4133Aug 24, 12:50 PM PDTanomaly_events11,917e1fd8e68e3…95312afe6b018bbcf4…1d981be0
#4132Aug 24, 09:38 AM PDTviolation_classifications_v32934869eb40be…bdababfb989c7f23d2…80098a88
#4131Aug 24, 09:36 AM PDTviolation_classifications_v31,434530dbb75a2…38cb90154cd3381166…28e4cdf6
#4130Aug 24, 09:24 AM PDTviolation_classifications_v303f8e4d9947…3b23ea9c0de699f7de…5fe77dad
#4129Aug 24, 04:52 AM PDTanomaly_events12,556ed1e389af2…6a03847d06c8fbdd3f…5258ff11
#4128Aug 24, 04:49 AM PDTviolation_classifications_v3024e5cc831e…9d3cece21f83ba3f80…6ce9f5d4
#4127Aug 24, 04:49 AM PDTviolation_classifications_v306cc1e68aa2…4e4146b7b8be728f03…65aaa172
#4126Aug 24, 04:37 AM PDTviolation_classifications_v3115dea59aeca…9e89916d9216940098…dafd75ff
#4125Aug 23, 10:11 PM PDTanomaly_events12,88962716cbe95…210e0086a026a3b9c0…f9361e24
#4124Aug 23, 10:09 PM PDTviolation_classifications_v30fd7024356c…8dfdc7e56f5a68a614…6a6bfb5b
#4123Aug 23, 10:08 PM PDTviolation_classifications_v30ff1fe2afba…618b240f4206c88c8d…7d5c53a6
#4122Aug 23, 09:56 PM PDTviolation_classifications_v31,3415e123fa3a8…818f4e222b30411b87…74704608
#4121Aug 23, 03:34 PM PDTanomaly_events9,771740bbb0f30…2e7e9b77d5e12d2c14…f8ad5c3f
How to verify

Reproduce the chain yourself

  1. Fetch the JSON list of scans: GET /api/public/scans/latest.
  2. Find the scan_id you want to verify in the response.
  3. SHA-256 the canonical payload of that scan (the raw JSON the ML box posted to /api/public/scans/ingest).
  4. Compare the resulting hash against the merkle_root field shown above. Any mismatch means the record was altered or dropped.
  5. For the full chain: fold hashes into a Merkle tree in scan_id order and compare the root against the value published on the attestation page.

The ingest endpoint requires an HMAC signature. Only the ML system holds the shared secret, so no third party can inject synthetic scans, but anyone can read and reproduce every scan that has been ingested.