Release checklist
No step below implies that a release or registry publication has occurred.
Source and version
- Clean checkout on the intended protected revision; CI green.
- Git author and repository destination verified.
- One explicit version across all workspace crates and the extension.
- Changelog contains complete notes for that version.
- Documentation no longer describes the selected version as unpublished.
- No signing files, environment files, generated platform artifacts, or developer-specific paths tracked.
Licensing
- Run
python3 scripts/check-licenses.py --generate; inspect the inventory diff instead of accepting it mechanically. - Run
python3 scripts/check-licenses.pywith no stale inventory. - Confirm RustFerry root licenses and the release license bundle are present.
- Record the Slint license path for every generated mobile binary considered for attachment. Do not attach such binaries when the choice is unresolved.
- Recheck third-party notices if the VSIX gains any production npm import.
Rust and packages
-
cargo fmt --all -- --check -
cargo clippy --locked --workspace --all-targets --all-features -- -D warnings -
cargo test --locked --workspace --all-features -
RUSTDOCFLAGS="-D warnings" cargo doc --locked --workspace --all-features --no-deps -
python3 scripts/check-release-contract.pyreports every internal edge exact. -
cargo package --workspace --locked --list -
cargo package --workspace --locked -
cargo publish --workspace --dry-run --locked --no-verify -
python3 scripts/check-release-archives.py --check-sources --target-dir target/package-source-check target/package/*.crate - Inspect all six
.cratearchives and their normalized manifests; confirm both canonical license files are regular root members.
VS Code extension
-
npm cifromeditors/vscode. -
npm run checkpasses, including VSIX structural smoke. -
npm run test:hostpasses with the intended realcargo-ferrybinary. - Ordinary Rust stays inactive; a
ferry.tomlworkspace auto-activates, registers commands, discovers the project, and opens its manifest. -
npm run perfresults reviewed and recorded with host and revision context. - Views and trust gating checked manually when their behavior changed.
- VSIX size and SHA-256 recorded from the final bytes.
Platform evidence
- Android and iOS Simulator artifact workflows green for the release commit.
- Exact artifact validation recorded; no simulator/device/signing claim beyond observed evidence.
- Physical-device binaries excluded unless signing, installation, launch, and required license notices were actually validated.
Draft release
- Run the
Draft releaseworkflow with the exact workspace version andcreate_draft_releasedisabled. - Download the release assembly. Verify package count, schema, versioned VSIX,
license bundle, notes, and every entry in
SHA256SUMS. - Configure required reviewers on the GitHub
releaseenvironment. - Rerun the same revision with
create_draft_releaseenabled. - Confirm the workflow accepted successful exact-SHA
pushjobs for CI, VS Code, both platform artifacts, and mdBook/Pages. - Inspect the draft body and attachments before any publish operation.
Registry and Marketplace publication
- Publish crates manually in the order documented in Rust package readiness, waiting for registry visibility between dependency groups.
- Verify each crate version, tarball, checksum, dependency metadata, docs.rs build, and registry timestamp.
- Install
cargo-ferryfrom crates.io into an isolated Cargo root; generate and check a project without a runtime-path override. - Publish the already-inspected VSIX to Marketplace only through a protected manual environment with the required secret.
- Verify Marketplace version and install the public extension into an isolated VS Code profile.
- Publish the GitHub draft only after registry and Marketplace verification.
- Create the next patch
Unreleasedchangelog section and commit release closeout.