Checksums in a release are split two ways, and three payload assets fall through the gap.
Of the 16 payload assets in 0.15.0:
- 8 carry their own
<name>.sha256 — the .deb, .rpm and AppImage files
- 5 are listed in the combined
SHA256SUMS — the standalone archives
- 3 have neither:
libredb-studio-0.15.0.cdx.json
libredb-studio_0.15.0_amd64.snap
libredb-studio_0.15.0_arm64.snap
Reproduce:
gh api repos/libredb/libredb-studio/releases/latest --jq "[.assets[].name]" > assets.json
curl -sL "$(gh api repos/libredb/libredb-studio/releases/latest \
--jq ".assets[]|select(.name==\"SHA256SUMS\")|.browser_download_url")" > sums.txt
python3 - <<PY
import json
n = json.load(open("assets.json")); sums = open("sums.txt").read()
payload = [a for a in n if not a.endswith(".sha256") and a != "SHA256SUMS"]
print([a for a in payload if (a + ".sha256") not in n and a not in sums])
PY
The snaps are the awkward ones: they are a documented install channel, so someone who downloads the .snap from the release page rather than through the Snap Store has nothing to check it against. The SBOM matters less in practice but it is the file a security reviewer is most likely to want a hash for.
Either extend SHA256SUMS to cover every payload asset, or emit a .sha256 for the three that lack one. Extending the combined file looks simpler and would also make the split easier to explain: right now a reader has to know which of the two mechanisms applies to the artifact they picked.
Checksums in a release are split two ways, and three payload assets fall through the gap.
Of the 16 payload assets in 0.15.0:
<name>.sha256— the.deb,.rpmand AppImage filesSHA256SUMS— the standalone archivesReproduce:
The snaps are the awkward ones: they are a documented install channel, so someone who downloads the
.snapfrom the release page rather than through the Snap Store has nothing to check it against. The SBOM matters less in practice but it is the file a security reviewer is most likely to want a hash for.Either extend
SHA256SUMSto cover every payload asset, or emit a.sha256for the three that lack one. Extending the combined file looks simpler and would also make the split easier to explain: right now a reader has to know which of the two mechanisms applies to the artifact they picked.