mirror of
https://github.com/hanzoai/datastore.git
synced 2026-10-30 14:48:37 +00:00
CI compresses uploaded text artifacts larger than a threshold with zstd (ci/praktika/s3.py, COMPRESS_THRESHOLD_MB), so the same object (e.g. a perf shard's all-query-metrics.tsv) can be served either plain or as a `.zst` sibling. The report tools decoded the bytes as UTF-8 and failed on the zstd magic byte, silently dropping the larger shards. Make every artifact reader handle plain, zstd, and gzip transparently: detect by magic bytes and, for downloads, fall back to the `.zst` sibling when the plain object is 403/404. - fetch_perf_report.py: maybe_decompress + `.zst` fallback in the fetch and download paths. - fetch_ci_report.js: decompress the response body by magic; retry `.zst` on 403/404 (zlib.zstdDecompressSync, with a zstd-CLI fallback). - perf_api.py: read local `.zst`/`.gz` TSVs transparently. - Regression tests: plain vs gzip vs zstd parse identically. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>