{
 "date": "2026-08-26",
 "sealed": true,
 "note": "Everything below is content-addressed. Fetch each file, check its sha256 against this manifest, and nothing a cache or a mirror does can change what you are verifying.",
 "tape": {
  "url": "/data/days/gpu-price-tape-2026-08-26.csv.gz",
  "sha256": "fe50f180dd06bfe9960eafcb70799f24705b72d257d53fde276ceabf8efdddaf",
  "bytes": 93534,
  "rows": 15517,
  "header": "snapshot_ts_utc_epoch,provider,gpu_model,offer_class,offer_count,min_price_per_gpu_hr_usd,median_price_per_gpu_hr_usd"
 },
 "merkle_root": "6165c2a976873176b4e1139607506c2c68b22adcc6148db64067f342d60706cd",
 "prev_chained_root": "bb5e0fd0486fb9c2d04601dece327e91f8c2b83a8493ac1284bd5a357c5ec500",
 "chained_root": "77008c99897bb9d95335ce8b40eb0995f796812ccbc67fd0fba2ce27a6fb746f",
 "rows": 15517,
 "anchored_at": 1787791245,
 "method": {
  "day_boundary": "00:00:00Z to 24:00:00Z, TRUE UTC \u2014 snapshot_ts >= start AND < start+86400",
  "leaf": "sha256 of the row's line from gpu-price-tape.csv.gz, verbatim, with the line terminator (CR and/or LF) stripped and nothing else changed",
  "leaf_order": "leaves sorted ASCENDING as lowercase hex strings, before any pairing",
  "tree": "binary merkle over the sorted leaves: sha256 of the two child hex strings concatenated as text; on a level with an odd count the LAST node is duplicated and paired with itself",
  "chain": "sha256(prev_chained_root + merkle_root), both lowercase hex, ASCII concatenation",
  "genesis": "0000000000000000000000000000000000000000000000000000000000000000"
 },
 "root_file": {
  "url": "/data/roots/2026-08-26.txt",
  "sha256": "d58131e927440aa52d4640ef312c66aaa0ade728352e18103fe0e94e0614a610"
 },
 "proof": {
  "url": "/data/roots/2026-08-26.txt.ots",
  "sha256": "9439c9bc507c07a999f7eacec5519f46704dd756f4b9cf778aae39309ebed151",
  "verify": "ots verify <file>  (OpenTimestamps client)"
 },
 "reproduce": [
  "curl -sO https://compute.pangle.online/data/days/gpu-price-tape-2026-08-26.csv.gz",
  "sha256sum the file and compare with tape.sha256 above",
  "gunzip -c it, drop the header, strip CR/LF from each line",
  "sha256 each line; sort those hex digests ascending",
  "pair and hash upward, duplicating the LAST node on odd levels",
  "the result is merkle_root; sha256(prev_chained_root + merkle_root) is chained_root"
 ]
}