Bridge supports development and unsigned bundle smoke validation on Windows and macOS. A smoke bundle is not a production release.
- Source release line:
0.2.xunder Apache-2.0 - Node.js: supported 22 or 24 releases; CI uses
.node-version - pnpm: the exact
packageManagerversion inpackage.json - Rust: the exact channel and components in
rust-toolchain.toml - Hosts: current GitHub-hosted Windows and macOS runners plus native maintainer validation for vendor integrations
Before cutting a candidate, regenerate and verify the Rust third-party notice with the pinned generator:
cargo install --locked cargo-about --version 0.9.1 --features cli
corepack pnpm run license:generate:rust
corepack pnpm run license:all-
Update
package.json,src-tauri/Cargo.toml, andsrc-tauri/tauri.conf.jsonto the same version. -
Move completed changelog entries into that version and retain the MIT notice for historical
v0.1.0. -
Run
corepack pnpm install --frozen-lockfileandcorepack pnpm run license:all. -
Run frontend build, Rust format/check/test/Clippy, and native Tauri bundle builds on Windows and macOS.
-
Confirm the bundle-smoke jobs pass their automated MSI, NSIS, staged macOS app, and mounted DMG inspections for
LICENSE,NOTICE,THIRD_PARTY_LICENSES.txt, andTHIRD_PARTY_LICENSES_RUST.txt; manually inspect signed candidates again before publication. -
Exercise Tally, DSC, documents, sync, and persistence using synthetic data; attach redacted evidence to the release PR. Keep repository-synthetic parser qualification receipts separate from the live Tally compatibility matrix: they cannot establish a product release, Education/licensed mode, HTTP/runtime behavior, or a performance budget. Do not broaden a Tally support claim without current exact-profile live evidence; state missing matrix evidence in the release notes. Run the executable Tally claim gate:
cd src-tauri cargo run --locked -p bridge-tally-compatibility -- gate \ ../docs/tally/compatibility/compatibility-matrix.json \ ../docs/tally/compatibility/compatibility-surface.json \ ../docs/tally/compatibility/trusted-evidence-keys.json \ ../docs/tally/compatibility/evidence ..Any positive cell without an exact fresh signed receipt is a release blocker. Unknown cells remain visible limitations; they are not failures unless release notes or product copy claim that scope. Live Education collection, when legitimately available, must follow the read-only runbook. Never upload
.bridge-live/automatically or substitute the parser-only CI receipt for reviewed live evidence. -
Confirm the release commit and tag contain no PII, machine paths, secrets, or unsigned third-party assets.
-
Confirm the
Dependency securityworkflow passes and GitHub reports no open Dependabot or secret-scanning alerts.
- Windows production installers require an organization-controlled code-signing certificate and timestamp service.
- macOS production bundles require an organization-controlled Developer ID, hardened runtime, notarization, and stapling.
- Signing credentials belong in protected release environments with required reviewers; never place them in repository variables, logs, or artifacts.
- Publish SHA-256 checksums and provenance/attestation evidence with every downloadable artifact.
- Do not create or move a
v*tag until signed artifacts from both supported platforms pass the candidate gates. Release tags must be immutable.
The repository intentionally does not auto-publish unsigned tag artifacts. CI bundle jobs produce short-lived smoke evidence only until signing and notarization ownership is configured.
- Mark the affected GitHub release as withdrawn and remove unsafe downloadable artifacts without moving or reusing its tag.
- Publish a security advisory when coordinated disclosure is required.
- Revert or rectify the source change through a pull request with migration compatibility notes.
- Cut a new patch version; never replace an already published artifact under the same version or checksum.
- Preserve release notes explaining impact, upgrade/rollback steps, and the last known-good version without including customer data.