remove(tests): Remove the QA test framework - #10363
Merged
Merged
Conversation
oxarbitrage
commented
Mar 4, 2026
Collaborator
|
Looks good but ended up getting conflicts with the recently merged PR |
conradoplg
approved these changes
Mar 4, 2026
Contributor
Merge Queue StatusRule:
This pull request spent 11 minutes 30 seconds in the queue, including 35 seconds running CI. Required conditions to merge
|
38 tasks
Metalcape
added a commit
to Metalcape/zebra
that referenced
this pull request
Mar 6, 2026
commit 21f8e187f8e984851e6e7b77c915bf14837b842b
Author: Metalcape <dario.capecchi.m@gmail.com>
Date: Fri Mar 6 18:40:38 2026 +0100
Maintenance
- Merge Cargo.lock changes
- Add parameter descriptions in methods.rs for new RPC methods
- Convert new methods in service.rs to new format
commit dbfbde2dbdc5ca1f47476d9055bd7cb343e0846e
Author: Metalcape <dario.capecchi.m@gmail.com>
Date: Fri Mar 6 17:57:28 2026 +0100
Squashed commit of the following:
commit 79505cd5945b9aa98a9e27c703ef4b7dff927094
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Thu Mar 5 11:16:43 2026 -0300
fix(docs): Markdown lint in state changelog (#10367)
fix markdown lint in state changelog
commit cee966b2d71fed8d14efb520ac01f3a2390b0d45
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Thu Mar 5 06:46:46 2026 -0300
remove(tests): Remove the QA test framework (#10363)
* remove `qa` folder
* update the changelogs
* update pull request number
commit 09be46ab55b626f82769bc11e8e426c03997c692
Author: Zaki Manian <zaki@iqlusion.io>
Date: Wed Mar 4 17:03:50 2026 -0800
feat: add remaining non-standard mempool transaction filters (#10314)
* feat: add remaining non-standard mempool transaction filters
Implement the remaining zcashd mempool standardness checks from
AcceptToMemoryPool / IsStandardTx / AreInputsStandard (issue #10143).
Per-transaction sigops limit (MAX_STANDARD_TX_SIGOPS = 4000):
- The sigops count now includes both legacy and P2SH sigops for mempool
transactions, matching zcashd's GetLegacySigOpCount + GetP2SHSigOpCount.
- Added p2sh_sigop_count() to zebra-script for computing P2SH sigops.
AreInputsStandard (full zcashd parity):
- Solver classification: spent output scriptPubKeys must be a known
standard type (P2PKH, P2PK, P2SH, multisig). Non-standard and
OP_RETURN spent outputs are rejected.
- Stack-depth check: scriptSig must have exactly the expected number of
push operations per ScriptSigArgsExpected. Extra data is rejected.
- P2SH redeemed script handling: standard redeemed scripts have their
inner expected args validated; non-standard redeemed scripts are
accepted if sigops <= MAX_P2SH_SIGOPS (15).
- Added debug_assert_eq checks on input/output lengths to catch silent
zip() truncation.
References:
- https://github.com/zcash/zcash/blob/v6.10.0/src/policy/policy.cpp#L137
- https://github.com/zcash/zcash/blob/v6.10.0/src/policy/policy.h
- https://github.com/zcash/zcash/blob/v6.10.0/src/main.cpp#L1819
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: are_inputs_standard should continue checking remaining inputs
When a P2SH input has a non-standard redeemed script with sigops <=
MAX_P2SH_SIGOPS, the function was returning true immediately without
validating remaining inputs. Now continues to the next input instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address CI failures and review feedback
- Add missing `inputs_are_standard` field in zebra-rpc test
- Wrap bare URLs in angle brackets for rustdoc compliance
- Update zcashd references from v6.10.0 to v6.11.0
- Fix rustfmt formatting in zebra-script tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address review feedback from #10314
- Update zcashd reference links from v6.10.0 to v6.11.0 in storage.rs
- Rename NonStandardP2shSigops to NonStandardInputs (covers more than sigops)
- Replace debug_assert_eq with assert_eq in zebra-script (zip silently
truncates in release builds if lengths mismatch)
- Move MAX_STANDARD_TX_SIGOPS, MAX_STANDARD_SCRIPTSIG_SIZE, and
MAX_STANDARD_MULTISIG_PUBKEYS from local constants to public in
zebra-script alongside MAX_P2SH_SIGOPS
- Improve doc comment on inputs_are_standard field
- Bump zcash_script from 0.4.2 to 0.4.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: move policy functions from zebra-script to storage.rs
Address review feedback from #10314:
- Move are_inputs_standard, p2sh_sigop_count, and helpers from
zebra-script to storage.rs where they belong alongside existing
output policy checks
- Eliminate classify_script/standard_script_kind duplication by
extracting shared standard_script_kind_from_bytes
- Replace inputs_are_standard field with spent_outputs on
VerifiedUnminedTx so storage.rs can compute policy checks directly
- Rename sigops to legacy_sigop_count to clarify it excludes P2SH
- Replace assert_eq! panics in policy functions with graceful
tracing::warn + safe defaults for length mismatches
- Add unit tests for policy functions in storage tests
- Update doc comments per reviewer suggestions
- Add TODO for spent_outputs alignment issue (#10346)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: extract policy module, deduplicate checks, reorder validation
Address review feedback from PR #10314:
- Move policy constants and functions to storage/policy.rs module,
keeping reject_if_non_standard_tx in storage.rs
- Inline standard_script_kind_from_code (1-line function used once)
and merge standard_script_kind_from_bytes into standard_script_kind
- Fix doc comments: "zcashd's Solver()" -> "zcash_script solver"
- Reorder checks: scriptSig size/push-only checks now run before
are_inputs_standard, so count_script_push_ops is never called
on non-push-only scripts
- Deduplicate spent_outputs length mismatch check: done once in
reject_if_non_standard_tx instead of in both are_inputs_standard
and p2sh_sigop_count
- Move unit tests for private helpers into policy module
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
commit a30f71ffd9665657d1e23895feed6f21bdeebb90
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Wed Mar 4 19:33:46 2026 -0300
fix(consensus): preserve input order in `spent_outputs` for mixed chain/mempool transactions (#10356)
fix ordering in `spent_outputs()`
commit 0ebaf6dac72e67f898fbd46e6f306cc6b4327494
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Mar 4 21:23:01 2026 +0000
docs: improve documentation quality and add CI checks (#10204)
* docs: improve documentation quality and add CI checks
Add automated documentation quality checks and fix existing issues across
the codebase documentation.
Workflow changes:
- Add `docs-check.yml` workflow with link checking (lychee), spell checking
(codespell), and markdown linting (markdownlint)
- Workflow follows project conventions: pinned action SHAs, per-job
permissions, aggregator job pattern
Documentation fixes:
- Fix markdown linting issues (MD040 code block language specifiers,
MD059 descriptive link text)
- Fix spelling errors across documentation files
- Add missing ARCHITECTURE.md for high-level codebase overview
- Add new developer documentation: onboarding guide, crate architecture
- Add ecosystem integration guide for users
- Add architectural decision records (ADRs) for Tower, verification, RocksDB
- Update CI/CD documentation with workflow diagram
Configuration:
- Add `.lychee.toml` for link checker configuration
- Add `.lycheecache` to `.gitignore`
- Update `.codespellrc` with domain-specific terminology
Note: Some URLs are excluded in `.lychee.toml` that require review:
- zips.z.cash PDF links (404 but linked from official Zcash site)
- Deprecated doc sites (doc.zebra.zfnd.org, doc-internal.zebra.zfnd.org)
- zcash/zips master branch links (pending main migration)
- New zebra.zfnd.org pages (pending book deployment)
* fix(ci): add markdownlint config and fix alls-green SHA
- Add .trunk/configs/.markdownlint.yaml to repo (was gitignored)
- Fix re-actors/alls-green SHA: use commit hash, not tag object hash
* fix(ci): disable additional markdownlint rules for existing docs
Disable MD001, MD028, MD036 rules that flag intentional formatting
patterns in existing RFC and book documentation.
* fix(docs): update stale URLs and remove RFC implementation notes
- Fix nginx URL migration (nginxinc -> nginx organization)
- Fix zcash/zips URLs (master -> main, new /zips/ directory structure)
- Fix docs.rs URL (config/struct.Config -> config/rpc/struct.Config)
- Fix internal docs URLs (doc-internal.zebra.zfnd.org -> zebra.zfnd.org/internal)
- Fix zfnd.org blog URLs (removed /blog/ path segment)
- Remove Implementation Notes from RFCs (RFCs should be static historical records)
- Clean up lychee.toml exclusions for now-working URLs
- Add CHANGELOG.md to exclude_path (contains historical dead links)
* fix(docs): resolve markdownlint errors in observability docs and CHANGELOGs
- Add language specifier to fenced code blocks (MD040)
- Add blank lines around lists (MD032)
- Add blank lines around fenced code blocks (MD031)
- Remove multiple consecutive blank lines (MD012)
commit de9a52cbd646364c35b8e1b9db32c9f8af31160d
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri Feb 27 15:23:09 2026 +0000
build(deps): bump the devops group across 1 directory with 8 updates (#10345)
Bumps the devops group with 8 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.1` | `6.0.2` |
| [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.67.2` | `2.68.10` |
| [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) | `6.1.1` | `6.2.0` |
| [rlespinasse/github-slug-action](https://github.com/rlespinasse/github-slug-action) | `5.4.0` | `5.5.0` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | `6.18.0` | `6.19.2` |
| [docker/login-action](https://github.com/docker/login-action) | `3.6.0` | `3.7.0` |
| [shimataro/ssh-key-action](https://github.com/shimataro/ssh-key-action) | `2.7.0` | `2.8.0` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.4.1` | `0.5.0` |
Updates `actions/checkout` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/8e8c483db84b4bee98b60c0593521ed34d9990e8...de0fac2e4500dabe0009e67214ff5f5447ce83dd)
Updates `taiki-e/install-action` from 2.67.2 to 2.68.10
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/0bc4cd8a3e21db4cb9519857377b0c8c5e150de5...305bebabd4457bed9b82541755f034994382465b)
Updates `release-drafter/release-drafter` from 6.1.1 to 6.2.0
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/267d2e0268deae5d44f3ba5029dd4d6e85f9d52d...6db134d15f3909ccc9eefd369f02bd1e9cffdf97)
Updates `rlespinasse/github-slug-action` from 5.4.0 to 5.5.0
- [Release notes](https://github.com/rlespinasse/github-slug-action/releases)
- [Commits](https://github.com/rlespinasse/github-slug-action/compare/6f7a8d2348e2a4aa5defafcdaafe5aef3f83bd4b...9e7def61550737ba68c62d34a32dd31792e3f429)
Updates `docker/build-push-action` from 6.18.0 to 6.19.2
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8)
Updates `docker/login-action` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/5e57cd118135c172c3672efd75eb46360885c0ef...c94ce9fb468520275223c153574b00df6fe4bcc9)
Updates `shimataro/ssh-key-action` from 2.7.0 to 2.8.0
- [Release notes](https://github.com/shimataro/ssh-key-action/releases)
- [Changelog](https://github.com/shimataro/ssh-key-action/blob/v2/CHANGELOG.md)
- [Commits](https://github.com/shimataro/ssh-key-action/compare/d4fffb50872869abe2d9a9098a6d9c5aa7d16be4...6b84f2e793b32fa0b03a379cadadec75cc539391)
Updates `zizmorcore/zizmor-action` from 0.4.1 to 0.5.0
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/135698455da5c3b3e55f73f4419e481ab68cdd95...0dce2577a4760a2749d8cfb7a84b7d5585ebcb7d)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: taiki-e/install-action
dependency-version: 2.68.10
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: release-drafter/release-drafter
dependency-version: 6.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: rlespinasse/github-slug-action
dependency-version: 5.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: docker/build-push-action
dependency-version: 6.19.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: docker/login-action
dependency-version: 3.7.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: shimataro/ssh-key-action
dependency-version: 2.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: zizmorcore/zizmor-action
dependency-version: 0.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
commit 55cd3dfb44d78a924cecd11c54cf67b56338b8f5
Author: Arya <aryasolhi@gmail.com>
Date: Fri Feb 27 10:23:04 2026 -0500
fix(network): Fixes bug in `ActiveConnectionCounter` and inaccurate connection count metrics (#10311)
* Updates ActiveConnectionCounter to track connection slots reserved for connection attempts separately from occupied connection slots representing active established peer connections.
* Uses a single channel for closed and opened connection notifications
* addresses suggestions from code review
commit cfc4c71ee4bc40da2c3f0c37b7446bbc70ac53e4
Author: Arya <aryasolhi@gmail.com>
Date: Fri Feb 27 08:26:24 2026 -0500
cleanup: Simplify `ReadStateService::call()` method (#10335)
* Simplifies `ReadStateService::call()` method.
* Renames method
* fix lint
* reduces duplicate code
* simplifies a couple more match arms
* Applies suggestions from code review
* look for tip block size in block info collection in memory or cf in rocksdb before counting the number of bytes in a block's encoding
commit 42baa9c383b3fc612c1deede77d3ef9fb6afe98e
Author: Pili Guerra <pili@zfnd.org>
Date: Fri Feb 27 14:13:44 2026 +0100
docs: Update zebra grafana dashboards path in metrics.md (#10330)
Minor update based on where sample dashboards can be found
commit ef299c28b7de44a5465e5610471f4a1d806ff4b0
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Wed Feb 25 14:25:15 2026 +0100
chore: update CHANGELOGs to reflect changes made in #10056 and #9979 (#10273)
* chore: update CHANGELOGs to reflect changes made in #10056
* chore(zebra-state): update the CHANGELOG to reflect changes made in #9979 and #9999
* Update zebra-state/CHANGELOG.md
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* Fix typo in CommitCheckpointVerifiedError entry
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 899df3d565d9fa34d918ace05badee395940b6f7
Author: Arya <aryasolhi@gmail.com>
Date: Tue Feb 17 14:40:55 2026 -0500
feat(state): Add a `AnyChainBlock` state request for querying blocks in side chains (#10325)
* adds an `AnyChainBlock` state request
* Updates changelog
* Avoids cloning any extra data in the non-finalized state when handling some state requests that only query the best non-finalized chain (perhaps at the expense of holding read locks slightly longer if the added traversals are worse than the copying, probably insignicant either way but this makes it easier to add fields to NonFinalizedState without worrying)
Adds a `cloned_mapped_watch_data()` method on `WatchReceiver`.
* Applies docs corrections, renames methods/fns, and unifies implementations for `block` and `any_chain_block` read fns (latter renamed to `any_block()`)
* Factors `spawn_blocking()` and `in_scope()` calls into a new trait method.
* Update zebra-state/src/request.rs
* Add basic tests for `AnyChainBlock` (#10327)
generate some tests
* Update zebra-state/src/request.rs
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit b581fba9315d26df5eab0b2f3bc2c37a9cc6b389
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Tue Feb 17 15:27:36 2026 -0300
release(changelog): Add changelogs for OpenRPC changes (#10326)
add changelogs for openerpc
commit c45cf2b5c621247c18199795d3834cf6d9d92baf
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Fri Feb 13 21:05:18 2026 -0300
feat(rpc): Support `rpc.discover` endpoint (#10201)
* use operpsee
* use openrpsee crate
* remove testing and demo schemas
* fix dependencies
* add todo link
commit cad81ca50b715ac7e26226ba4a865b99ca70385e
Author: Zaki Manian <zaki@iqlusion.io>
Date: Fri Feb 13 13:19:33 2026 -0800
fix: getrawtransaction compat with zcashd (#10307)
* fix: getrawtransaction compat with zcashd (#10137)
Two fixes for zcashd compatibility in the getrawtransaction RPC response:
1. Always include `expiryheight` field (zcashd returns 0 for transactions
without expiry, Zebra was omitting the field entirely via
skip_serializing_if)
2. Decode sighash type flags in scriptSig asm output (change
`.to_asm(false)` to `.to_asm(true)` so signatures display with
`[ALL]`, `[NONE]`, etc. suffixes matching zcashd)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: match zcashd expiryheight behavior for pre-Overwinter transactions
zcashd only includes `expiryheight` in RPC responses for Overwinter+
transactions (when tx.fOverwintered is true). Pre-Overwinter V1/V2
transactions omit the field entirely. The previous commit incorrectly
always included `expiryheight: 0` for all transactions.
Now uses `tx.is_overwintered()` to match zcashd:
- Overwinter+ (V3/V4/V5): include expiryheight (0 = no expiry per ZIP-203)
- Pre-Overwinter (V1/V2): omit expiryheight
zcashd ref: https://github.com/zcash/zcash/blob/cfcfcd93b/src/rpc/rawtransaction.cpp#L224-L226
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address review feedback from oxarbitrage
- Use release tag v6.11.0 instead of commit hash in zcashd references
- Add zcashd reference comments for .to_asm(true) and .to_asm(false) calls
- Remove duplicate zcashd link from implementation comment
- Move test comments to above the expiry_height fields they describe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* make doc description a link
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit cc92ca3bec47a4c757eab72899acb3e5e6034f58
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Feb 13 10:56:50 2026 +0000
docs: Add AI contribution policy and agent guidance files (#10318)
Add AGENTS.md, CLAUDE.md, copilot-instructions.md, update
CONTRIBUTING.md and PR template to establish clear policies
for AI-assisted contributions and external PR management.
commit 3b9b833ca7b32b3d95a1fec9564c3c3189705093
Author: Marek <m@rek.onl>
Date: Thu Feb 12 17:34:55 2026 +0100
add: Support pre-Canopy block subsidies (#10191)
* Refactor subsidy constants into dedicated modules
* Use qualified names instead of name suffixes
* Restrict subsidy constants modules to crate visibility
* Add Mainnet founder address constants to subsidy parameters
* Add Testnet founder address constants to subsidy parameters
* Add From implementation for Height to u64 conversion
* Add full support for calculating block subsidies
* Add full support for subsidies in getblocksubsidy RPC
* Add is_zero method to Amount type
* Update funding stream calculation for zero subsidy blocks
* Add From implementation for u32 conversion from block Height
* Refactor subsidy module
* Add From implementation for amount::Error to BlockError
* Add founder address list getter to Network implementation
* Update SubsidyError variants and rename SumOverflow to Overflow
Added new SubsidyError variants FoundersRewardNotFound and Underflow.
Renamed SumOverflow to Overflow and updated related error mappings.
Updated CHANGELOG to reflect these changes.
* Rename num_halvings function and references to halving
* Add founders_reward function for initial block subsidy distribution
* Add founders_reward_address function to subsidy module
* Support checking pre-Canopy block rewards
* Apply suggestions from code review
---------
Co-authored-by: arya2 <aryasolhi@gmail.com>
commit 86409ab08aa85763098009d5d37f7a8f31caf979
Author: VolodymyrBg <aqdrgg19@gmail.com>
Date: Wed Feb 11 22:56:08 2026 +0200
Fix/peerset banned cancel handles (#10258)
* fix: clean up banned peers in PeerSet queued state
* add test
* add test for cancel handle
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit c8b9bbabb885f89018687e2cb8b5a98b8d3de707
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Feb 11 20:20:43 2026 +0000
fix(tests): wait for process termination and use read-only state init (#10263)
* fix(state): wait for RocksDB background jobs before releasing database lock
Add `wait_for_compact()` to the database shutdown sequence to ensure all
background compaction and flush jobs complete before the database is dropped.
This prevents "Database likely already open" panics when another process
tries to open the same database immediately after this one closes.
The issue was causing intermittent CI failures in `rpc_submit_block` and
`lwd_rpc_send_tx` integration tests where a second zebrad process would
try to open the database before the first one had fully released the lock.
* fix(tests): wait for process termination after kill() before reopening database
Replace arbitrary sleep delays with explicit wait_with_output() calls after
kill() to ensure zebrad processes have fully terminated before attempting
to reopen the database. This prevents "Database likely already open" errors
that occurred when the 3-second sleep wasn't enough time for the OS to release
file locks.
The kill() function only sends SIGKILL but doesn't wait for the process to
terminate. Without waiting, the database lock might not be released yet when
the test tries to open a new database instance.
* fix(tests): use init_read_only to avoid orphaned metrics task holding database lock
The StateService::new() function spawns an infinite metrics export task
that holds a database clone forever. When load_tip_height_from_state_directory()
used zebra_state::init(), this task would keep the database lock even after
the function returned, causing "Database likely already open" panics when
zebrad #2 tried to open the same database.
Changed load_tip_height_from_state_directory() to use init_read_only()
instead of init(). The init_read_only() function creates a minimal read-only
state without spawning background tasks, so the database is properly released
when the function returns.
* fix(tests): address PR review feedback for database lock fixes
Changes based on PR review:
- Rename `load_tip_height_from_state_directory` to `load_finalized_tip_height_from_state_directory`
to accurately reflect that it returns the finalized tip (which may be behind best tip)
- Improve error message for spawn_blocking JoinError to cover panic/cancellation cases
- Propagate errors from `wait_with_output()` instead of ignoring them - ignoring defeats
the purpose of the fix since we wouldn't actually wait if it fails
- Keep `#![allow(unused_imports)]` in disk_db/tests.rs with explanatory comment - this module
is included via `proptest-impl` feature where imports appear unused (test functions are
only compiled in test mode)
* revert(state): remove wait_for_compact() from shutdown sequence
The CI failures were caused by not waiting for the zebrad process to
terminate, not by RocksDB's internal background work. The test fixes
(wait_with_output instead of sleep) address the actual root cause.
Removing wait_for_compact() because:
- It can block indefinitely during shutdown
- The OS could halt the thread anyway, making it unreliable
- The new reopen test already passes on main without it
- The WAL already ensures recoverability of in-flight writes
* fix(tests): keep sleep after wait_with_output as safety margin
Add back a short sleep after wait_with_output() calls. As noted in
review, wait() returning Ok doesn't guarantee the OS has fully
released all resources (file locks, etc.) in every edge case.
commit 887d4d4952860060484b7f8ea20bab8e69c43fb5
Author: Zaki Manian <zaki@iqlusion.io>
Date: Wed Feb 11 10:59:15 2026 -0800
fix: clarify TransparentInputNotFound error message (#10302)
* fix: clarify TransparentInputNotFound error message (#10214)
The previous message "could not find a mempool transaction input UTXO
in the best chain" was misleading in two ways:
- "mempool transaction" implied the transaction was already in the
mempool, when in fact it is being submitted to the mempool
- "in the best chain" was incomplete, since the lookup also checks
unconfirmed transactions in the mempool (zero-conf spending)
The new message "could not find transparent input UTXO in the chain or
mempool" accurately describes the lookup scope.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update zebra-consensus/src/error.rs
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 3a832540d54d133a85a2e719279a5eb6a6b2c83d
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Wed Feb 11 17:42:46 2026 +0100
refactor(zebra-chain): use `strum::EnumIter` instead of `NETWORK_UPGRADES_IN_ORDER` (#10096)
* refactor(zebra-chain): use strum EnumIter instead of NETWORK_UPGRADES_IN_ORDER
* refactor(zebra-chain): update changelog and move tests
* Update zebra-chain/CHANGELOG.md
Co-authored-by: Marek <m@rek.onl>
* Update zebra-chain/CHANGELOG.md
Co-authored-by: Marek <m@rek.onl>
* chore: update Cargo.lock
* add note about order to `NetworkUpgrade` enum
---------
Co-authored-by: Marek <m@rek.onl>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 5d274ad2c6c5839d93b078738e540513209a7463
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Wed Feb 11 08:56:46 2026 -0300
feat(delete): Remove OpenAPI spec and functionality (#10298)
* remove openapi
* changelog
* Apply suggestion from @gustavovalverde
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
* Apply suggestion from @oxarbitrage
---------
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
commit 5c31c4c2d14cb0af629d5071377fb1cc9559230f
Author: Pili Guerra <1311133+mpguerra@users.noreply.github.com>
Date: Wed Feb 11 12:56:35 2026 +0100
docs: Fix package installation command for Redis (#10299)
Minor typo fix
commit e0a4d96d8a76c3d08304a7b9084218c71117caa2
Author: Conrado <conrado@zfnd.org>
Date: Wed Feb 11 06:15:02 2026 -0300
ci: make test-docker more robust by adjusting grep pattern (#10291)
commit 70f8373faa3146f6e305516223522e6aa29dc350
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Mon Feb 9 11:29:28 2026 -0300
feat(rpc): Implement `gettxout` RPC method (#10235)
* initial approach
* apply spent filter, do fixes
* code improvments
* fix some differences with zcashd
* fix mempool path
* add spend check in mempool, improve script type display
* fix test
* remove closure
* fix unreachable message
* fmt
* Suggestions for "feat(rpc): Implement gettxout RPC method #10235" (#10237)
* - Removes boxed response
- Condenses two mempool requests into one
- Adds a TODO about ensuring the returned tip hash is valid in all responses
* remove mempool test, fix minor doc failures
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* add network argument to method
* remove unnecessary wrapper
* fix some comments
* change default mempool
* add changelog entries
---------
Co-authored-by: Arya <aryasolhi@gmail.com>
commit 16c40c152602ad9d76c98512bb71b03c630e057d
Author: Marek <m@rek.onl>
Date: Mon Feb 9 13:31:14 2026 +0100
add(chain): Add founders reward addresses (#10188)
* Refactor subsidy constants into dedicated modules
* Use qualified names instead of name suffixes
* Restrict subsidy constants modules to crate visibility
* Add Mainnet founder address constants to subsidy parameters
* Add Testnet founder address constants to subsidy parameters
---------
Co-authored-by: Arya <aryasolhi@gmail.com>
commit 7d8f3d63834b46237a478aefbe4da2e1264f3508
Author: Conrado <conrado@zfnd.org>
Date: Fri Feb 6 19:25:58 2026 -0300
set MSRV to 1.85 and actually test it in CI (#10275)
* set MSRV to 1.85 and actually test it in CI
* revert the MSRV build to do each crate, skip zebrad
commit b4f9edab09ffc990b18b7edbc0e953e4d80cefce
Author: Marek <mail@marek.onl>
Date: Fri Feb 6 19:23:26 2026 +0100
chore: Release v4.1.0 (#10281)
* Update changelog with Zebra 4.1.0 release notes and contributor list
* hotfix: do major bumps for every crate that depends on zebra-chain (#10269)
* do major bumps for every crate that depends on zebra-chain
* Update .github/PULL_REQUEST_TEMPLATE/hotfix-release-checklist.md
Co-authored-by: Marek <mail@marek.onl>
* Apply suggestions from code review
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
---------
Co-authored-by: Marek <mail@marek.onl>
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
* Update crate versions
* Update estimated release height to 3231000
* Apply suggestions from code review
Co-authored-by: Conrado <conrado@zfnd.org>
* Remove subsidy constants module entry from changelog
---------
Co-authored-by: Conrado <conrado@zfnd.org>
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
commit 22382722d900222c5315809b0ae172557bccad5d
Author: Marek <mail@marek.onl>
Date: Thu Feb 5 12:24:42 2026 +0100
chore: Update checkpoints (#10278)
* Update Mainnet checkpoints up to height 3228806
* Add new Testnet checkpoints up to block height 3824000
commit 43ad654a29298e5ce8aab2a6ee61db46f7cd9abc
Author: GarmashAlex <garmasholeksii@gmail.com>
Date: Thu Feb 5 14:24:35 2026 +0300
perf: cache restorable db versions during old db cleanup (#10245)
commit ad6274cd608a724f56d2159451609cf65b6de16f
Author: Marek <mail@marek.onl>
Date: Thu Feb 5 12:24:29 2026 +0100
chore: Update `Cargo.lock` (#10276)
Update Cargo.lock with latest dependency versions
commit 3598023b0a35819655c13d3867a9ef4d9ae72e1f
Author: Marek <mail@marek.onl>
Date: Thu Feb 5 00:16:34 2026 +0100
Bump `vergen-git2` to v9 (#10272)
Update vergen-git2 dependency to version 9 in Cargo.toml
commit 1886129b6949fb9a5a77eaecbd17f3338f82d1a2
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Feb 4 14:38:28 2026 +0000
fix(docker): replace gosu with setpriv for privilege dropping (#10270)
* fix(docker): replace gosu with setpriv for privilege dropping
The tianon/gosu:trixie image recently lost arm64 support (2026-02-04),
breaking our multi-arch Docker builds.
Replace gosu with setpriv, which:
- Is part of util-linux, already included in debian:trixie-slim
- Requires no external Docker image dependency
- Provides the same privilege dropping functionality
- Has native multi-arch support
Add explicit privilege drop test to CI that verifies the entrypoint
correctly drops from root to uid=10001(zebra).
* fix(ci): escape parentheses in grep pattern for privilege drop test
* docs: add ADR-0004 for setpriv, mark ADR-0002 as superseded
commit 18178edd00c128f906ccce9e801c025eb0b15373
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Tue Feb 3 18:21:58 2026 +0000
fix(ci): remove unsupported `continue-on-error` from reusable workflow calls (#10264)
* fix(ci): move continue-on-error inside reusable workflow for testnet jobs
`continue-on-error` is not supported at the caller job level for
reusable workflows. Move it inside the reusable workflow via a new
`allow_failure` input parameter.
This was introduced in #10251 and caused workflow parsing errors.
* fix(ci): truncate branch name and make disk creation idempotent
- Add slug-maxlength: 23 to github-slug-action to keep instance names under 63 chars
- Restore original disk naming (test_id-sha) without branch for shared data disks
- Make disk creation idempotent: reuse existing disk if present from failed runs
The data disk architecture is designed to share disks across branches for the
same commit SHA (same code = same state). Instance names include branch for
parallel execution across branches.
commit 87eca87f980122f1cdd05d1c78e9706b2ef2581d
Author: Marek <mail@marek.onl>
Date: Tue Feb 3 14:54:20 2026 +0100
change(chain): Split subsidy constants into submodules (#10185)
* Refactor subsidy constants into dedicated modules
* Use qualified names instead of name suffixes
* Restrict subsidy constants modules to crate visibility
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit c52c65d81304a6d3e281a9abe3991114a566d52d
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Tue Feb 3 14:54:14 2026 +0100
feature(zebra-chain): add new `Bounded` vec type and apply it in AdjustDifficulty (#10056)
* feature: add new bounded vec type and apply in AdjustDifficulty
* feat: Bounded now enforces a minimum length and improved documentation
* refactor: implement AtLeastOne type as a specialized version of Bounded
* refactor(zebra-chain): refactor AtLeastOne to BoundedVec type alias
commit 9ad7d3cf96edbce074d0d9668234d810dfc0cfe1
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Tue Feb 3 05:13:07 2026 +0100
refactor(state): improve error propagation for CommitCheckpointVerifiedBlock (#9979)
* refactor(state): improve error propagation for CommitCheckpointVerifiedError
* Update zebra-state/src/error.rs
implements review feedback
Co-authored-by: Arya <aryasolhi@gmail.com>
* refactor(state): align checkpoint commit error handling with semantic commit flow
* - Condenses error types and variants
- Updates `KnownBlock` request handling to check for block hashes in the state's sent hashes, fixing a bug where it's possible for part of a chain to be duplicated in the non-finalized state if a block is sent to the state via a `CommitSemanticallyVerifiedBlock` request while it's in the block write channel or before the non-finalized state channel has been updated
* Updates `write_block()` to return a `CommitCheckpointVerifiedBlock` error and removes the `CloneError` variant
* Panic if Zebra fails to write a block to rocksdb
* fix: clippy lints and remove forgotten unwrap after error refactor
* fix Request docs and Duplicate error message
* fixes fmt whitespace
* sync: consolidate duplicate/commit checks in should_restart_sync
* should_restart_sync: make duplicate/commit checks more defensive
* should_restart_sync: revert previous changes and propagate CommitBlockError
* sync: clean up should_restart_sync and add unit test for CommitBlockError::Duplicate
* refactor(zebra-state): box ValidateContextError and eliminate redundant clone
---------
Co-authored-by: Arya <aryasolhi@gmail.com>
commit 0a632428e033f99ede85dcac3a157cbf95b044ef
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Feb 2 22:41:42 2026 +0000
fix(ci): make GCP instance template creation idempotent (#10259)
* fix(ci): make GCP instance template creation idempotent
Add a check to skip instance template creation if it already exists.
GCP instance templates are immutable resources - they cannot be updated
or deleted while referenced by a MIG. Since the template name includes
the commit SHA, the same commit produces the same template configuration,
making it safe to reuse an existing template.
Without this check, workflow re-runs or concurrent triggers on the same
commit fail with "already exists" error.
* style(ci): remove backtick comment from gcloud command
commit 4caee02f9106cd43727228fbd2b3fa28e63ee8f6
Author: Marek <mail@marek.onl>
Date: Mon Feb 2 15:26:20 2026 +0100
change(CI): Run scheduled full sync on Testnet (#10251)
Make testnet integration test jobs continue on error in CI workflow
commit 6138a87bd87b5f4fde6478df3f0a930f7c3d5ac9
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Mon Feb 2 11:26:17 2026 -0300
fix(sentry): Conditional init (#10256)
conditional sentry
commit 85a7b2f95666df88a22e1be08eadcf1b6c8544bd
Author: ZolyDevMaya <38867566+zlyzol@users.noreply.github.com>
Date: Sat Jan 31 12:43:56 2026 +0100
mempool: add standardness checks and configurable OP_RETURN policy (#10224)
* mempool: add standardness checks and OP_RETURN policy knobs
* mempool: remove datacarrier standardness config switch
* mempool: standardize proptest tx inputs
* mempool: bound crawler error proptest generation
* test: add v3.1.1 generated config
* mepool: make max_datacarrier_bytes optional with default fallback
* mempool: remove mempool specification link from readme
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* fmt, docs
* update config
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 295a3068bb9e9b70d923f0c9b59947651d8a18fa
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Fri Jan 30 16:35:25 2026 -0300
tests(qa): Add zaino to the qa rpc framework (#10199)
add zaino to the qa rpc framework
commit a58106cb031f9845a8d08e9fc6e309da750cd3bc
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Jan 30 17:52:33 2026 +0000
fix(ci): add issues write permission to release-binaries workflow (#10243)
fix(ci): add issues write permission to release-binaries failure-issue job
The failure-issue job in release-binaries.yml uses jayqi/failed-build-issue-action
to automatically create or update GitHub issues when the release workflow fails.
This action requires write access to issues, but the job was missing the necessary
permission, causing "Resource not accessible by integration" errors.
Adds `permissions: issues: write` to the failure-issue job to allow it to
create and comment on issues as intended.
commit 7db5a88112795ec9fe1e1ad9bff4c6dc9ae8c0d5
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Jan 30 17:49:41 2026 +0000
fix(ci): enable external network access for GCP deployed nodes (#10242)
Add ZEBRA_NETWORK__LISTEN_ADDR to GCP deployment workflow so nodes
listen on all interfaces for P2P connections. This allows DNS seeders
to discover and connect to these nodes.
Also fixes static IP assignment to use the correct gcloud command
(instance-configs create) which properly persists IPs across rolling
updates.
commit 9b2af18767745c4e7811779978d17275f5832bb6
Author: Pili Guerra <1311133+mpguerra@users.noreply.github.com>
Date: Fri Jan 30 14:38:47 2026 +0100
docs: Update CONTRIBUTING.md for PR handling (#10249)
Update CONTRIBUTING.md for PR handling
Clarified handling of low-effort PRs in contribution guidelines.
commit a09e55ae0cade0e4d5dde97b61491b94a683844b
Author: MozirDmitriy <dmitriymozir@gmail.com>
Date: Fri Jan 30 10:11:12 2026 +0200
perf: avoid extra clone in WtxId `TryFrom<&Vec<u8>>` (#10247)
commit e04845f3e4a0976031f35c6564aa56ea4d722371
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed Jan 28 15:06:29 2026 +0000
build(deps): bump the devops group across 1 directory with 12 updates (#10233)
* build(deps): bump the devops group across 1 directory with 12 updates
Bumps the devops group with 12 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `5.0.0` | `6.0.1` |
| [actions-rust-lang/setup-rust-toolchain](https://github.com/actions-rust-lang/setup-rust-toolchain) | `1.15.1` | `1.15.2` |
| [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.62.15` | `2.67.2` |
| [codecov/codecov-action](https://github.com/codecov/codecov-action) | `5.5.1` | `5.5.2` |
| [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) | `2.0.13` | `2.0.15` |
| [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) | `6.1.0` | `6.1.1` |
| [rlespinasse/github-slug-action](https://github.com/rlespinasse/github-slug-action) | `5.2.0` | `5.4.0` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3.11.1` | `3.12.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4.6.2` | `6.0.0` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `5.0.0` | `7.0.0` |
| [docker/metadata-action](https://github.com/docker/metadata-action) | `5.8.0` | `5.10.0` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.2.0` | `0.4.1` |
Updates `actions/checkout` from 5.0.0 to 6.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...8e8c483db84b4bee98b60c0593521ed34d9990e8)
Updates `actions-rust-lang/setup-rust-toolchain` from 1.15.1 to 1.15.2
- [Release notes](https://github.com/actions-rust-lang/setup-rust-toolchain/releases)
- [Changelog](https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions-rust-lang/setup-rust-toolchain/compare/02be93da58aa71fb456aa9c43b301149248829d8...1780873c7b576612439a134613cc4cc74ce5538c)
Updates `taiki-e/install-action` from 2.62.15 to 2.67.2
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/d6d752794628f1e1fffa3c4d3c8874e06f043d50...0bc4cd8a3e21db4cb9519857377b0c8c5e150de5)
Updates `codecov/codecov-action` from 5.5.1 to 5.5.2
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/5a1091511ad55cbe89839c7260b706298ca349f7...671740ac38dd9b0130fbe1cec585b89eea48d3de)
Updates `EmbarkStudios/cargo-deny-action` from 2.0.13 to 2.0.15
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](https://github.com/embarkstudios/cargo-deny-action/compare/f2ba7abc2abebaf185c833c3961145a3c275caad...3fd3802e88374d3fe9159b834c7714ec57d6c979)
Updates `release-drafter/release-drafter` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/b1476f6e6eb133afa41ed8589daba6dc69b4d3f5...267d2e0268deae5d44f3ba5029dd4d6e85f9d52d)
Updates `rlespinasse/github-slug-action` from 5.2.0 to 5.4.0
- [Release notes](https://github.com/rlespinasse/github-slug-action/releases)
- [Commits](https://github.com/rlespinasse/github-slug-action/compare/c33ff65466c58d57e4d796f88bb1ae0ff26ee453...6f7a8d2348e2a4aa5defafcdaafe5aef3f83bd4b)
Updates `docker/setup-buildx-action` from 3.11.1 to 3.12.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/e468171a9de216ec08956ac3ada2f0791b6bd435...8d2750c68a42422c14e847fe6c8ac0403b4cbd6f)
Updates `actions/upload-artifact` from 4.6.2 to 6.0.0
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.6.2...b7c566a772e6b6bfb58ed0dc250532a479d7789f)
Updates `actions/download-artifact` from 5.0.0 to 7.0.0
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/634f93cb2916e3fdff6788551b99b062d0335ce0...37930b1c2abaa49bbe596cd826c3c89aef350131)
Updates `docker/metadata-action` from 5.8.0 to 5.10.0
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/c1e51972afc2121e065aed6d45c65596fe445f3f...c299e40c65443455700f0fdfc63efafe5b349051)
Updates `zizmorcore/zizmor-action` from 0.2.0 to 0.4.1
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/e673c3917a1aef3c65c972347ed84ccd013ecda4...135698455da5c3b3e55f73f4419e481ab68cdd95)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.1
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: devops
- dependency-name: actions-rust-lang/setup-rust-toolchain
dependency-version: 1.15.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: taiki-e/install-action
dependency-version: 2.67.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: codecov/codecov-action
dependency-version: 5.5.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: EmbarkStudios/cargo-deny-action
dependency-version: 2.0.15
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: release-drafter/release-drafter
dependency-version: 6.1.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: rlespinasse/github-slug-action
dependency-version: 5.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: docker/setup-buildx-action
dependency-version: 3.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: actions/upload-artifact
dependency-version: 6.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: devops
- dependency-name: actions/download-artifact
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: devops
- dependency-name: docker/metadata-action
dependency-version: 5.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: zizmorcore/zizmor-action
dependency-version: 0.4.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
...
Signed-off-by: dependabot[bot] <support@github.com>
* fix: correct actions/checkout version comments from v4.2.2 to v6.0.1
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
commit 3854bc405f7efafdcb5866451cc21520fda4bdb2
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Jan 28 13:38:39 2026 +0000
feat(metrics): add RocksDB I/O latency and sync distance metrics (#10181)
* feat(metrics): add RocksDB I/O latency and sync distance metrics
Add high-priority observability metrics identified from Ethereum node
dashboard analysis:
Rust metrics:
- Batch commit latency histogram for RocksDB write operations
- Compaction metrics: pending bytes, running compactions, files per level
- Block cache usage tracking
- Sync distance gauges showing blocks behind estimated network tip
Dashboard improvements:
- New Zebra Overview dashboard with health status at a glance
- $job template variable for fleet monitoring across multiple nodes
- Sync Distance panel with semantic color thresholds
- System Resources row (CPU, memory, file descriptors)
- RocksDB dashboard: I/O Performance and Compaction sections
Color semantics fixes:
- Sync Status: SYNCING=yellow (in progress), SYNCED=green (complete)
- Sync Distance: 0-2 blocks="SYNCED", then yellow/orange/red thresholds
- Compaction Efficiency: inverted so high efficiency=green, low=red
- Database size: neutral blue (size isn't inherently good/bad)
- Added "NO DATA" state to all health panels
* docs: consolidate changelog entries per PR and fix formatting
- Consolidate multiple changelog entries into one per PR as requested
- Fix cargo fmt in sync/progress.rs
commit 9d4480c9d7f188a7a5e8e2717fc52d687af10d7f
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Jan 28 11:23:17 2026 +0000
feat(metrics): add performance histograms for bottleneck identification (#10179)
* feat(metrics): add value pool, RPC, and peer health metrics
Add Prometheus metrics for operational visibility:
- Value pool metrics: transparent, sprout, sapling, orchard, deferred
balances and total chain supply (zebra-state)
- RPC metrics middleware: request counts, latencies, active requests,
and errors per method (zebra-rpc)
- Peer handshake metrics: duration histograms and failure tracking
by reason (zebra-network)
Also includes:
- Grafana dashboards for value pools and RPC monitoring
- Prometheus alert rules for critical conditions
- Updated CHANGELOG
Closes #10162, closes #10163, closes #10164, closes #10167
* chore: remove wrongly commited files to `.gitignore`
* chore: cargo fmt
* chore: clippy fix
* docs: fix changelog entries for PR #10175
- Remove #10174 entries from [Unreleased] (already in 4.0.0)
- Remove redundant "Added" prefix from entries
- Link to PR #10175 instead of issues
- Add rpc_metrics module entry to zebra-rpc changelog
* Update CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
* Update zebra-rpc/CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
* feat(metrics): add performance histograms for bottleneck identification
Add duration histograms to help identify performance bottlenecks:
Sync pipeline metrics:
- sync.stage.duration_seconds{stage} for obtain_tips/extend_tips
- sync.block.download.duration_seconds{result}
- sync.block.verify.duration_seconds{result}
Consensus batch verification metrics:
- zebra.consensus.batch.duration_seconds{verifier,result}
- Covers ed25519, redjubjub, redpallas, halo2, groth16_sapling
RocksDB database metrics (exported every 30s):
- zebra.state.rocksdb.total_disk_size_bytes
- zebra.state.rocksdb.live_data_size_bytes
- zebra.state.rocksdb.total_memory_size_bytes
- zebra.state.rocksdb.cf_disk_size_bytes{cf}
- zebra.state.rocksdb.cf_memory_size_bytes{cf}
Dashboard updates:
- Updated syncer.json with sync latency panels
- Updated transaction-verification.json with batch duration panels
- Added rocksdb.json for database monitoring
Closes #10165
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
---------
Co-authored-by: Marek <mail@marek.onl>
commit 1d13b98dcaab943e2b3df5b1c843f80ef49e87b6
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Tue Jan 27 12:58:14 2026 +0000
feat(metrics): add value pool, RPC, and peer health metrics (#10175)
* feat(metrics): add value pool, RPC, and peer health metrics
Add Prometheus metrics for operational visibility:
- Value pool metrics: transparent, sprout, sapling, orchard, deferred
balances and total chain supply (zebra-state)
- RPC metrics middleware: request counts, latencies, active requests,
and errors per method (zebra-rpc)
- Peer handshake metrics: duration histograms and failure tracking
by reason (zebra-network)
Also includes:
- Grafana dashboards for value pools and RPC monitoring
- Prometheus alert rules for critical conditions
- Updated CHANGELOG
Closes #10162, closes #10163, closes #10164, closes #10167
* chore: remove wrongly commited files to `.gitignore`
* chore: cargo fmt
* chore: clippy fix
* docs: fix changelog entries for PR #10175
- Remove #10174 entries from [Unreleased] (already in 4.0.0)
- Remove redundant "Added" prefix from entries
- Link to PR #10175 instead of issues
- Add rpc_metrics module entry to zebra-rpc changelog
* Update CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
* Update zebra-rpc/CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
---------
Co-authored-by: Marek <mail@marek.onl>
commit 8b670c2fe34323b83385bf12380fab244669cad3
Author: Bashmunta <georgebashmunta@gmail.com>
Date: Tue Jan 27 04:05:23 2026 +0200
fix: report connection task exits as ConnectionTaskExited (#10231)
commit 650d0f25cfcf54200e1ce2d5c8e945025a68951f
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Jan 26 15:15:11 2026 +0000
fix(ci): Prevent race condition in GCP static IP assignment (#10159)
Use --no-address in instance template so instances start without
ephemeral IPs. This prevents the MIG controller from racing to restore
ephemeral IPs when assigning static IPs.
Closes #10158
commit 067e0b4e8253560d022227afab0acda820096429
Author: Conrado <conrado@zfnd.org>
Date: Wed Jan 21 15:04:03 2026 -0300
bump zebra-chain and dependent crates (#10234)
commit a2e43b7fa3521982473a8f6ddf206cbc17f5f33b
Author: Conrado <conrado@zfnd.org>
Date: Wed Jan 21 13:33:14 2026 -0300
bump versions and update changelogs for 4.0.0 release (#10230)
* bump versions and update changelogs for 4.0.0 release
* mention how to enable OpenTelemetry support
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
* bump release date to 21st
---------
Co-authored-by: Marek <mail@marek.onl>
commit 44d743b785769fc086aac481e6fa83d07b3096e8
Author: David Campbell <alchemydc@users.noreply.github.com>
Date: Tue Jan 20 13:08:14 2026 -0700
Update DNS seeders to add new Shielded Labs mainnet seeder (#10228)
* chore: add new Shielded Labs DNS mainnet seeder. remove unreachable/flaky z.cash seeders until ECC/bootstrap governance crisis is resolved.
see [forum post](https://forum.zcashcommunity.com/t/expanding-zcash-network-infrastructure-new-dns-seeders-launched-in-the-united-states-and-europe/54256) for context
* chore: re-add (now-alive) ECC mainnet seeder. list mainnet seeders in alphabetical order.
* cargo fmt
* chore: add (now alive again) ECC testnet seeder
* add new config file for tests
---------
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Conrado Gouvea <conrado@zfnd.org>
commit 6c1c79ee0dda5c0429d45c29cc86906ec0576906
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Tue Jan 20 14:53:54 2026 +0000
fix(clippy): address clippy beta lints (#10229)
- Box large error tuple in mempool downloads to fix result_large_err
- Use saturating_sub instead of checked_sub().unwrap_or_default()
commit 47e5756758740c31feeecd23211770263440c267
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Jan 19 20:00:15 2026 +0000
feat(tracing): add OpenTelemetry distributed tracing support (#10174)
* feat(tracing): add OpenTelemetry distributed tracing support
Adds feature-gated OpenTelemetry tracing with OTLP HTTP exporter:
- New `opentelemetry` feature flag in zebrad
- Configuration via environment variables:
- ZEBRA_TRACING__OPENTELEMETRY_ENDPOINT
- ZEBRA_TRACING__OPENTELEMETRY_SERVICE_NAME
- ZEBRA_TRACING__OPENTELEMETRY_SAMPLE_PERCENT
- RPC tracing middleware with SPAN_KIND_SERVER spans for Jaeger SPM
- Docker Compose observability stack (Jaeger, Prometheus, Grafana, AlertManager)
- Grafana dashboard for RPC tracing metrics
Closes #10166
Closes #10168
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
* fix: cargo fmt
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
---------
Co-authored-by: Marek <mail@marek.onl>
commit d6c9d334de90542124f1bde93c2df70200788838
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Jan 19 11:36:53 2026 +0000
fix(ci): update Docker test grep patterns for current log format (#10225)
The previous patterns expected network name and sync progress on the
same log line, but they are now on separate lines. Use seed peer
resolution log which shows both network (mainnet/testnet seeder) and
confirms the node is starting.
commit b75e0e0d6a97505d5378ec9d2299da3a346f4a37
Author: Emerson <emerson@fastmail.com>
Date: Fri Jan 16 14:36:51 2026 -0800
Parse Zebra's config file as TOML (#10222)
Config file must be TOML (Resolves #10221)
commit 39e4b8cccb3a138ac9d19cf514badb005ed59f87
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Jan 16 17:38:00 2026 +0000
fix(ci): resolve Docker build failures and cargo deny duplicates (#10219)
Fix CI issues affecting the main branch:
1. Docker test builds failing due to disk space (since Nov 13, 2025)
- Use configurable runner via DOCKER_BUILD_RUNNER_AMD64 variable
- ZcashFoundation uses larger runner; forks fallback to ubuntu-latest
2. Cargo deny duplicate crate errors (since Jan 15, 2026)
- Add skip-tree entries for hashbrown 0.15.x and itertools 0.13.x
commit 7c9bed3e05cfb8344640db4b678330eb8bed6400
Author: Conrado <conrado@zfnd.org>
Date: Thu Jan 15 20:20:27 2026 -0300
chore(chain): update checkpoints (#102…
Metalcape
added a commit
to Metalcape/zebra
that referenced
this pull request
Mar 8, 2026
commit 79505cd5945b9aa98a9e27c703ef4b7dff927094
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Thu Mar 5 11:16:43 2026 -0300
fix(docs): Markdown lint in state changelog (#10367)
fix markdown lint in state changelog
commit cee966b2d71fed8d14efb520ac01f3a2390b0d45
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Thu Mar 5 06:46:46 2026 -0300
remove(tests): Remove the QA test framework (#10363)
* remove `qa` folder
* update the changelogs
* update pull request number
commit 09be46ab55b626f82769bc11e8e426c03997c692
Author: Zaki Manian <zaki@iqlusion.io>
Date: Wed Mar 4 17:03:50 2026 -0800
feat: add remaining non-standard mempool transaction filters (#10314)
* feat: add remaining non-standard mempool transaction filters
Implement the remaining zcashd mempool standardness checks from
AcceptToMemoryPool / IsStandardTx / AreInputsStandard (issue #10143).
Per-transaction sigops limit (MAX_STANDARD_TX_SIGOPS = 4000):
- The sigops count now includes both legacy and P2SH sigops for mempool
transactions, matching zcashd's GetLegacySigOpCount + GetP2SHSigOpCount.
- Added p2sh_sigop_count() to zebra-script for computing P2SH sigops.
AreInputsStandard (full zcashd parity):
- Solver classification: spent output scriptPubKeys must be a known
standard type (P2PKH, P2PK, P2SH, multisig). Non-standard and
OP_RETURN spent outputs are rejected.
- Stack-depth check: scriptSig must have exactly the expected number of
push operations per ScriptSigArgsExpected. Extra data is rejected.
- P2SH redeemed script handling: standard redeemed scripts have their
inner expected args validated; non-standard redeemed scripts are
accepted if sigops <= MAX_P2SH_SIGOPS (15).
- Added debug_assert_eq checks on input/output lengths to catch silent
zip() truncation.
References:
- https://github.com/zcash/zcash/blob/v6.10.0/src/policy/policy.cpp#L137
- https://github.com/zcash/zcash/blob/v6.10.0/src/policy/policy.h
- https://github.com/zcash/zcash/blob/v6.10.0/src/main.cpp#L1819
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: are_inputs_standard should continue checking remaining inputs
When a P2SH input has a non-standard redeemed script with sigops <=
MAX_P2SH_SIGOPS, the function was returning true immediately without
validating remaining inputs. Now continues to the next input instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address CI failures and review feedback
- Add missing `inputs_are_standard` field in zebra-rpc test
- Wrap bare URLs in angle brackets for rustdoc compliance
- Update zcashd references from v6.10.0 to v6.11.0
- Fix rustfmt formatting in zebra-script tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address review feedback from #10314
- Update zcashd reference links from v6.10.0 to v6.11.0 in storage.rs
- Rename NonStandardP2shSigops to NonStandardInputs (covers more than sigops)
- Replace debug_assert_eq with assert_eq in zebra-script (zip silently
truncates in release builds if lengths mismatch)
- Move MAX_STANDARD_TX_SIGOPS, MAX_STANDARD_SCRIPTSIG_SIZE, and
MAX_STANDARD_MULTISIG_PUBKEYS from local constants to public in
zebra-script alongside MAX_P2SH_SIGOPS
- Improve doc comment on inputs_are_standard field
- Bump zcash_script from 0.4.2 to 0.4.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: move policy functions from zebra-script to storage.rs
Address review feedback from #10314:
- Move are_inputs_standard, p2sh_sigop_count, and helpers from
zebra-script to storage.rs where they belong alongside existing
output policy checks
- Eliminate classify_script/standard_script_kind duplication by
extracting shared standard_script_kind_from_bytes
- Replace inputs_are_standard field with spent_outputs on
VerifiedUnminedTx so storage.rs can compute policy checks directly
- Rename sigops to legacy_sigop_count to clarify it excludes P2SH
- Replace assert_eq! panics in policy functions with graceful
tracing::warn + safe defaults for length mismatches
- Add unit tests for policy functions in storage tests
- Update doc comments per reviewer suggestions
- Add TODO for spent_outputs alignment issue (#10346)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: extract policy module, deduplicate checks, reorder validation
Address review feedback from PR #10314:
- Move policy constants and functions to storage/policy.rs module,
keeping reject_if_non_standard_tx in storage.rs
- Inline standard_script_kind_from_code (1-line function used once)
and merge standard_script_kind_from_bytes into standard_script_kind
- Fix doc comments: "zcashd's Solver()" -> "zcash_script solver"
- Reorder checks: scriptSig size/push-only checks now run before
are_inputs_standard, so count_script_push_ops is never called
on non-push-only scripts
- Deduplicate spent_outputs length mismatch check: done once in
reject_if_non_standard_tx instead of in both are_inputs_standard
and p2sh_sigop_count
- Move unit tests for private helpers into policy module
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
commit a30f71ffd9665657d1e23895feed6f21bdeebb90
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Wed Mar 4 19:33:46 2026 -0300
fix(consensus): preserve input order in `spent_outputs` for mixed chain/mempool transactions (#10356)
fix ordering in `spent_outputs()`
commit 0ebaf6dac72e67f898fbd46e6f306cc6b4327494
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Mar 4 21:23:01 2026 +0000
docs: improve documentation quality and add CI checks (#10204)
* docs: improve documentation quality and add CI checks
Add automated documentation quality checks and fix existing issues across
the codebase documentation.
Workflow changes:
- Add `docs-check.yml` workflow with link checking (lychee), spell checking
(codespell), and markdown linting (markdownlint)
- Workflow follows project conventions: pinned action SHAs, per-job
permissions, aggregator job pattern
Documentation fixes:
- Fix markdown linting issues (MD040 code block language specifiers,
MD059 descriptive link text)
- Fix spelling errors across documentation files
- Add missing ARCHITECTURE.md for high-level codebase overview
- Add new developer documentation: onboarding guide, crate architecture
- Add ecosystem integration guide for users
- Add architectural decision records (ADRs) for Tower, verification, RocksDB
- Update CI/CD documentation with workflow diagram
Configuration:
- Add `.lychee.toml` for link checker configuration
- Add `.lycheecache` to `.gitignore`
- Update `.codespellrc` with domain-specific terminology
Note: Some URLs are excluded in `.lychee.toml` that require review:
- zips.z.cash PDF links (404 but linked from official Zcash site)
- Deprecated doc sites (doc.zebra.zfnd.org, doc-internal.zebra.zfnd.org)
- zcash/zips master branch links (pending main migration)
- New zebra.zfnd.org pages (pending book deployment)
* fix(ci): add markdownlint config and fix alls-green SHA
- Add .trunk/configs/.markdownlint.yaml to repo (was gitignored)
- Fix re-actors/alls-green SHA: use commit hash, not tag object hash
* fix(ci): disable additional markdownlint rules for existing docs
Disable MD001, MD028, MD036 rules that flag intentional formatting
patterns in existing RFC and book documentation.
* fix(docs): update stale URLs and remove RFC implementation notes
- Fix nginx URL migration (nginxinc -> nginx organization)
- Fix zcash/zips URLs (master -> main, new /zips/ directory structure)
- Fix docs.rs URL (config/struct.Config -> config/rpc/struct.Config)
- Fix internal docs URLs (doc-internal.zebra.zfnd.org -> zebra.zfnd.org/internal)
- Fix zfnd.org blog URLs (removed /blog/ path segment)
- Remove Implementation Notes from RFCs (RFCs should be static historical records)
- Clean up lychee.toml exclusions for now-working URLs
- Add CHANGELOG.md to exclude_path (contains historical dead links)
* fix(docs): resolve markdownlint errors in observability docs and CHANGELOGs
- Add language specifier to fenced code blocks (MD040)
- Add blank lines around lists (MD032)
- Add blank lines around fenced code blocks (MD031)
- Remove multiple consecutive blank lines (MD012)
commit de9a52cbd646364c35b8e1b9db32c9f8af31160d
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri Feb 27 15:23:09 2026 +0000
build(deps): bump the devops group across 1 directory with 8 updates (#10345)
Bumps the devops group with 8 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.1` | `6.0.2` |
| [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.67.2` | `2.68.10` |
| [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) | `6.1.1` | `6.2.0` |
| [rlespinasse/github-slug-action](https://github.com/rlespinasse/github-slug-action) | `5.4.0` | `5.5.0` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | `6.18.0` | `6.19.2` |
| [docker/login-action](https://github.com/docker/login-action) | `3.6.0` | `3.7.0` |
| [shimataro/ssh-key-action](https://github.com/shimataro/ssh-key-action) | `2.7.0` | `2.8.0` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.4.1` | `0.5.0` |
Updates `actions/checkout` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/8e8c483db84b4bee98b60c0593521ed34d9990e8...de0fac2e4500dabe0009e67214ff5f5447ce83dd)
Updates `taiki-e/install-action` from 2.67.2 to 2.68.10
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/0bc4cd8a3e21db4cb9519857377b0c8c5e150de5...305bebabd4457bed9b82541755f034994382465b)
Updates `release-drafter/release-drafter` from 6.1.1 to 6.2.0
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/267d2e0268deae5d44f3ba5029dd4d6e85f9d52d...6db134d15f3909ccc9eefd369f02bd1e9cffdf97)
Updates `rlespinasse/github-slug-action` from 5.4.0 to 5.5.0
- [Release notes](https://github.com/rlespinasse/github-slug-action/releases)
- [Commits](https://github.com/rlespinasse/github-slug-action/compare/6f7a8d2348e2a4aa5defafcdaafe5aef3f83bd4b...9e7def61550737ba68c62d34a32dd31792e3f429)
Updates `docker/build-push-action` from 6.18.0 to 6.19.2
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8)
Updates `docker/login-action` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/5e57cd118135c172c3672efd75eb46360885c0ef...c94ce9fb468520275223c153574b00df6fe4bcc9)
Updates `shimataro/ssh-key-action` from 2.7.0 to 2.8.0
- [Release notes](https://github.com/shimataro/ssh-key-action/releases)
- [Changelog](https://github.com/shimataro/ssh-key-action/blob/v2/CHANGELOG.md)
- [Commits](https://github.com/shimataro/ssh-key-action/compare/d4fffb50872869abe2d9a9098a6d9c5aa7d16be4...6b84f2e793b32fa0b03a379cadadec75cc539391)
Updates `zizmorcore/zizmor-action` from 0.4.1 to 0.5.0
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/135698455da5c3b3e55f73f4419e481ab68cdd95...0dce2577a4760a2749d8cfb7a84b7d5585ebcb7d)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: taiki-e/install-action
dependency-version: 2.68.10
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: release-drafter/release-drafter
dependency-version: 6.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: rlespinasse/github-slug-action
dependency-version: 5.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: docker/build-push-action
dependency-version: 6.19.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: docker/login-action
dependency-version: 3.7.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: shimataro/ssh-key-action
dependency-version: 2.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: zizmorcore/zizmor-action
dependency-version: 0.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
commit 55cd3dfb44d78a924cecd11c54cf67b56338b8f5
Author: Arya <aryasolhi@gmail.com>
Date: Fri Feb 27 10:23:04 2026 -0500
fix(network): Fixes bug in `ActiveConnectionCounter` and inaccurate connection count metrics (#10311)
* Updates ActiveConnectionCounter to track connection slots reserved for connection attempts separately from occupied connection slots representing active established peer connections.
* Uses a single channel for closed and opened connection notifications
* addresses suggestions from code review
commit cfc4c71ee4bc40da2c3f0c37b7446bbc70ac53e4
Author: Arya <aryasolhi@gmail.com>
Date: Fri Feb 27 08:26:24 2026 -0500
cleanup: Simplify `ReadStateService::call()` method (#10335)
* Simplifies `ReadStateService::call()` method.
* Renames method
* fix lint
* reduces duplicate code
* simplifies a couple more match arms
* Applies suggestions from code review
* look for tip block size in block info collection in memory or cf in rocksdb before counting the number of bytes in a block's encoding
commit 42baa9c383b3fc612c1deede77d3ef9fb6afe98e
Author: Pili Guerra <pili@zfnd.org>
Date: Fri Feb 27 14:13:44 2026 +0100
docs: Update zebra grafana dashboards path in metrics.md (#10330)
Minor update based on where sample dashboards can be found
commit ef299c28b7de44a5465e5610471f4a1d806ff4b0
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Wed Feb 25 14:25:15 2026 +0100
chore: update CHANGELOGs to reflect changes made in #10056 and #9979 (#10273)
* chore: update CHANGELOGs to reflect changes made in #10056
* chore(zebra-state): update the CHANGELOG to reflect changes made in #9979 and #9999
* Update zebra-state/CHANGELOG.md
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* Fix typo in CommitCheckpointVerifiedError entry
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 899df3d565d9fa34d918ace05badee395940b6f7
Author: Arya <aryasolhi@gmail.com>
Date: Tue Feb 17 14:40:55 2026 -0500
feat(state): Add a `AnyChainBlock` state request for querying blocks in side chains (#10325)
* adds an `AnyChainBlock` state request
* Updates changelog
* Avoids cloning any extra data in the non-finalized state when handling some state requests that only query the best non-finalized chain (perhaps at the expense of holding read locks slightly longer if the added traversals are worse than the copying, probably insignicant either way but this makes it easier to add fields to NonFinalizedState without worrying)
Adds a `cloned_mapped_watch_data()` method on `WatchReceiver`.
* Applies docs corrections, renames methods/fns, and unifies implementations for `block` and `any_chain_block` read fns (latter renamed to `any_block()`)
* Factors `spawn_blocking()` and `in_scope()` calls into a new trait method.
* Update zebra-state/src/request.rs
* Add basic tests for `AnyChainBlock` (#10327)
generate some tests
* Update zebra-state/src/request.rs
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit b581fba9315d26df5eab0b2f3bc2c37a9cc6b389
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Tue Feb 17 15:27:36 2026 -0300
release(changelog): Add changelogs for OpenRPC changes (#10326)
add changelogs for openerpc
commit c45cf2b5c621247c18199795d3834cf6d9d92baf
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Fri Feb 13 21:05:18 2026 -0300
feat(rpc): Support `rpc.discover` endpoint (#10201)
* use operpsee
* use openrpsee crate
* remove testing and demo schemas
* fix dependencies
* add todo link
commit cad81ca50b715ac7e26226ba4a865b99ca70385e
Author: Zaki Manian <zaki@iqlusion.io>
Date: Fri Feb 13 13:19:33 2026 -0800
fix: getrawtransaction compat with zcashd (#10307)
* fix: getrawtransaction compat with zcashd (#10137)
Two fixes for zcashd compatibility in the getrawtransaction RPC response:
1. Always include `expiryheight` field (zcashd returns 0 for transactions
without expiry, Zebra was omitting the field entirely via
skip_serializing_if)
2. Decode sighash type flags in scriptSig asm output (change
`.to_asm(false)` to `.to_asm(true)` so signatures display with
`[ALL]`, `[NONE]`, etc. suffixes matching zcashd)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: match zcashd expiryheight behavior for pre-Overwinter transactions
zcashd only includes `expiryheight` in RPC responses for Overwinter+
transactions (when tx.fOverwintered is true). Pre-Overwinter V1/V2
transactions omit the field entirely. The previous commit incorrectly
always included `expiryheight: 0` for all transactions.
Now uses `tx.is_overwintered()` to match zcashd:
- Overwinter+ (V3/V4/V5): include expiryheight (0 = no expiry per ZIP-203)
- Pre-Overwinter (V1/V2): omit expiryheight
zcashd ref: https://github.com/zcash/zcash/blob/cfcfcd93b/src/rpc/rawtransaction.cpp#L224-L226
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address review feedback from oxarbitrage
- Use release tag v6.11.0 instead of commit hash in zcashd references
- Add zcashd reference comments for .to_asm(true) and .to_asm(false) calls
- Remove duplicate zcashd link from implementation comment
- Move test comments to above the expiry_height fields they describe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* make doc description a link
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit cc92ca3bec47a4c757eab72899acb3e5e6034f58
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Feb 13 10:56:50 2026 +0000
docs: Add AI contribution policy and agent guidance files (#10318)
Add AGENTS.md, CLAUDE.md, copilot-instructions.md, update
CONTRIBUTING.md and PR template to establish clear policies
for AI-assisted contributions and external PR management.
commit 3b9b833ca7b32b3d95a1fec9564c3c3189705093
Author: Marek <m@rek.onl>
Date: Thu Feb 12 17:34:55 2026 +0100
add: Support pre-Canopy block subsidies (#10191)
* Refactor subsidy constants into dedicated modules
* Use qualified names instead of name suffixes
* Restrict subsidy constants modules to crate visibility
* Add Mainnet founder address constants to subsidy parameters
* Add Testnet founder address constants to subsidy parameters
* Add From implementation for Height to u64 conversion
* Add full support for calculating block subsidies
* Add full support for subsidies in getblocksubsidy RPC
* Add is_zero method to Amount type
* Update funding stream calculation for zero subsidy blocks
* Add From implementation for u32 conversion from block Height
* Refactor subsidy module
* Add From implementation for amount::Error to BlockError
* Add founder address list getter to Network implementation
* Update SubsidyError variants and rename SumOverflow to Overflow
Added new SubsidyError variants FoundersRewardNotFound and Underflow.
Renamed SumOverflow to Overflow and updated related error mappings.
Updated CHANGELOG to reflect these changes.
* Rename num_halvings function and references to halving
* Add founders_reward function for initial block subsidy distribution
* Add founders_reward_address function to subsidy module
* Support checking pre-Canopy block rewards
* Apply suggestions from code review
---------
Co-authored-by: arya2 <aryasolhi@gmail.com>
commit 86409ab08aa85763098009d5d37f7a8f31caf979
Author: VolodymyrBg <aqdrgg19@gmail.com>
Date: Wed Feb 11 22:56:08 2026 +0200
Fix/peerset banned cancel handles (#10258)
* fix: clean up banned peers in PeerSet queued state
* add test
* add test for cancel handle
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit c8b9bbabb885f89018687e2cb8b5a98b8d3de707
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Feb 11 20:20:43 2026 +0000
fix(tests): wait for process termination and use read-only state init (#10263)
* fix(state): wait for RocksDB background jobs before releasing database lock
Add `wait_for_compact()` to the database shutdown sequence to ensure all
background compaction and flush jobs complete before the database is dropped.
This prevents "Database likely already open" panics when another process
tries to open the same database immediately after this one closes.
The issue was causing intermittent CI failures in `rpc_submit_block` and
`lwd_rpc_send_tx` integration tests where a second zebrad process would
try to open the database before the first one had fully released the lock.
* fix(tests): wait for process termination after kill() before reopening database
Replace arbitrary sleep delays with explicit wait_with_output() calls after
kill() to ensure zebrad processes have fully terminated before attempting
to reopen the database. This prevents "Database likely already open" errors
that occurred when the 3-second sleep wasn't enough time for the OS to release
file locks.
The kill() function only sends SIGKILL but doesn't wait for the process to
terminate. Without waiting, the database lock might not be released yet when
the test tries to open a new database instance.
* fix(tests): use init_read_only to avoid orphaned metrics task holding database lock
The StateService::new() function spawns an infinite metrics export task
that holds a database clone forever. When load_tip_height_from_state_directory()
used zebra_state::init(), this task would keep the database lock even after
the function returned, causing "Database likely already open" panics when
zebrad #2 tried to open the same database.
Changed load_tip_height_from_state_directory() to use init_read_only()
instead of init(). The init_read_only() function creates a minimal read-only
state without spawning background tasks, so the database is properly released
when the function returns.
* fix(tests): address PR review feedback for database lock fixes
Changes based on PR review:
- Rename `load_tip_height_from_state_directory` to `load_finalized_tip_height_from_state_directory`
to accurately reflect that it returns the finalized tip (which may be behind best tip)
- Improve error message for spawn_blocking JoinError to cover panic/cancellation cases
- Propagate errors from `wait_with_output()` instead of ignoring them - ignoring defeats
the purpose of the fix since we wouldn't actually wait if it fails
- Keep `#![allow(unused_imports)]` in disk_db/tests.rs with explanatory comment - this module
is included via `proptest-impl` feature where imports appear unused (test functions are
only compiled in test mode)
* revert(state): remove wait_for_compact() from shutdown sequence
The CI failures were caused by not waiting for the zebrad process to
terminate, not by RocksDB's internal background work. The test fixes
(wait_with_output instead of sleep) address the actual root cause.
Removing wait_for_compact() because:
- It can block indefinitely during shutdown
- The OS could halt the thread anyway, making it unreliable
- The new reopen test already passes on main without it
- The WAL already ensures recoverability of in-flight writes
* fix(tests): keep sleep after wait_with_output as safety margin
Add back a short sleep after wait_with_output() calls. As noted in
review, wait() returning Ok doesn't guarantee the OS has fully
released all resources (file locks, etc.) in every edge case.
commit 887d4d4952860060484b7f8ea20bab8e69c43fb5
Author: Zaki Manian <zaki@iqlusion.io>
Date: Wed Feb 11 10:59:15 2026 -0800
fix: clarify TransparentInputNotFound error message (#10302)
* fix: clarify TransparentInputNotFound error message (#10214)
The previous message "could not find a mempool transaction input UTXO
in the best chain" was misleading in two ways:
- "mempool transaction" implied the transaction was already in the
mempool, when in fact it is being submitted to the mempool
- "in the best chain" was incomplete, since the lookup also checks
unconfirmed transactions in the mempool (zero-conf spending)
The new message "could not find transparent input UTXO in the chain or
mempool" accurately describes the lookup scope.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update zebra-consensus/src/error.rs
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 3a832540d54d133a85a2e719279a5eb6a6b2c83d
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Wed Feb 11 17:42:46 2026 +0100
refactor(zebra-chain): use `strum::EnumIter` instead of `NETWORK_UPGRADES_IN_ORDER` (#10096)
* refactor(zebra-chain): use strum EnumIter instead of NETWORK_UPGRADES_IN_ORDER
* refactor(zebra-chain): update changelog and move tests
* Update zebra-chain/CHANGELOG.md
Co-authored-by: Marek <m@rek.onl>
* Update zebra-chain/CHANGELOG.md
Co-authored-by: Marek <m@rek.onl>
* chore: update Cargo.lock
* add note about order to `NetworkUpgrade` enum
---------
Co-authored-by: Marek <m@rek.onl>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 5d274ad2c6c5839d93b078738e540513209a7463
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Wed Feb 11 08:56:46 2026 -0300
feat(delete): Remove OpenAPI spec and functionality (#10298)
* remove openapi
* changelog
* Apply suggestion from @gustavovalverde
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
* Apply suggestion from @oxarbitrage
---------
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
commit 5c31c4c2d14cb0af629d5071377fb1cc9559230f
Author: Pili Guerra <1311133+mpguerra@users.noreply.github.com>
Date: Wed Feb 11 12:56:35 2026 +0100
docs: Fix package installation command for Redis (#10299)
Minor typo fix
commit e0a4d96d8a76c3d08304a7b9084218c71117caa2
Author: Conrado <conrado@zfnd.org>
Date: Wed Feb 11 06:15:02 2026 -0300
ci: make test-docker more robust by adjusting grep pattern (#10291)
commit 70f8373faa3146f6e305516223522e6aa29dc350
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Mon Feb 9 11:29:28 2026 -0300
feat(rpc): Implement `gettxout` RPC method (#10235)
* initial approach
* apply spent filter, do fixes
* code improvments
* fix some differences with zcashd
* fix mempool path
* add spend check in mempool, improve script type display
* fix test
* remove closure
* fix unreachable message
* fmt
* Suggestions for "feat(rpc): Implement gettxout RPC method #10235" (#10237)
* - Removes boxed response
- Condenses two mempool requests into one
- Adds a TODO about ensuring the returned tip hash is valid in all responses
* remove mempool test, fix minor doc failures
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* add network argument to method
* remove unnecessary wrapper
* fix some comments
* change default mempool
* add changelog entries
---------
Co-authored-by: Arya <aryasolhi@gmail.com>
commit 16c40c152602ad9d76c98512bb71b03c630e057d
Author: Marek <m@rek.onl>
Date: Mon Feb 9 13:31:14 2026 +0100
add(chain): Add founders reward addresses (#10188)
* Refactor subsidy constants into dedicated modules
* Use qualified names instead of name suffixes
* Restrict subsidy constants modules to crate visibility
* Add Mainnet founder address constants to subsidy parameters
* Add Testnet founder address constants to subsidy parameters
---------
Co-authored-by: Arya <aryasolhi@gmail.com>
commit 7d8f3d63834b46237a478aefbe4da2e1264f3508
Author: Conrado <conrado@zfnd.org>
Date: Fri Feb 6 19:25:58 2026 -0300
set MSRV to 1.85 and actually test it in CI (#10275)
* set MSRV to 1.85 and actually test it in CI
* revert the MSRV build to do each crate, skip zebrad
commit b4f9edab09ffc990b18b7edbc0e953e4d80cefce
Author: Marek <mail@marek.onl>
Date: Fri Feb 6 19:23:26 2026 +0100
chore: Release v4.1.0 (#10281)
* Update changelog with Zebra 4.1.0 release notes and contributor list
* hotfix: do major bumps for every crate that depends on zebra-chain (#10269)
* do major bumps for every crate that depends on zebra-chain
* Update .github/PULL_REQUEST_TEMPLATE/hotfix-release-checklist.md
Co-authored-by: Marek <mail@marek.onl>
* Apply suggestions from code review
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
---------
Co-authored-by: Marek <mail@marek.onl>
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
* Update crate versions
* Update estimated release height to 3231000
* Apply suggestions from code review
Co-authored-by: Conrado <conrado@zfnd.org>
* Remove subsidy constants module entry from changelog
---------
Co-authored-by: Conrado <conrado@zfnd.org>
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
commit 22382722d900222c5315809b0ae172557bccad5d
Author: Marek <mail@marek.onl>
Date: Thu Feb 5 12:24:42 2026 +0100
chore: Update checkpoints (#10278)
* Update Mainnet checkpoints up to height 3228806
* Add new Testnet checkpoints up to block height 3824000
commit 43ad654a29298e5ce8aab2a6ee61db46f7cd9abc
Author: GarmashAlex <garmasholeksii@gmail.com>
Date: Thu Feb 5 14:24:35 2026 +0300
perf: cache restorable db versions during old db cleanup (#10245)
commit ad6274cd608a724f56d2159451609cf65b6de16f
Author: Marek <mail@marek.onl>
Date: Thu Feb 5 12:24:29 2026 +0100
chore: Update `Cargo.lock` (#10276)
Update Cargo.lock with latest dependency versions
commit 3598023b0a35819655c13d3867a9ef4d9ae72e1f
Author: Marek <mail@marek.onl>
Date: Thu Feb 5 00:16:34 2026 +0100
Bump `vergen-git2` to v9 (#10272)
Update vergen-git2 dependency to version 9 in Cargo.toml
commit 1886129b6949fb9a5a77eaecbd17f3338f82d1a2
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Feb 4 14:38:28 2026 +0000
fix(docker): replace gosu with setpriv for privilege dropping (#10270)
* fix(docker): replace gosu with setpriv for privilege dropping
The tianon/gosu:trixie image recently lost arm64 support (2026-02-04),
breaking our multi-arch Docker builds.
Replace gosu with setpriv, which:
- Is part of util-linux, already included in debian:trixie-slim
- Requires no external Docker image dependency
- Provides the same privilege dropping functionality
- Has native multi-arch support
Add explicit privilege drop test to CI that verifies the entrypoint
correctly drops from root to uid=10001(zebra).
* fix(ci): escape parentheses in grep pattern for privilege drop test
* docs: add ADR-0004 for setpriv, mark ADR-0002 as superseded
commit 18178edd00c128f906ccce9e801c025eb0b15373
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Tue Feb 3 18:21:58 2026 +0000
fix(ci): remove unsupported `continue-on-error` from reusable workflow calls (#10264)
* fix(ci): move continue-on-error inside reusable workflow for testnet jobs
`continue-on-error` is not supported at the caller job level for
reusable workflows. Move it inside the reusable workflow via a new
`allow_failure` input parameter.
This was introduced in #10251 and caused workflow parsing errors.
* fix(ci): truncate branch name and make disk creation idempotent
- Add slug-maxlength: 23 to github-slug-action to keep instance names under 63 chars
- Restore original disk naming (test_id-sha) without branch for shared data disks
- Make disk creation idempotent: reuse existing disk if present from failed runs
The data disk architecture is designed to share disks across branches for the
same commit SHA (same code = same state). Instance names include branch for
parallel execution across branches.
commit 87eca87f980122f1cdd05d1c78e9706b2ef2581d
Author: Marek <mail@marek.onl>
Date: Tue Feb 3 14:54:20 2026 +0100
change(chain): Split subsidy constants into submodules (#10185)
* Refactor subsidy constants into dedicated modules
* Use qualified names instead of name suffixes
* Restrict subsidy constants modules to crate visibility
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit c52c65d81304a6d3e281a9abe3991114a566d52d
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Tue Feb 3 14:54:14 2026 +0100
feature(zebra-chain): add new `Bounded` vec type and apply it in AdjustDifficulty (#10056)
* feature: add new bounded vec type and apply in AdjustDifficulty
* feat: Bounded now enforces a minimum length and improved documentation
* refactor: implement AtLeastOne type as a specialized version of Bounded
* refactor(zebra-chain): refactor AtLeastOne to BoundedVec type alias
commit 9ad7d3cf96edbce074d0d9668234d810dfc0cfe1
Author: syszery <66296529+syszery@users.noreply.github.com>
Date: Tue Feb 3 05:13:07 2026 +0100
refactor(state): improve error propagation for CommitCheckpointVerifiedBlock (#9979)
* refactor(state): improve error propagation for CommitCheckpointVerifiedError
* Update zebra-state/src/error.rs
implements review feedback
Co-authored-by: Arya <aryasolhi@gmail.com>
* refactor(state): align checkpoint commit error handling with semantic commit flow
* - Condenses error types and variants
- Updates `KnownBlock` request handling to check for block hashes in the state's sent hashes, fixing a bug where it's possible for part of a chain to be duplicated in the non-finalized state if a block is sent to the state via a `CommitSemanticallyVerifiedBlock` request while it's in the block write channel or before the non-finalized state channel has been updated
* Updates `write_block()` to return a `CommitCheckpointVerifiedBlock` error and removes the `CloneError` variant
* Panic if Zebra fails to write a block to rocksdb
* fix: clippy lints and remove forgotten unwrap after error refactor
* fix Request docs and Duplicate error message
* fixes fmt whitespace
* sync: consolidate duplicate/commit checks in should_restart_sync
* should_restart_sync: make duplicate/commit checks more defensive
* should_restart_sync: revert previous changes and propagate CommitBlockError
* sync: clean up should_restart_sync and add unit test for CommitBlockError::Duplicate
* refactor(zebra-state): box ValidateContextError and eliminate redundant clone
---------
Co-authored-by: Arya <aryasolhi@gmail.com>
commit 0a632428e033f99ede85dcac3a157cbf95b044ef
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Feb 2 22:41:42 2026 +0000
fix(ci): make GCP instance template creation idempotent (#10259)
* fix(ci): make GCP instance template creation idempotent
Add a check to skip instance template creation if it already exists.
GCP instance templates are immutable resources - they cannot be updated
or deleted while referenced by a MIG. Since the template name includes
the commit SHA, the same commit produces the same template configuration,
making it safe to reuse an existing template.
Without this check, workflow re-runs or concurrent triggers on the same
commit fail with "already exists" error.
* style(ci): remove backtick comment from gcloud command
commit 4caee02f9106cd43727228fbd2b3fa28e63ee8f6
Author: Marek <mail@marek.onl>
Date: Mon Feb 2 15:26:20 2026 +0100
change(CI): Run scheduled full sync on Testnet (#10251)
Make testnet integration test jobs continue on error in CI workflow
commit 6138a87bd87b5f4fde6478df3f0a930f7c3d5ac9
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Mon Feb 2 11:26:17 2026 -0300
fix(sentry): Conditional init (#10256)
conditional sentry
commit 85a7b2f95666df88a22e1be08eadcf1b6c8544bd
Author: ZolyDevMaya <38867566+zlyzol@users.noreply.github.com>
Date: Sat Jan 31 12:43:56 2026 +0100
mempool: add standardness checks and configurable OP_RETURN policy (#10224)
* mempool: add standardness checks and OP_RETURN policy knobs
* mempool: remove datacarrier standardness config switch
* mempool: standardize proptest tx inputs
* mempool: bound crawler error proptest generation
* test: add v3.1.1 generated config
* mepool: make max_datacarrier_bytes optional with default fallback
* mempool: remove mempool specification link from readme
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
* fmt, docs
* update config
---------
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
commit 295a3068bb9e9b70d923f0c9b59947651d8a18fa
Author: Alfredo Garcia <oxarbitrage@gmail.com>
Date: Fri Jan 30 16:35:25 2026 -0300
tests(qa): Add zaino to the qa rpc framework (#10199)
add zaino to the qa rpc framework
commit a58106cb031f9845a8d08e9fc6e309da750cd3bc
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Jan 30 17:52:33 2026 +0000
fix(ci): add issues write permission to release-binaries workflow (#10243)
fix(ci): add issues write permission to release-binaries failure-issue job
The failure-issue job in release-binaries.yml uses jayqi/failed-build-issue-action
to automatically create or update GitHub issues when the release workflow fails.
This action requires write access to issues, but the job was missing the necessary
permission, causing "Resource not accessible by integration" errors.
Adds `permissions: issues: write` to the failure-issue job to allow it to
create and comment on issues as intended.
commit 7db5a88112795ec9fe1e1ad9bff4c6dc9ae8c0d5
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Jan 30 17:49:41 2026 +0000
fix(ci): enable external network access for GCP deployed nodes (#10242)
Add ZEBRA_NETWORK__LISTEN_ADDR to GCP deployment workflow so nodes
listen on all interfaces for P2P connections. This allows DNS seeders
to discover and connect to these nodes.
Also fixes static IP assignment to use the correct gcloud command
(instance-configs create) which properly persists IPs across rolling
updates.
commit 9b2af18767745c4e7811779978d17275f5832bb6
Author: Pili Guerra <1311133+mpguerra@users.noreply.github.com>
Date: Fri Jan 30 14:38:47 2026 +0100
docs: Update CONTRIBUTING.md for PR handling (#10249)
Update CONTRIBUTING.md for PR handling
Clarified handling of low-effort PRs in contribution guidelines.
commit a09e55ae0cade0e4d5dde97b61491b94a683844b
Author: MozirDmitriy <dmitriymozir@gmail.com>
Date: Fri Jan 30 10:11:12 2026 +0200
perf: avoid extra clone in WtxId `TryFrom<&Vec<u8>>` (#10247)
commit e04845f3e4a0976031f35c6564aa56ea4d722371
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed Jan 28 15:06:29 2026 +0000
build(deps): bump the devops group across 1 directory with 12 updates (#10233)
* build(deps): bump the devops group across 1 directory with 12 updates
Bumps the devops group with 12 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `5.0.0` | `6.0.1` |
| [actions-rust-lang/setup-rust-toolchain](https://github.com/actions-rust-lang/setup-rust-toolchain) | `1.15.1` | `1.15.2` |
| [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.62.15` | `2.67.2` |
| [codecov/codecov-action](https://github.com/codecov/codecov-action) | `5.5.1` | `5.5.2` |
| [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) | `2.0.13` | `2.0.15` |
| [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) | `6.1.0` | `6.1.1` |
| [rlespinasse/github-slug-action](https://github.com/rlespinasse/github-slug-action) | `5.2.0` | `5.4.0` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3.11.1` | `3.12.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4.6.2` | `6.0.0` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `5.0.0` | `7.0.0` |
| [docker/metadata-action](https://github.com/docker/metadata-action) | `5.8.0` | `5.10.0` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.2.0` | `0.4.1` |
Updates `actions/checkout` from 5.0.0 to 6.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...8e8c483db84b4bee98b60c0593521ed34d9990e8)
Updates `actions-rust-lang/setup-rust-toolchain` from 1.15.1 to 1.15.2
- [Release notes](https://github.com/actions-rust-lang/setup-rust-toolchain/releases)
- [Changelog](https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions-rust-lang/setup-rust-toolchain/compare/02be93da58aa71fb456aa9c43b301149248829d8...1780873c7b576612439a134613cc4cc74ce5538c)
Updates `taiki-e/install-action` from 2.62.15 to 2.67.2
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/d6d752794628f1e1fffa3c4d3c8874e06f043d50...0bc4cd8a3e21db4cb9519857377b0c8c5e150de5)
Updates `codecov/codecov-action` from 5.5.1 to 5.5.2
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/5a1091511ad55cbe89839c7260b706298ca349f7...671740ac38dd9b0130fbe1cec585b89eea48d3de)
Updates `EmbarkStudios/cargo-deny-action` from 2.0.13 to 2.0.15
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](https://github.com/embarkstudios/cargo-deny-action/compare/f2ba7abc2abebaf185c833c3961145a3c275caad...3fd3802e88374d3fe9159b834c7714ec57d6c979)
Updates `release-drafter/release-drafter` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/b1476f6e6eb133afa41ed8589daba6dc69b4d3f5...267d2e0268deae5d44f3ba5029dd4d6e85f9d52d)
Updates `rlespinasse/github-slug-action` from 5.2.0 to 5.4.0
- [Release notes](https://github.com/rlespinasse/github-slug-action/releases)
- [Commits](https://github.com/rlespinasse/github-slug-action/compare/c33ff65466c58d57e4d796f88bb1ae0ff26ee453...6f7a8d2348e2a4aa5defafcdaafe5aef3f83bd4b)
Updates `docker/setup-buildx-action` from 3.11.1 to 3.12.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/e468171a9de216ec08956ac3ada2f0791b6bd435...8d2750c68a42422c14e847fe6c8ac0403b4cbd6f)
Updates `actions/upload-artifact` from 4.6.2 to 6.0.0
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.6.2...b7c566a772e6b6bfb58ed0dc250532a479d7789f)
Updates `actions/download-artifact` from 5.0.0 to 7.0.0
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/634f93cb2916e3fdff6788551b99b062d0335ce0...37930b1c2abaa49bbe596cd826c3c89aef350131)
Updates `docker/metadata-action` from 5.8.0 to 5.10.0
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/c1e51972afc2121e065aed6d45c65596fe445f3f...c299e40c65443455700f0fdfc63efafe5b349051)
Updates `zizmorcore/zizmor-action` from 0.2.0 to 0.4.1
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/e673c3917a1aef3c65c972347ed84ccd013ecda4...135698455da5c3b3e55f73f4419e481ab68cdd95)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.1
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: devops
- dependency-name: actions-rust-lang/setup-rust-toolchain
dependency-version: 1.15.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: taiki-e/install-action
dependency-version: 2.67.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: codecov/codecov-action
dependency-version: 5.5.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: EmbarkStudios/cargo-deny-action
dependency-version: 2.0.15
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: release-drafter/release-drafter
dependency-version: 6.1.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: devops
- dependency-name: rlespinasse/github-slug-action
dependency-version: 5.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: docker/setup-buildx-action
dependency-version: 3.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: actions/upload-artifact
dependency-version: 6.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: devops
- dependency-name: actions/download-artifact
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: devops
- dependency-name: docker/metadata-action
dependency-version: 5.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
- dependency-name: zizmorcore/zizmor-action
dependency-version: 0.4.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: devops
...
Signed-off-by: dependabot[bot] <support@github.com>
* fix: correct actions/checkout version comments from v4.2.2 to v6.0.1
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
commit 3854bc405f7efafdcb5866451cc21520fda4bdb2
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Jan 28 13:38:39 2026 +0000
feat(metrics): add RocksDB I/O latency and sync distance metrics (#10181)
* feat(metrics): add RocksDB I/O latency and sync distance metrics
Add high-priority observability metrics identified from Ethereum node
dashboard analysis:
Rust metrics:
- Batch commit latency histogram for RocksDB write operations
- Compaction metrics: pending bytes, running compactions, files per level
- Block cache usage tracking
- Sync distance gauges showing blocks behind estimated network tip
Dashboard improvements:
- New Zebra Overview dashboard with health status at a glance
- $job template variable for fleet monitoring across multiple nodes
- Sync Distance panel with semantic color thresholds
- System Resources row (CPU, memory, file descriptors)
- RocksDB dashboard: I/O Performance and Compaction sections
Color semantics fixes:
- Sync Status: SYNCING=yellow (in progress), SYNCED=green (complete)
- Sync Distance: 0-2 blocks="SYNCED", then yellow/orange/red thresholds
- Compaction Efficiency: inverted so high efficiency=green, low=red
- Database size: neutral blue (size isn't inherently good/bad)
- Added "NO DATA" state to all health panels
* docs: consolidate changelog entries per PR and fix formatting
- Consolidate multiple changelog entries into one per PR as requested
- Fix cargo fmt in sync/progress.rs
commit 9d4480c9d7f188a7a5e8e2717fc52d687af10d7f
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Wed Jan 28 11:23:17 2026 +0000
feat(metrics): add performance histograms for bottleneck identification (#10179)
* feat(metrics): add value pool, RPC, and peer health metrics
Add Prometheus metrics for operational visibility:
- Value pool metrics: transparent, sprout, sapling, orchard, deferred
balances and total chain supply (zebra-state)
- RPC metrics middleware: request counts, latencies, active requests,
and errors per method (zebra-rpc)
- Peer handshake metrics: duration histograms and failure tracking
by reason (zebra-network)
Also includes:
- Grafana dashboards for value pools and RPC monitoring
- Prometheus alert rules for critical conditions
- Updated CHANGELOG
Closes #10162, closes #10163, closes #10164, closes #10167
* chore: remove wrongly commited files to `.gitignore`
* chore: cargo fmt
* chore: clippy fix
* docs: fix changelog entries for PR #10175
- Remove #10174 entries from [Unreleased] (already in 4.0.0)
- Remove redundant "Added" prefix from entries
- Link to PR #10175 instead of issues
- Add rpc_metrics module entry to zebra-rpc changelog
* Update CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
* Update zebra-rpc/CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
* feat(metrics): add performance histograms for bottleneck identification
Add duration histograms to help identify performance bottlenecks:
Sync pipeline metrics:
- sync.stage.duration_seconds{stage} for obtain_tips/extend_tips
- sync.block.download.duration_seconds{result}
- sync.block.verify.duration_seconds{result}
Consensus batch verification metrics:
- zebra.consensus.batch.duration_seconds{verifier,result}
- Covers ed25519, redjubjub, redpallas, halo2, groth16_sapling
RocksDB database metrics (exported every 30s):
- zebra.state.rocksdb.total_disk_size_bytes
- zebra.state.rocksdb.live_data_size_bytes
- zebra.state.rocksdb.total_memory_size_bytes
- zebra.state.rocksdb.cf_disk_size_bytes{cf}
- zebra.state.rocksdb.cf_memory_size_bytes{cf}
Dashboard updates:
- Updated syncer.json with sync latency panels
- Updated transaction-verification.json with batch duration panels
- Added rocksdb.json for database monitoring
Closes #10165
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
---------
Co-authored-by: Marek <mail@marek.onl>
commit 1d13b98dcaab943e2b3df5b1c843f80ef49e87b6
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Tue Jan 27 12:58:14 2026 +0000
feat(metrics): add value pool, RPC, and peer health metrics (#10175)
* feat(metrics): add value pool, RPC, and peer health metrics
Add Prometheus metrics for operational visibility:
- Value pool metrics: transparent, sprout, sapling, orchard, deferred
balances and total chain supply (zebra-state)
- RPC metrics middleware: request counts, latencies, active requests,
and errors per method (zebra-rpc)
- Peer handshake metrics: duration histograms and failure tracking
by reason (zebra-network)
Also includes:
- Grafana dashboards for value pools and RPC monitoring
- Prometheus alert rules for critical conditions
- Updated CHANGELOG
Closes #10162, closes #10163, closes #10164, closes #10167
* chore: remove wrongly commited files to `.gitignore`
* chore: cargo fmt
* chore: clippy fix
* docs: fix changelog entries for PR #10175
- Remove #10174 entries from [Unreleased] (already in 4.0.0)
- Remove redundant "Added" prefix from entries
- Link to PR #10175 instead of issues
- Add rpc_metrics module entry to zebra-rpc changelog
* Update CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
* Update zebra-rpc/CHANGELOG.md
Co-authored-by: Marek <mail@marek.onl>
---------
Co-authored-by: Marek <mail@marek.onl>
commit 8b670c2fe34323b83385bf12380fab244669cad3
Author: Bashmunta <georgebashmunta@gmail.com>
Date: Tue Jan 27 04:05:23 2026 +0200
fix: report connection task exits as ConnectionTaskExited (#10231)
commit 650d0f25cfcf54200e1ce2d5c8e945025a68951f
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Jan 26 15:15:11 2026 +0000
fix(ci): Prevent race condition in GCP static IP assignment (#10159)
Use --no-address in instance template so instances start without
ephemeral IPs. This prevents the MIG controller from racing to restore
ephemeral IPs when assigning static IPs.
Closes #10158
commit 067e0b4e8253560d022227afab0acda820096429
Author: Conrado <conrado@zfnd.org>
Date: Wed Jan 21 15:04:03 2026 -0300
bump zebra-chain and dependent crates (#10234)
commit a2e43b7fa3521982473a8f6ddf206cbc17f5f33b
Author: Conrado <conrado@zfnd.org>
Date: Wed Jan 21 13:33:14 2026 -0300
bump versions and update changelogs for 4.0.0 release (#10230)
* bump versions and update changelogs for 4.0.0 release
* mention how to enable OpenTelemetry support
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
* bump release date to 21st
---------
Co-authored-by: Marek <mail@marek.onl>
commit 44d743b785769fc086aac481e6fa83d07b3096e8
Author: David Campbell <alchemydc@users.noreply.github.com>
Date: Tue Jan 20 13:08:14 2026 -0700
Update DNS seeders to add new Shielded Labs mainnet seeder (#10228)
* chore: add new Shielded Labs DNS mainnet seeder. remove unreachable/flaky z.cash seeders until ECC/bootstrap governance crisis is resolved.
see [forum post](https://forum.zcashcommunity.com/t/expanding-zcash-network-infrastructure-new-dns-seeders-launched-in-the-united-states-and-europe/54256) for context
* chore: re-add (now-alive) ECC mainnet seeder. list mainnet seeders in alphabetical order.
* cargo fmt
* chore: add (now alive again) ECC testnet seeder
* add new config file for tests
---------
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Conrado Gouvea <conrado@zfnd.org>
commit 6c1c79ee0dda5c0429d45c29cc86906ec0576906
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Tue Jan 20 14:53:54 2026 +0000
fix(clippy): address clippy beta lints (#10229)
- Box large error tuple in mempool downloads to fix result_large_err
- Use saturating_sub instead of checked_sub().unwrap_or_default()
commit 47e5756758740c31feeecd23211770263440c267
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Jan 19 20:00:15 2026 +0000
feat(tracing): add OpenTelemetry distributed tracing support (#10174)
* feat(tracing): add OpenTelemetry distributed tracing support
Adds feature-gated OpenTelemetry tracing with OTLP HTTP exporter:
- New `opentelemetry` feature flag in zebrad
- Configuration via environment variables:
- ZEBRA_TRACING__OPENTELEMETRY_ENDPOINT
- ZEBRA_TRACING__OPENTELEMETRY_SERVICE_NAME
- ZEBRA_TRACING__OPENTELEMETRY_SAMPLE_PERCENT
- RPC tracing middleware with SPAN_KIND_SERVER spans for Jaeger SPM
- Docker Compose observability stack (Jaeger, Prometheus, Grafana, AlertManager)
- Grafana dashboard for RPC tracing metrics
Closes #10166
Closes #10168
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
* fix: cargo fmt
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
* Apply suggestions from code review
Co-authored-by: Marek <mail@marek.onl>
---------
Co-authored-by: Marek <mail@marek.onl>
commit d6c9d334de90542124f1bde93c2df70200788838
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Mon Jan 19 11:36:53 2026 +0000
fix(ci): update Docker test grep patterns for current log format (#10225)
The previous patterns expected network name and sync progress on the
same log line, but they are now on separate lines. Use seed peer
resolution log which shows both network (mainnet/testnet seeder) and
confirms the node is starting.
commit b75e0e0d6a97505d5378ec9d2299da3a346f4a37
Author: Emerson <emerson@fastmail.com>
Date: Fri Jan 16 14:36:51 2026 -0800
Parse Zebra's config file as TOML (#10222)
Config file must be TOML (Resolves #10221)
commit 39e4b8cccb3a138ac9d19cf514badb005ed59f87
Author: Gustavo Valverde <g.valverde02@gmail.com>
Date: Fri Jan 16 17:38:00 2026 +0000
fix(ci): resolve Docker build failures and cargo deny duplicates (#10219)
Fix CI issues affecting the main branch:
1. Docker test builds failing due to disk space (since Nov 13, 2025)
- Use configurable runner via DOCKER_BUILD_RUNNER_AMD64 variable
- ZcashFoundation uses larger runner; forks fallback to ubuntu-latest
2. Cargo deny duplicate crate errors (since Jan 15, 2026)
- Add skip-tree entries for hashbrown 0.15.x and itertools 0.13.x
commit 7c9bed3e05cfb8344640db4b678330eb8bed6400
Author: Conrado <conrado@zfnd.org>
Date: Thu Jan 15 20:20:27 2026 -0300
chore(chain): update checkpoints (#10215)
commit 884c29b2b11d474b566b40ce881a2974ea4c3dc8
Author: Conrado <conrado@zfnd.org>
Date: Thu Jan 15 20:20:24 2026 -0300
chore: update dependencies (#10216)
judah-caruso
pushed a commit
to ShieldedLabs/zebra-crosslink-staging
that referenced
this pull request
Mar 10, 2026
* remove `qa` folder * update the changelogs * update pull request number
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
After zcash/integration-tests#1 we should delete our version of the framework. Close #10359
Solution
AI Disclosure
PR Checklist