# Saropa Transparency Reports — Hash Ledger # # Append-only. One line per published report artifact. # Format: # # ONLY the canonical artifacts (.md and .json) are hashed. The HTML # rendering is chrome-wrapped and changes whenever the site chrome # changes; hashing it would generate noise and is explicitly NOT done. # To verify a report, download the .md or .json and compare against # the row below. # # Verification: # curl -sO https://saropa.com/transparency/2026-q1.md # python scripts/modules/transparency_sign.py verify 2026-q1 # # or manually: for .json, reset the `"sha256"` field to null and # # sha256sum; for .md, sha256sum the file as published. Compare # # either digest against the matching row in this ledger. # # Rule: published reports are NEVER edited in place. If a correction is # needed, it appears in the next quarter's "Changes since last report" # section plus a new row in this ledger documenting the correction # timestamp. The git log of this file + the git log of each content # file together form the audit trail. # # Reports published as scaffolding (pending analytics numbers and # final legal review) carry the marker in the row # below. That marker is replaced with the computed SHA-256 once the # content is locked. e054d70cfb7583f990e57b3b7682a677f958ad6752267b98be36423fb3b767ed 2024-q1.json 2026-04-20T18:36:30Z 870d833a5a664913ee691bb0b450db627e886045fc412f4937bc25290c8104fa 2024-q1.md 2026-04-20T18:36:30Z ddc3ca8176b34bb7e032f8ec8f68b5781f2ffb77e73c31186252d19456485083 2024-q2.json 2026-04-20T18:36:30Z cddb0ce855467ab8ba69038adc6a0f02507cd7519e9b541a0d4f3416df6b499d 2024-q2.md 2026-04-20T18:36:30Z 226dd6e289b6f3e2b0fc9f6b310a51a57188eed7f0d19984d3e220a6db4deed4 2024-q3.json 2026-04-20T18:36:30Z eb7ab22e3c15dbf80d651ad4beacae6a9ed1b5389dbbd71e92e2e1b59617be28 2024-q3.md 2026-04-20T18:36:30Z a0d34abc28fe36c5405fd2fd82c7a945e865d629a0a92b3922b6456ff4dd6d95 2024-q4.json 2026-04-20T18:36:30Z f11d2ff98dcb4571fc327bc569a8e1df6b82d094dd6f0c7e939b56aff0a28851 2024-q4.md 2026-04-20T18:36:30Z 401669ab62ebd188c26587713b17f1aa92ebb9ebcceb1d372da39c2c871dd271 2025-q1.json 2026-04-20T18:36:31Z 8fe61e80e97c88ba4aa45b588567ef15fbe771a41d050edb2b7cdfa1375f20c2 2025-q1.md 2026-04-20T18:36:31Z 5e8e64d7bfc2938406b4b697cae0243da72c7dcaf0e5a35653daeef8ab8c6881 2025-q2.json 2026-04-20T18:36:31Z 9b4ddc8065ce80e62e2e59d4eeb447140d5f875a77fd847f98394cd781c83780 2025-q2.md 2026-04-20T18:36:31Z 678412fe349571fc56b39fb96bf0c767375bc9a321d19d7936d7c8acb36d832a 2025-q3.json 2026-04-20T18:36:31Z 83c9972032063c240a10dd0f7e0d44f8c9947b9dd06debe56658c858b842da7c 2025-q3.md 2026-04-20T18:36:31Z c88df5f7c0f7276aae03a348c84137b499acd1961c6818474540dd664f900367 2025-q4.json 2026-04-20T18:36:31Z df79161120acc0fe58c8de6c590c86db5196409320fdb0a74c2e6a9d9a61236d 2025-q4.md 2026-04-20T18:36:31Z b95dd28da4613b51638d18cf946c147c56405c5a62bf3c5a68659681603a34bf 2026-q1.json 2026-04-20T18:36:31Z d96dc6dae1df20288c0de6e6c22220466c6abad1886a8528ef5e185cedec3b51 2026-q1.md 2026-04-20T18:36:31Z