Release verification
Lattice Node release archives are published with four operator-verifiable artifacts:
*.tar.gz: release binaries forlattice,lattice-node,lattice-mining-coordinator, andlattice-miner.*.tar.gz.sha256: SHA-256 checksum for the archive.*.spdx.json: SBOM generated fromPackage.resolved.*.artifacts.json: portable manifest binding the archive name, checksum, archive digest, and SBOM digest. Its paths are file names relative to the manifest, so keep all four assets together after download.
For tagged releases, CI also publishes signed GitHub artifact attestations for the archive provenance and SBOM. Operators can verify a release with:
shasum -a 256 -c lattice-node-<version>-<platform>.tar.gz.sha256gh attestation verify lattice-node-<version>-<platform>.tar.gz --repo 0xLattice/lattice-nodegh attestation verify lattice-node-<version>-<platform>.tar.gz --repo 0xLattice/lattice-node --predicate-type https://spdx.dev/Document/v2.3
# From a lattice-node checkout, with all four release assets in one directory:.github/scripts/check-release-artifact-bindings.sh \ /path/to/lattice-node-<version>-<platform>.artifacts.jsonBefore packaging each platform archive, the release workflow runs the test
suite. During bundle assembly, the smoke test exercises the bundle’s node,
lattice, lattice-mining-coordinator, and lattice-miner together. After
archive assembly, the workflow extracts that archive and reruns the multichain
operator E2E suite against its lattice, lattice-node, coordinator, and
miner. Linux release binaries statically include
the Swift runtime and are also executed in a plain Ubuntu container without a
Swift toolchain. Linux hosts still need the standard system libraries used by
the executables: libatomic, libcurl, libsqlite3, and libxml2. The smoke test
verifies the exact Nexus genesis, mines one canonical block through the external
mining pipeline, then restarts the node and verifies the same persisted tip.
The provenance attestation binds the archive artifact’s name and digest to the GitHub workflow identity for 0xLattice/lattice-node. The SBOM attestation binds that same archive artifact to the SPDX dependency inventory generated during the same workflow run. The checksum catches transfer corruption; the manifest records the archive name, checksum subject name, archive digest, and SBOM digest for the sibling release assets.
The publishing job treats tagged releases as immutable: it fails rather than replacing assets on an existing release. Repository administrators should also protect the release tag patterns from force-updates and deletion. The workflow verifies the tag target immediately before publishing, but only repository policy can prevent a privileged actor from moving it afterward.
Source: lattice-node/docs/release-verification.md at 9abd15b1bb05