Skip to content

feat!: remove zcashd support entirely#1395

Open
zancas wants to merge 8 commits into
devfrom
remove_zcashd
Open

feat!: remove zcashd support entirely#1395
zancas wants to merge 8 commits into
devfrom
remove_zcashd

Conversation

@zancas

@zancas zancas commented Jul 13, 2026

Copy link
Copy Markdown
Member

zcashd support was gated behind the opt-in zcashd_support feature (docs/adr/0001, 0005) as a staging post on the deprecation path. This PR takes the final step, recorded in docs/adr/0008: the feature and everything it gated are deleted — the zcashd-shaped getpeerinfo parsing in zaino-fetch, the zcashd validator launchers and ValidatorKind::Zcashd in zaino-testutils, and the zcashd-backed live suites (json_server, devtool_zcashd, and the zcashd arms of the shared suites). Zebra (or another Zaino) is the only supported backing validator.

The test-environment image no longer downloads or builds zcashd: the ZCASH_VERSION pin, the zcashd Containerfile stages, and the zcashd-conditional image targets are gone, collapsing the build matrix to final-prebuilt and final-zebrad-source, and the image tag no longer embeds a zcashd version. The --with-zcashd flag, the zcashd_test task, and the check-no-zcashd guard family are deleted; the guard is moot now that the no-zcashd build is the only build.

Zaino still serves the zcashd-compatible RPC surface to its own clients. That wire contract — field names, error codes, response shapes, the zcashd_build/zcashd_subversion protobuf fields — is Zaino's product and is unaffected by which validator backs the index, so the comments citing zcashd RPC semantics for the serving surface stay.

This PR is stacked on #1394 and should merge after it: the branch contains #1394's seven commits, so until that PR merges the diff here shows them too. Only the final commit belongs to this PR.

Note for reviewers: cargo clippy --all-features -D warnings is red on the base branch already (E0425 on network/pool_lists in the feature-gated write_core.rs code); this PR neither causes nor fixes that.

🤖 Generated with Claude Code

zancas and others added 8 commits July 13, 2026 08:44
An audit of every zebra* and zcash* dependency edge (cargo machete, the
compiler's unused_crate_dependencies lint, and inspection of each
remaining single-reference hit) found exactly one dead edge: zainod
declared zebra-chain but never referenced it. Remove it. Every other
declared edge is genuinely used; zebra-chain remains the type backbone
of the workspace, with some 350 references in zaino-state alone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Advance ZEBRA_VERSION in .env.testing-artifacts from 6.0.0-rc.0 to the
final 6.0.0 release. Zebrad 6.0.0 depends on zebra-chain ^11.1.0, the
same crate generation the workspace now pins, so the zebrad binary the
live tests run against and the zebra libraries zaino links are once
again from a single release. The makers check-matching-zebras guard
passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A workspace-wide unused-dependency audit (the compiler's
unused_crate_dependencies lint analyzed per target, cross-checked with
cargo machete and a text search of every candidate's package, including
feature-gated code) found twelve dead edges. Remove them: prost, bs58,
nonempty, derive_more, and once_cell from zaino-state;
tracing-subscriber from zainod; and tracing, corez, serde_json,
tempfile, tower, and zip32 from clientless. The bs58, nonempty, and
zip32 entries in [workspace.dependencies] lost their last inheritors
and are removed with them.

One edge that looks dead is kept deliberately: clientless does not
import zainod in any test source, but its
transparent_address_history_experimental feature forwards to
zainod/transparent_address_history_experimental, and cargo rejects a
feature forward to a non-dependency. A comment in the manifest now
records that.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The same audit that removed the dead edges found three dependencies
that are real but used exclusively under #[cfg(test)]: primitive-types
in zaino-state (the legacy_chainwork_reference round-trip tests),
tempfile in zainod (the config tests), and tonic in zaino-testutils
(the cfg(test)-gated build_client helper). Move each from
[dependencies] to [dev-dependencies] so shipped builds stop linking
them. The lockfile is unchanged: dependency kind does not affect
resolution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mary

`makers test all` previously ran the packages set outside the summary
runner, so the closing table covered only the two live partitions. The
`all` branch now delegates to `live-summary --all`, which runs `makers
container-test` first and prints its tallies as a `packages:` row above
`clientless:`, `e2e:`, and `TOTAL:`, under a "test summary" header.
`makers test live` is unchanged apart from the new column. The old
contract is preserved: every set runs even when an earlier one fails,
and the runner exits non-zero if any set did.

Each row also gains a wall-clock time column, parsed from the nextest
summary line's `[ 510.718s]` stamp. Durations are held as integer
milliseconds in a u64 — whole seconds and a right-padded three-digit
fraction parsed digit-by-digit, no floating point — and the TOTAL row
sums them, which reads as true wall time because the suites run
sequentially. Six new unit tests cover the parser (padding, short and
absent fractions, and propagation through parse_summary), and the
pre-existing `filter(..).last()` on a double-ended iterator is
tightened to `rfind(..)` per clippy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The test-environment image rebuild (first since the ZEBRA_VERSION bump
changed the image tag) failed because Debian trixie point updates
replaced two pinned package versions, and the archive does not keep
superseded versions: protobuf-compiler 3.21.12-11 -> 3.21.12-11+deb13u1
(all three build stages) and curl 8.14.1-2+deb13u3 -> 8.14.1-2+deb13u4
(both stages). Every other pin in the Containerfile still matches the
archive; verified against qa.debian.org/madison and a live
trixie-slim container.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
zcashd support was gated behind the opt-in zcashd_support feature
(docs/adr/0001, 0005) as a staging post on the deprecation path. This
takes the final step, recorded in docs/adr/0008: the feature and
everything it gated are deleted — the zcashd-shaped getpeerinfo parsing
in zaino-fetch, the zcashd validator launchers and ValidatorKind::Zcashd
in zaino-testutils, and the zcashd-backed live suites (json_server,
devtool_zcashd, and the zcashd arms of the shared suites). Zebra (or
another Zaino) is the only supported backing validator.

The test-environment image no longer downloads or builds zcashd: the
ZCASH_VERSION pin, the zcashd Containerfile stages, and the
zcashd-conditional image targets are gone, collapsing the build matrix
to final-prebuilt and final-zebrad-source, and the image tag no longer
embeds a zcashd version. The --with-zcashd flag, the zcashd_test task,
and the check-no-zcashd guard family are deleted; the guard is moot now
that the no-zcashd build is the only build.

Zaino still serves the zcashd-compatible RPC surface to its own
clients. That wire contract — field names, error codes, response
shapes, the zcashd_build/zcashd_subversion protobuf fields — is Zaino's
product and is unaffected by which validator backs the index, so the
comments citing zcashd RPC semantics for the serving surface stay.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zancas
zancas changed the base branch from bump_deps to dev July 13, 2026 17:24
@zancas
zancas marked this pull request as draft July 13, 2026 17:24
@zancas
zancas marked this pull request as ready for review July 13, 2026 17:52
@zancas
zancas requested a review from idky137 July 13, 2026 17:56
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