Skip to content

feat: run low priority eviction rule on chain_pruned#20687

Merged
PhilWindle merged 1 commit intomerge-train/spartanfrom
mrzeszutko/low-priority-eviction-after-prune
Feb 19, 2026
Merged

feat: run low priority eviction rule on chain_pruned#20687
PhilWindle merged 1 commit intomerge-train/spartanfrom
mrzeszutko/low-priority-eviction-after-prune

Conversation

@mrzeszutko
Copy link
Contributor

Summary

After a chain prune (reorg), handlePrunedBlocks() moves mined transactions back to pending, which can temporarily push the v2 pool over its configured size limit. The EvictionManager already dispatches a CHAIN_PRUNED event (via evictAfterChainPrune()), but LowPriorityEvictionRule only handled TXS_ADDED events — returning an empty result for CHAIN_PRUNED and leaving the pool over its limit until the next addPendingTxs() call.

  • Extended LowPriorityEvictionRule.evict() to also trigger on CHAIN_PRUNED events, so the pool size limit is enforced immediately after a reorg
  • Guarded context.newTxHashes access (only present on the TXS_ADDED variant of the discriminated union) with an event-type check, logging a distinct message for the chain-prune case
  • Added unit tests for CHAIN_PRUNED handling in LowPriorityEvictionRule (eviction when over limit, no-op when under limit, no-op when disabled, error handling)
  • Added integration tests in tx_pool_v2.test.ts exercising the full add → mine → set limit → prune → verify eviction flow

Test plan

  • Unit tests pass: yarn workspace @aztec/p2p test src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.test.ts (14 tests)
  • Integration tests pass: yarn workspace @aztec/p2p test src/mem_pools/tx_pool_v2/tx_pool_v2.test.ts -t 'handlePrunedBlocks' (12 tests)
  • Lint and format pass

Fixes A-560

@PhilWindle PhilWindle merged commit 8f5d35a into merge-train/spartan Feb 19, 2026
9 checks passed
@PhilWindle PhilWindle deleted the mrzeszutko/low-priority-eviction-after-prune branch February 19, 2026 15:52
github-merge-queue bot pushed a commit that referenced this pull request Feb 20, 2026
BEGIN_COMMIT_OVERRIDE
fix: flag stripping error (#20655)
chore: encode LOG_LEVEL (#20678)
chore: HA setup metrics (#20400)
chore: (A-544) reimplement tx dropping for testing (#20651)
chore(e2e): reload keystore with HA setup (#20685)
feat: adding mempool transactions (#20679)
feat: run low priority eviction rule on chain_pruned (#20687)
feat(ci): add ci-network-bench label for spartan benchmarks (#20698)
END_COMMIT_OVERRIDE
AztecBot pushed a commit that referenced this pull request Feb 20, 2026
## Summary

After a chain prune (reorg), `handlePrunedBlocks()` moves mined transactions back to pending, which can temporarily push the v2 pool over its configured size limit. The `EvictionManager` already dispatches a `CHAIN_PRUNED` event (via `evictAfterChainPrune()`), but `LowPriorityEvictionRule` only handled `TXS_ADDED` events — returning an empty result for `CHAIN_PRUNED` and leaving the pool over its limit until the next `addPendingTxs()` call.

- Extended `LowPriorityEvictionRule.evict()` to also trigger on `CHAIN_PRUNED` events, so the pool size limit is enforced immediately after a reorg
- Guarded `context.newTxHashes` access (only present on the `TXS_ADDED` variant of the discriminated union) with an event-type check, logging a distinct message for the chain-prune case
- Added unit tests for `CHAIN_PRUNED` handling in `LowPriorityEvictionRule` (eviction when over limit, no-op when under limit, no-op when disabled, error handling)
- Added integration tests in `tx_pool_v2.test.ts` exercising the full add → mine → set limit → prune → verify eviction flow

## Test plan

- [x] Unit tests pass: `yarn workspace @aztec/p2p test src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.test.ts` (14 tests)
- [x] Integration tests pass: `yarn workspace @aztec/p2p test src/mem_pools/tx_pool_v2/tx_pool_v2.test.ts -t 'handlePrunedBlocks'` (12 tests)
- [x] Lint and format pass

Fixes A-560
@AztecBot
Copy link
Collaborator

✅ Successfully backported to backport-to-v4-staging #20713.

aminsammara pushed a commit that referenced this pull request Feb 20, 2026
BEGIN_COMMIT_OVERRIDE
feat: run low priority eviction rule on chain_pruned (#20687)
feat: adding mempool transactions (#20679)
feat: check calldata against emitted hashes (#20486)
fix: hodgepodge of small things (#20720)
feat: trim attestations to the minimum required length (#20591)
feat: call syncImmediate without block number during chain prune
(#20717)
END_COMMIT_OVERRIDE

---------

Co-authored-by: mrzeszutko <mrzeszutko@users.noreply.github.com>
Co-authored-by: Thunkar <Thunkar@users.noreply.github.com>
Co-authored-by: sirasistant <5372114+sirasistant@users.noreply.github.com>
Co-authored-by: sirasistant <sirasistant@gmail.com>
aminsammara pushed a commit that referenced this pull request Feb 27, 2026
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
ludamad pushed a commit that referenced this pull request Feb 27, 2026
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
aminsammara pushed a commit that referenced this pull request Feb 27, 2026
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
aminsammara pushed a commit that referenced this pull request Feb 27, 2026
Pending Aztec Packages v4 release
---

##
[4.0.1](v4.0.0...v4.0.1)
(2026-02-26)
### � BREAKING CHANGES
* Bump l2 gas per note hash
([#20862](#20862))
* update vks
* update da gas
([#20611](#20611))
* change max private log size to 16 fields
([#20515](#20515))
* pairing points audit
([#20456](#20456))
* include_by_timestamp -> expiration_timestamp
([#20536](#20536))
### Features
* (A-302) add reloadKeystore admin RPC endpoint
([#20325](#20325))
([639368d](639368d))
* (A-451) error codes for RPC calls
([#20560](#20560))
([639368d](639368d))
* (A-514) add API key authentication for admin RPC endpoint
([#20411](#20411))
([639368d](639368d))
* add `aztec profile` command with gate count profiling
([#20695](#20695))
([83ea202](83ea202))
* add API key authentication for admin RPC endpoint
([ff4cf99](ff4cf99))
* add aztec profile flamegraph command
([#20741](#20741))
([83ea202](83ea202))
* add support for signed integers on contract functions
([#20784](#20784))
([fdd0d0d](fdd0d0d))
* adding mempool transactions
([#20679](#20679))
([43caf7c](43caf7c))
* alpha payload
([#20865](#20865))
([7a09c3c](7a09c3c))
* **archiver:** add l2 tips cache
([#20510](#20510))
([639368d](639368d))
* **archiver:** return L2 block data to avoid fetching full block
([#20503](#20503))
([639368d](639368d))
* automatically stop node from signalling
([#20416](#20416))
([639368d](639368d))
* avoid redundant serial zeroing in polynomial allocation
([#20670](#20670))
([bb844d4](bb844d4))
* call syncImmediate without block number during chain prune
([#20717](#20717))
([43caf7c](43caf7c))
* check calldata against emitted hashes
([#20486](#20486))
([43caf7c](43caf7c))
* **ci.aztec-labs.com:** CI cost and metrics tracking
([#20100](#20100))
([639368d](639368d))
* disabling peer scoring for block proposals topic
([#20577](#20577))
([6414d9b](6414d9b))
* dynamically adjust missing txs set
([#20300](#20300))
([dedf440](dedf440))
* Error codes for RPC calls
([43ed6a9](43ed6a9))
* expose blockheader getters
([#20790](#20790))
([fdd0d0d](fdd0d0d))
* Metrics added to the transaction pool
([#20477](#20477))
([639368d](639368d))
* notify slack on merge train PR merge
([#20614](#20614))
([dbbeddc](dbbeddc))
* **p2p:** add download metrics to file store tx source
([#20601](#20601))
([639368d](639368d))
* printing out public contract function debug logs in a tx
([#20749](#20749))
([83ea202](83ea202))
* Re-instate the function optionally to delete all transactions in an
epoch prune
([#20602](#20602))
([dedf440](dedf440))
* reduced hashing
([#20676](#20676))
([bf3191c](bf3191c))
* run low priority eviction rule on chain_pruned
([#20687](#20687))
([43caf7c](43caf7c))
* suspend sentinel during escape hatch
([#20471](#20471))
([639368d](639368d))
* tcmalloc enabled in docker images
([#20644](#20644))
([b87c8ae](b87c8ae))
* trim attestations to the minimum required length
([#20591](#20591))
([43caf7c](43caf7c))
* use native crypto to compute p2p message ID
([#20846](#20846))
([fdd0d0d](fdd0d0d))
* Validate num txs in block proposals
([#20850](#20850))
([f3f5438](f3f5438))
* worker thread wallet
([#20557](#20557))
([639368d](639368d))
* World state history length is now defined in checkpoints
([#20566](#20566))
([639368d](639368d))
### Bug Fixes
* (A-575) prevent checkpoint event spam in L2BlockStream on restart
([#20791](#20791))
([fdd0d0d](fdd0d0d))
* `DelayedPublicMutable` not relying on the guarantee of increasing
timestamps
([#20244](#20244))
([a178034](a178034))
* allow compiling mixed (contract + noir script) aztec project
([#20428](#20428))
([83ea202](83ea202))
* **archiver:** enforce checkpoint boundary on rollbackTo
([#20908](#20908))
([f3f5438](f3f5438))
* async blob
([#20559](#20559))
([639368d](639368d))
* async dispose() lint rule
([#20587](#20587))
([639368d](639368d))
* async world state cleanups
([#20578](#20578))
([639368d](639368d))
* attribute for L1 fee analysis for full blocks
([#20548](#20548))
([63131de](63131de))
* **avm:** alu gadget fuzzer serialisation
([#19115](#19115))
([50e778a](50e778a))
* **aztec-up:** install noir-profiler alongside nargo
([#20896](#20896))
([f3f5438](f3f5438))
* charge 3.6M for epoch verification
([#20765](#20765))
([fdd0d0d](fdd0d0d))
* **ci:** insufficient parallelism in merge-queue-heavy
([#20613](#20613))
([5bfbd67](5bfbd67))
* **ci:** preserve both attempt logs when retrying flaky tests
([#20439](#20439))
([639368d](639368d))
* default pp handling
([#20516](#20516))
([f9431cd](f9431cd))
* do not ignore test artifacts
([#20574](#20574))
([402f438](402f438))
* docs examples lockfile
([#20453](#20453))
([4bf9ddd](4bf9ddd))
* escape hatch snapshots
([#20363](#20363))
([e4712cd](e4712cd))
* **ethereum:** check timeout before consuming nonce in L1TxUtils
([#20501](#20501))
([639368d](639368d))
* **ethereum:** remove viem NonceManager to fix nonce gap after failed
sends
([#20819](#20819))
([fdd0d0d](fdd0d0d))
* evicted transactions could reappear after a node restart
([#20773](#20773))
([fdd0d0d](fdd0d0d))
* Fix checkpoint invalidation test
([#20579](#20579))
([639368d](639368d))
* Fix the epoch long proving test
([#20617](#20617))
([6414d9b](6414d9b))
* flag stripping error
([#20655](#20655))
([b87c8ae](b87c8ae))
* getVotes return empty instead of stale data
([#20756](#20756))
([fdd0d0d](fdd0d0d))
* hodgepodge of small things
([#20720](#20720))
([43caf7c](43caf7c))
* increase waitForTx timeout in epochs_invalidate_block test
([#20603](#20603))
([639368d](639368d))
* limit number of threads when verifying server-side proofs
([#20818](#20818))
([fdd0d0d](fdd0d0d))
* min expiration timestamp instead of assert
([#20554](#20554))
([fa29717](fa29717))
* misc minor contract fixes
([#20423](#20423))
([3a13674](3a13674))
* **node:** sync ws before simulating public calls
([#20499](#20499))
([639368d](639368d))
* **p2p:** fix compress option in file store and enable for tx uploads
([#20605](#20605))
([639368d](639368d))
* **p2p:** wait for GossipSub mesh formation before sending txs in e2e
tests
([#20626](#20626))
([fdd0d0d](fdd0d0d))
* pass log level to AVM simulator
([#20762](#20762))
([fdd0d0d](fdd0d0d))
* pxe native prover log level
([#20724](#20724))
([fdd0d0d](fdd0d0d))
* Reduce tx hash conversions inside tx pool
([#20829](#20829))
([fdd0d0d](fdd0d0d))
* respecting MAX_RPC_LEN limit in getAllLogsByTags
([#20543](#20543))
([c2475bd](c2475bd))
* separate rejected and aborted proving jobs
([#20777](#20777))
([fdd0d0d](fdd0d0d))
* Set Aztec slot duration as a multiple of the Ethereum slot duration
([#20608](#20608))
([dedf440](dedf440))
* set PXE sync chain tip to proposed for scenario bot
([#20530](#20530))
([639368d](639368d))
* skip default pp in sol aggregation
([#20521](#20521))
([f9431cd](f9431cd))
* stringify all bigints in pino-logger
([#20303](#20303))
([639368d](639368d))
* sync world state before forking in simulatePublicCalls
([#20544](#20544))
([f3420e0](f3420e0))
* track last seen nonce in case of stale fallback L1 RPC node
([#20855](#20855))
([83ea202](83ea202))
* **txe:** committing after txs
([#20714](#20714))
([83ea202](83ea202))
* underflow in snapshot synch
([#20780](#20780))
([fdd0d0d](fdd0d0d))
* Use async poseidon
([#20826](#20826))
([fdd0d0d](fdd0d0d))
* use ci3_labels_to_env.sh for ci-external label
([#20597](#20597))
([3efb1d9](3efb1d9))
* write pointers for environ_get and environ_sizes_get functions
([#20902](#20902))
([f3f5438](f3f5438))
* yolo debugging tweaks
([0a9d6e0](0a9d6e0))
* yolo some fd cleanup, maybe stop hangs
([43d292c](43d292c))
### Miscellaneous
* include_by_timestamp -&gt; expiration_timestamp
([#20536](#20536))
([44a33a1](44a33a1))
* update vks
([4d653dd](4d653dd))
### Documentation
* document RevertCodeEnum phases and add 120-char line width rule
([#20751](#20751))
([83ea202](83ea202))
* fix avm docs - l2 gas is not the same as mana
([#20565](#20565))
([50e778a](50e778a))
* minor clarification
([#20788](#20788))
([fdd0d0d](fdd0d0d))
* simulator readme typos
([#19701](#19701))
([50e778a](50e778a))
* some tail circuit doc comments
([#20449](#20449))
([fd509a3](fd509a3))
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants