Skip to content

Release archives

mamut-routing-publish release build turns the benchmark tree into downloadable archives that the lib's mamut-routing remote commands consume.

Archives

One zip per (problem type, family): <ProblemType>-<Family>-snapshot-<snapshot-id>.zip, containing the benchmarks/<ProblemType>/<Family>/ tree (instances and BKS). Family-first collections (benchmarks/<Family>/ with shared sidecars/) are not supported by the planner yet: the collection layout needs its own archive shape and manifest scope (see Cut a release). Deterministic: fixed entry timestamps (1980-01-01), mode 0644, deflate level 9 by default, sha256 streamed while writing. Guards: an asset over 1.5 GiB warns, over 2 GiB fails (GitHub's asset limit); repository files over 100 MB are refused; at most 1000 assets per release.

Manifest (snapshot-manifest.json)

ReleaseArchiveManifest in mamut_routing_lib.remote:

Field
schema_version manifest schema
snapshot_id, published_at, source_commit, source_branch, release_tag the snapshot identity (same id as the website's history entry when built from the same commit)
assets[] ReleaseArchiveAsset: scope, filename, download_url, problem_type, benchmark_name, checksum_sha256, size_bytes, archive_root (extra keys are rejected)

--release-tag and --download-base-url fill the download URLs; the manifest and the archives are uploaded as assets of the GitHub release. Consumers: mamut-routing remote list | fetch | verify | manifest (MAMUT_ROUTING_RELEASE_REPO; --tag is an option of remote itself: mamut-routing remote --tag vX.Y.Z list). See Cut a release.