Skip to content

Latest commit

 

History

History
59 lines (46 loc) · 2.78 KB

File metadata and controls

59 lines (46 loc) · 2.78 KB

Firmware 7.15.0 RC18 Release Shape

Date: 2026-07-25

RC18 collapses the former three-product build into two release products:

Product Contents
Regular (full) Every supported chain, including Zcash shielded/Orchard
Bitcoin-only Bitcoin only; all non-Bitcoin coins and Zcash privacy code removed

There is no separate zcash-privacy artifact. Zcash privacy is part of the regular firmware and cannot be disabled as a release choice. The internal ZCASH_PRIVACY compile value remains only so bitcoin-only can compile the privacy sources out.

The variable-time Pallas secret-scalar finding remains an explicit RC18 release blocker. It requires a reviewed constant-time implementation; it does not authorize removing Orchard from the regular product.

Release and CI invariants

  • Device, emulator, unit-test, SRAM, and tagged-release matrices contain only full and bitcoin-only.
  • An unflagged CMake build is the regular product and sets BITCOIN_ONLY=0, ZCASH_PRIVACY=1, and AES_SMALL_TABLES.
  • -DKK_BITCOIN_ONLY=ON sets BITCOIN_ONLY=1 and ZCASH_PRIVACY=0.
  • The published emulator is the regular/full image.
  • Release notes and reproducible-build instructions name only the regular and bitcoin-only artifacts.

Automated evidence

Both ARM builds use the toolchain image pinned by manifest digest in CI and the release workflow. Each release artifact set includes its exact builder digest and source/workflow identity in PROVENANCE-<variant>.txt.

Product ARM build Firmware tests Board tests Crypto tests SRAM reserve Largest frame Reserve after frame
Regular (full) Pass 366/366 2/2 4/4 19,064 B 7,664 B 11,400 B
Bitcoin-only Pass 30/30 2/2 4/4 32,908 B 7,664 B 25,244 B

The regular release compiles the Orchard privacy engine; bitcoin-only does not. The regular firmware suite includes 59 Zcash tests. Exact build and SRAM figures must be refreshed after the constant-time Pallas implementation lands. Both release gates remain mandatory.

The canonical full-image integration rehearsal used device-protocol e31cddfe7f5c72c983d06a889ac7db649b9811df and python-keepkey 9ce1aeb480333176b3ed098066f51b22fd40a9d7. Its JUnit result was 592 tests: 560 passed, 32 intentionally skipped, 0 failed, and 0 errors. Both the host-side and raw-device persistence rejection tests passed, and the report-driven run captured 898 OLED screenshots. This evidence predates the restoration of Orchard in the regular image and must not be used to approve the final privacy-capable RC18 candidate.

Workflow YAML parsing, SRAM-budget JSON parsing, Python syntax compilation, git diff --check, and the release-shape search for stale zcash-privacy matrix entries also pass.