Skip to content

0.5.0-rc2: rebase ironwood onto 0.4.3 (CI only)#5

Closed
emersonian wants to merge 13 commits into
release/0.4.xfrom
ci-0.5.x-rebase
Closed

0.5.0-rc2: rebase ironwood onto 0.4.3 (CI only)#5
emersonian wants to merge 13 commits into
release/0.4.xfrom
ci-0.5.x-rebase

Conversation

@emersonian

Copy link
Copy Markdown
Contributor

Draft for CI only — do not merge. This branch will be force-pushed to release/0.5.x, main, and ironwood; it is not meant to merge into release/0.4.x. It is based against release/0.4.x here purely so the diff shows the clean ironwood delta on top of v0.4.3.

What this is

release/0.5.x (the ironwood / NU6.3 line) rebased from its old v0.4.2 base onto v0.4.3, so the RC now carries every 0.4.x maintenance fix through 0.4.3:

  • Sapling-output sends routed to the fused build path
  • /readyz defaults to synced + per-wallet scan_lag
  • datadir lock documented host-local + holder stamp

librustzcash stays pinned to the upstream zcash/librustzcash ironwood rev (git pin until the ironwood wallet crates publish); the interim zecrocks fork is retired. Version bumped to 0.5.0-rc2.

The one real merge point was the cached_pczt_path doc comment (ironwood's "forced to fused once NU6.3 active" note now coexists with 3.14's Sapling-output-diversion note). Two public-only zebra-6.0.0 commits were re-stamped to remove future-dated timestamps.

Local verification

  • cargo build — clean (zecd v0.5.0-rc2, upstream librustzcash git-pin)
  • cargo test --lib267 passed, 0 failed, incl. the 3.14/3.15/3.16 fix tests

Confirming CI + Regtest E2E here before tagging v0.5.0-rc2.

emersonian and others added 13 commits July 7, 2026 11:22
Add opt-in Ironwood (NU6.3 / V6) support behind a default-off `ironwood` cargo feature: the PostNu6_3 proving key and proof step, the NU6.3 regtest activation height, ironwood receive discovery and balance rollup, and `pool == "ironwood"` labelling. The librustzcash set is pinned to a currently-working zecrocks fork of librustzcash, which will be repointed to mainline librustzcash before release. With the feature off the default build is unchanged. Also adds transparent recovery-window policy controls and an ironwood regtest.

Co-authored-by: AI <noreply+norm@overpay.com>
…checkpoint-pruning fix

Repoint shardtree and incrementalmerkletree to a currently-working zecrocks fork for the explicit-checkpoint-retention APIs plus a fix for a panic when pruning a checkpoint whose flags need clearing; this will be repointed upstream before release. Also run the ironwood NU6.3 regtest tier for PRs targeting the ironwood branch.

Co-authored-by: AI <noreply+norm@overpay.com>
Rebase the pin onto the latest ironwood-scan-model on the currently-working zecrocks fork of librustzcash, which will be repointed to mainline librustzcash before release, and bump the patch rev.

- Route Ironwood sends through the fused build path (the ironwood_forces_fused gate) since upstream still rejects Ironwood PCZTs; input selection now takes SpendPolicy.
- Add an ironwood receive-memo end-to-end regtest proving Ironwood-domain memo decryption.

Co-authored-by: AI <noreply+norm@overpay.com>
The zecrocks incrementalmerkletree fork existed only to carry the clear_flags checkpoint-pruning panic fix, which has now landed upstream. Repoint shardtree and incrementalmerkletree from the fork to zcash/incrementalmerkletree main (same crate versions, API-compatible) and drop the fork. The librustzcash pin is unchanged.

Co-authored-by: AI <noreply+norm@overpay.com>
Drop the dev-only `ironwood` cargo feature and its 16 cfg gates; ironwood is now always compiled and activated purely by consensus height, so it is on for testnet (NU6.3 height 4_134_000), off for mainnet, and opt-in on regtest via the `ZECD_REGTEST_NU63_HEIGHT` env var, with no build flag. The proving-key cache is unconditionally the V5 Orchard circuit, since every post-NU6.3 send routes through the fused build path that builds its own key. This is an RC posture; the real release will pin published crates.io librustzcash instead of the git rev.

Co-authored-by: AI <noreply+norm@overpay.com>
Also make the numeric version encoding take each component's leading digit run, so the -rc0 pre-release suffix parses instead of panicking.
The bundled stack pinned zebra 5.0.0, which carries no NU6.3, so the testnet deployment could never activate ironwood. Point the testnet base at the ironwood release candidate and pin mainnet back to the stable release, since ironwood is testnet-only.

Co-authored-by: AI <noreply+norm@overpay.com>
Add an ironwood regtest assertion that `getnewaddress` yields a non-empty, valid unified address once NU6.3 is active, guarding the address path on a post-activation chain.

Co-authored-by: AI <noreply+norm@overpay.com>
Pin the librustzcash set by git rev to the official zcash/librustzcash ironwood line (dw/ironwood-scan-model) instead of the zecrocks fork, and drop the self-send received-note memo backfill cherry-pick that only the fork carried (it is being submitted upstream separately). The ironwood wallet crates are not published to crates.io yet, so the set stays git-pinned to upstream until they land.

Co-authored-by: AI <noreply+norm@overpay.com>
Zebra 6.0.0 is released and serves both networks (Orchard on mainnet, ironwood on testnet), so bump the testnet compose base, the regtest ironwood tier, and the workflow default from the 6.0.0-rc.0 candidate to 6.0.0. The mainnet overlay no longer needs a separate zebra pin and reuses the base image.

Co-authored-by: AI <noreply+norm@overpay.com>
Co-authored-by: AI <noreply+norm@overpay.com>
Rebase the ironwood line onto 0.4.3 and repoint librustzcash to the
upstream zcash/librustzcash ironwood branch, retiring the interim
zecrocks fork. Ironwood now carries every 0.4.x fix through 0.4.3.

Co-authored-by: AI <noreply+norm@overpay.com>
@emersonian

Copy link
Copy Markdown
Contributor Author

CI green (CI + Docker + Regtest E2E all passed). Branches force-pushed to release/0.5.x, main, ironwood and tagged v0.5.0-rc2. Closing this CI-only PR.

@emersonian emersonian closed this Jul 12, 2026
@emersonian
emersonian deleted the ci-0.5.x-rebase branch July 12, 2026 09:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant