Skip to content

feat: merge-train/spartan#20382

Merged
ludamad merged 49 commits intonextfrom
merge-train/spartan
Feb 12, 2026
Merged

feat: merge-train/spartan#20382
ludamad merged 49 commits intonextfrom
merge-train/spartan

Conversation

@AztecBot
Copy link
Collaborator

@AztecBot AztecBot commented Feb 11, 2026

BEGIN_COMMIT_OVERRIDE
chore: Should fix proving benchmarks by reducing committee lag (#20381)
chore: standalone forge broadcast wrapper with retry, timeout, and anvil detection (#19824)
chore: benchmark tx val (#20227)
fix: cloudflare terraform API (#20387)
fix: HA e2e test order & retries (#20383)
fix: incorporate forge broadcast review feedback (#20390)
refactor(p2p): rewrite FileStoreTxCollection with retry, backoff, and shared worker pool (#20317)
chore(ci): run ci job on draft PRs (#20395)
feat(bot): allow anchoring txs to proposed chain (#20392)
feat(p2p): slot-based soft deletion for TxPoolV2 (#20388)
chore: add setup-container script (#20309)
feat: build aztec-prover-agent with baked-in CRS (#20391)
fix!: change protocol contracts deployer to be the contract address (#20396)
feat(p2p): enforce minimum tx pool age for block building (#20384)
refactor(sentinel): update validator statuses to checkpoint-based naming (#20372)
chore: log tx hash (#20413)
chore: update l1 fee analysis to measure blob count in L1 blocks (#20414)
chore: set up tx file store in next-net (#20418)
chore(ci): gate draft PRs from CI, allow override with ci-draft label (#20426)
fix: stabilize writing_an_account_contract.test.ts (#20420)
END_COMMIT_OVERRIDE

This should fix the timeouts on the test. 
We reduce the lag by 1 epoch or about ~40 minutes and bump up the
timeout by 30 minutes.
Since we run the test for a full epoch, we add the buffer in case of
worst case hitting epoch boundary (which is usually hit due to wallet
setup).

- includes updates to .env files that reference the old lag variable
- bump up benchmark timeout by 30 minutes

Co-authored-by: danielntmd <danielntmd@nethermind.io>
@socket-security
Copy link

socket-security bot commented Feb 11, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​ox@​0.8.3 ⏵ 0.8.99910099 +196 -1100

View full report

PhilWindle and others added 18 commits February 11, 2026 10:53
Deleted transactions (eviction, validation failure, failed execution) are now
slot-soft-deleted instead of immediately hard-deleted. They remain in the
database for the rest of the current slot so other nodes can still fetch them
via reqresp, then are cleaned up when prepareForSlot advances to a new slot.

This coexists with the existing prune-based soft deletion which keeps txs from
pruned blocks until their original mined block is finalized.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
add benchmarks around tx validators
Fix terraform API usage for R2 lifecycle rules
2 fixes:
- Run "should distribute work across multiple HA nodes" test last
because it kills nodes
- Update ci scripts to allow for option to kill docker-compose volumes
so the test can be retried
… shared worker pool (#20317)

## Summary

- Rewrites `FileStoreTxCollection` with a shared worker pool,
deadline-based expiry, and retry with round-robin and exponential
backoff
- Splits into two instances (fast/slow) with configurable worker counts
and backoff settings via 6 new config fields
- Extracts `getProofDeadlineForSlot` as a public free function from
`SlowTxCollection` for reuse
- Workers pull entries with priority (fewest attempts first), skip
entries in backoff, and remove expired entries

## Test plan

- All 10 `file_store_tx_collection.test.ts` tests pass (updated for new
interface, added retry/backoff/deadline/clearPending tests)
- All 22 `tx_collection.test.ts` tests pass (updated for two file store
instances)
- `yarn build` succeeds, `yarn format p2p` and `yarn lint p2p` clean
- Tests use deterministic waits (`waitForSourceCalls`,
`waitForTxsAdded`) instead of blind sleeps to avoid flakiness

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Alex Gherghisan <alexghr@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Updates spartan scripts to config the PXE_SYNC_CHAIN_TIP variable that
controls the chain tip used for anchoring txs in the bot.

Also updates the bot so it can be configured to follow (as in wait until
each tx in mined in) the "proposed" or "checkpointed" chain, rather than
the "pending" chain, which is an outdated name. Still, for backwards
compatibility, we still allow "pending" and map it to "checkpointed".

Fixes A-539
## Summary

- Deleted transactions (eviction, validation failure, failed execution)
are now slot-soft-deleted instead of immediately hard-deleted, remaining
in the database for the rest of the current slot so other nodes can
still fetch them via reqresp
- `prepareForSlot` cleans up slot-soft-deleted txs from previous slots
- Prune-based soft deletion (for txs from reorged blocks) is unaffected
— those txs survive across slots until finalized
- Re-added txs correctly clear their soft-deleted status, preserving
prune tracking when applicable

## Test plan

- 32 deleted_pool unit tests pass (15 new for slot-based deletion)
- 186 tx_pool_v2 integration tests pass (9 new slot-based tests
including edge cases for re-addition after both slot and prune soft
deletion)
- 25 compat tests pass (2 updated assertions)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Single bash command that installs all dependencies plus a
network-isolated Claude in a local ubuntu lxc container. Put together
using the devcontainer dockerfile and the official claude container
dockerfile as guidelines.
This PR builds a new image during release (tagged) builds specifically
for the prover-agent with pre-baked CRS. This makes the image larger (by
about 2GB) but will reduce the time spent on downloading the CRS at
boot.

Fix A-536
PhilWindle and others added 5 commits February 11, 2026 18:09
## Summary
- Adds a `receivedAt` timestamp to `TxMetaData` so the pool knows when
each tx was first received
- Adds `getEligiblePendingTxHashes(maxReceivedAt)` to the pool
interface, filtering out txs that are too new
- Adds `iterateEligiblePendingTxs()` to the P2P client, which computes
the cutoff from `minTxPoolAgeMs` config (default 2000ms, env
`P2P_MIN_TX_POOL_AGE_MS`)
- Updates the sequencer's `CheckpointProposalJob` to use
`iterateEligiblePendingTxs()` instead of `iteratePendingTxs()`
- Existing `iteratePendingTxs` is unchanged — still used by
`AztecNode.getMaxPriorityFees()` which should see all pending txs

This gives the network time to propagate transactions before a proposer
includes them in a block. Hydrated txs get `receivedAt: 0` so they're
always eligible immediately on restart.

## Test plan
- [x] `yarn build` passes
- [x] `yarn workspace @aztec/p2p test
src/mem_pools/tx_pool_v2/tx_pool_v2.test.ts` — 164 tests pass
- [x] `yarn workspace @aztec/sequencer-client test
src/sequencer/checkpoint_proposal_job.test.ts` — 26 tests pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)
…ing (#20372)

## Summary

- Decouples block and checkpoint concepts in the sentinel for
multi-block-per-slot support
- Renames `block-mined`/`block-proposed` to
`checkpoint-mined`/`checkpoint-proposed`
- Splits `block-missed` into `blocks-missed` (no block proposals at all)
and `checkpoint-missed` (blocks proposed but checkpoint not attested)
- Adds `hasBlockProposalsForSlot` to P2P attestation pool and client to
distinguish the two missed cases
- Updates `ValidatorStatusType` from `'block' | 'attestation'` to
`'proposer' | 'attestation'`
- Bumps sentinel store schema version (2 → 3) with new serialization
mappings
- Updates all tests and slasher README documentation

## Test plan

- Sentinel unit tests pass (36/36)
- Store unit tests pass (8/8)
- RPC interface tests pass (60/60)
- E2E sentinel tests updated for new status names

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Fixes A-527

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Collaborator

@ludamad ludamad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Auto-approved

@AztecBot
Copy link
Collaborator Author

🤖 Auto-merge enabled after 4 hours of inactivity. This PR will be merged automatically once all checks pass.

@AztecBot AztecBot added this pull request to the merge queue Feb 12, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Feb 12, 2026
AztecBot and others added 13 commits February 12, 2026 04:56
Log tx hashes when removing txs from the mempool
related to A-351.

Adds some more metrics for fee analysis to count number of blobs that were in the finalized L1 block.

This will help get better stats on inclusion rate per strategy during high blob congestion
)

related to A-351.

Adds some more metrics for fee analysis to count number of blobs that
were in the finalized L1 block.

This will help get better stats on inclusion rate per strategy during
high blob congestion
Modifies the filestore to upload tx objects to
`txs/aztec-<l1_chain_id>-<rollup_address>` (just like blobs and
snapshots) and sets up next-net to upload/download from file store.

Fix A-505
…#20426)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@ludamad ludamad enabled auto-merge February 12, 2026 14:13
Copy link
Contributor

IlyasRidhuan commented Feb 12, 2026

This stack of pull requests is managed by Graphite. Learn more about stacking.

@ludamad ludamad added this pull request to the merge queue Feb 12, 2026
Merged via the queue into next with commit 0ae5d93 Feb 12, 2026
22 checks passed
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.

8 participants