{"merkle_status":"retired (this census_daily path only)","live_anchoring":"Bitcoin / OpenTimestamps anchoring IS live — see GET /gauge/anchor?hash=<record_hash> for the current batch-Merkle-root-to-Bitcoin proof and its verify recipe. Only the old census_daily merkle path below is retired.","retired_note":"The OLD census_daily Merkle tree + OpenTimestamps path was ruled out on 2026-07-23 (census_daily was never written). This /merkle/proof endpoint always returns 410. Archival documentation only - do NOT build a verifier from this section; the live anchoring verifier recipe is at /gauge/anchor.","record_hash":"sha256(canonical JSON of core). canonical = keys sorted recursively, stable JSON.stringify encoding. Prefix \"sha256:\". THIS PART IS STILL IN FORCE: for the GAUGE signal contract see /gauge/verify (current hash_core_version=3); for AEML-DS offchain capture see /verify.","merkle_archived":{"leaves":"every record_hash for that day, sorted ascending as hex strings","leaf_bytes":"the 32-byte digest of record_hash with the \"sha256:\" prefix stripped","internal":"sha256(left_bytes || right_bytes)","odd":"an odd node duplicates the last one (Bitcoin style)","root":"the apex = daily_hash (the intended OTS stamping target, never actually stamped)"},"verify_flow":"Current self-verification: take the delivered payload -> assemble the canonical core per hash_core_version -> recompute sha256 -> compare against the delivered record_hash; or cross-check with POST /verify or the free GET /gauge/verify?hash=<record_hash>.","offline_verifier":"verify.mjs (single file, zero dependencies). verify-merkle.mjs only ever applied to the retired Merkle layer and is no longer applicable."}