Assume you want to verify a new upgrade proposal with code commit <COMMIT> and binary hash <HASH>.
- Install Docker (only once).
git clone https://seed.radicle.garden/z4TNAuSLgfxXUr8sYpYowk6mcx33B.git taggr(only once)cd taggrgit fetch --all && git checkout <COMMIT>make release- Verify that the printed hash matches the
<HASH>value from the release page.
make release runs the full validation pipeline (lints, Rust tests, Playwright e2e) inside the container and only produces a hash if everything passes. A failing release therefore cannot be hashed — the printed hash is a signal that the wasm is both reproducible and tested. Podman is used automatically if installed; otherwise Docker. Override with CONTAINER=docker make release.
By default make release is quiet — only stage markers (==> [N/7] ...), the Playwright run, and the final hash print. To stream every underlying tool's stdout/stderr (cargo, dfx, npm, build.sh) for debugging, set VERBOSE=1:
VERBOSE=1 make release
Same flag works for make tests.
Outputs of a successful run:
release-artifacts/taggr.wasm.gz— the production wasm.test-results/andplaywright-report/— Playwright traces and the HTML report (openplaywright-report/index.htmlto inspect any failures).
Note: the first run is slow (Chromium install layer is several hundred MB) and dfx nns install downloads the NNS canisters on every run.
To propose a release, follow the steps above first.
If they were successful, you'll find a binary taggr.wasm.gz in the release-artifacts directory.
Use the printed code commit and the binary to submit a new release proposal.
For day-to-day iteration, skip the prod build and just run the test suite:
make tests
Same image as make release and the same checks (lints, Rust tests, Playwright e2e), but stops before the deterministic prod build. Use this while iterating; use make release when you actually want a hash.
Make sure you have installed cargo.
To create a backup of the Taggr state, run:
make backup DIR=/path/to/backup
Refer to the local development docs for instructions on how to work with Taggr locally.