Verify the 2.0 release¶
This guide targets the v2.0.1 release. Use the archive steps only after its publication is complete and the listed assets are present. The 2.0.0 crates and containers remain published, but a Windows compile failure prevented its combined binary upload and Homebrew update. The 2.0.1 patch repairs that build and the repository installer.
Resolve the public release commit from the trusted repository's v2.0.1 tag,
as shown below. Do not take the expected commit from an unverified downloaded
source record. Gitea retains the complete source history; GitHub contains the
filtered OSS history, so their commit IDs differ. Release signatures and crate
provenance refer to the public commit.
Choose an archive¶
| Platform | Target | Archive suffix |
|---|---|---|
| Linux x86_64 | x86_64-unknown-linux-gnu |
.tar.gz |
| Linux ARM64 | aarch64-unknown-linux-gnu |
.tar.gz |
| macOS ARM64 | aarch64-apple-darwin |
.tar.gz |
| Windows x86_64 | x86_64-pc-windows-msvc |
.zip |
For example, the Linux x86_64 archive is
symbi-v2.0.1-x86_64-unknown-linux-gnu.tar.gz. Intel macOS has no prebuilt archive.
Use source installation there. Platform binaries do not imply Linux-only Landlock
support on macOS or Windows.
Protected run journals and their dependent execution routes currently require Unix. Windows binaries cover portable CLI functionality; protected scheduling, durable chat admission and governed improvements refuse unsupported operation. A successful Windows compilation does not establish equivalent containment.
Verify before extraction¶
The following commands use Bash, GitHub CLI and Cosign 3.1+. Run them in an empty
directory. Set ARCHIVE to your platform's filename. Download its .sig and .pem
alongside the signed checksum manifest and release-source.json:
set -euo pipefail
RELEASE_SHA=$(gh api repos/ThirdKeyAI/Symbiont/commits/v2.0.1 --jq .sha)
[[ "$RELEASE_SHA" =~ ^[0-9a-f]{40}$ ]] || exit 1
ARCHIVE=symbi-v2.0.1-x86_64-unknown-linux-gnu.tar.gz
gh release download v2.0.1 --repo ThirdKeyAI/Symbiont \
--pattern "$ARCHIVE" --pattern "$ARCHIVE.sig" --pattern "$ARCHIVE.pem" \
--pattern 'checksums.txt*' --pattern release-source.json
This release publishes detached signatures and certificates. Convert the checksum signature to a bundle, retaining its transparency-log evidence, then verify the expected workflow identity and exact source commit:
cosign bundle create --artifact checksums.txt \
--signature checksums.txt.sig --certificate checksums.txt.pem \
--out checksums.sigstore.json
cosign verify-blob --bundle checksums.sigstore.json \
--certificate-identity 'https://github.com/ThirdKeyAI/Symbiont/.github/workflows/release-binaries.yml@refs/tags/v2.0.1' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate-github-workflow-sha "$RELEASE_SHA" \
checksums.txt
Do not ignore transparency-log checks or broaden the expected identity to make a failed verification pass. Then verify the selected archive and source record:
awk -v archive="$ARCHIVE" '$2 == archive || $2 == "release-source.json"' \
checksums.txt > selected-checksums.txt
test "$(wc -l < selected-checksums.txt)" -eq 2
# Linux:
sha256sum --check selected-checksums.txt
# macOS alternative:
# shasum -a 256 --check selected-checksums.txt
cat release-source.json
The source record must contain tag v2.0.1 and commit
equal to $RELEASE_SHA. Extract and run the binary only after
verification succeeds. For a separate archive-signature check, repeat the bundle
creation and verification commands with "$ARCHIVE", "$ARCHIVE.sig" and
"$ARCHIVE.pem". Windows users can run the verification commands in Git Bash or
use equivalent checksum tooling, then extract the ZIP.
The repository installer
automatically verifies the archive's checksum from the HTTPS release manifest. It
does not perform the independent Sigstore identity check above. It installs the
latest version into ~/.symbi/bin; use a manual versioned download to pin 2.0.1.
Containers and crates¶
Versioned images are ghcr.io/thirdkeyai/symbi:2.0.1 and
ghcr.io/thirdkeyai/symbi-a2ui:2.0.1. Verify each image before deployment:
cosign verify ghcr.io/thirdkeyai/symbi:2.0.1 \
--certificate-identity 'https://github.com/ThirdKeyAI/Symbiont/.github/workflows/docker-build.yml@refs/tags/v2.0.1' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate-github-workflow-sha "$RELEASE_SHA"
For crates.io, check the exact package version and its non-yanked status. The eleven
new 2.0.1 crates must have registry checksums matching their downloaded archives and
.cargo_vcs_info.json pointing to the public release commit. The unchanged helper
versions are symbi-approval-relay 0.1.1, symbi-channel-adapter 0.1.6 and
symbi-invis-strip 0.3.0; they retain their earlier source commits.
See release validation for the tests and their limits, and migration before upgrading an existing deployment.