Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3547e23
feat: dynamically adjust peer set in batch tx requester
deffrian Feb 20, 2026
2f0b3f6
feat: dynamically adjust peer set in batch tx requester (#20638)
AztecBot Feb 23, 2026
37616ce
chore: fix worker wallet log level (#20754)
alexghr Feb 23, 2026
9139242
chore: run spartan bench from next (#20758)
alexghr Feb 23, 2026
28b1999
fix: Deflake the gossip test (#20739)
PhilWindle Feb 23, 2026
cff34a6
chore: Removed dead code
PhilWindle Feb 23, 2026
0b0fb22
chore: Removed dead code (#20740)
mralj Feb 23, 2026
6623867
Merge branch 'next' into merge-train/spartan
Feb 23, 2026
c26bc17
Merge branch 'next' into merge-train/spartan
Feb 23, 2026
c5d569b
fix: pass log level to AVM simulator (#20762)
alexghr Feb 23, 2026
0f6577f
refactor: Consolidate transaction validators (#20631)
PhilWindle Feb 23, 2026
1a1f969
chore: double Node.js libuv thread count (#20709)
ludamad Feb 23, 2026
eda8306
chore: benchmark block building (#20767)
alexghr Feb 23, 2026
7a71187
refactor: redesign failed L1 tx store for full tx replay (#20568)
alexghr Feb 23, 2026
60e9168
Merge branch 'next' into merge-train/spartan
Feb 23, 2026
efeedfc
chore: fix yaml encoding of consensus API keys (#20772)
alexghr Feb 23, 2026
7425deb
Merge branch 'next' into merge-train/spartan
Feb 23, 2026
4d41f66
chore: deploy staging-public (#20774)
alexghr Feb 23, 2026
8735854
Merge branch 'next' into merge-train/spartan
Feb 23, 2026
2e518b1
fix: underflow in snapshot synch (#20780)
alexghr Feb 23, 2026
b9ff02d
chore: add alert on proof failures (#20778)
alexghr Feb 23, 2026
cbff413
fix: separate rejected and aborted proving jobs (#20777)
alexghr Feb 23, 2026
abdd314
chore: dedupe release notes (#20662)
alexghr Feb 23, 2026
dae85ab
chore: monitor ELU in E2E tests (#20781)
alexghr Feb 23, 2026
f6a6a12
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .github/release-please-v4.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,14 @@
"include-component-in-tag": false,
"release-search-depth": 50,
"commit-search-depth": 150,
"bootstrap-sha": "60d353cded21d7ebeed9bc64b5ae87ebba5f9a38",
"sequential-calls": true,
"changelog-sections": [
{ "type": "feat", "section": "Features", "hidden": false },
{ "type": "fix", "section": "Bug Fixes", "hidden": false },
{ "type": "chore", "section": "Miscellaneous", "hidden": false },
{ "type": "test", "section": "Miscellaneous", "hidden": false },
{ "type": "refactor", "section": "Miscellaneous", "hidden": false },
{ "type": "chore", "section": "Miscellaneous", "hidden": true },
{ "type": "test", "section": "Miscellaneous", "hidden": true },
{ "type": "refactor", "section": "Miscellaneous", "hidden": true },
{ "type": "docs", "section": "Documentation", "hidden": false }
],
"packages": {
Expand Down
24 changes: 24 additions & 0 deletions .github/workflows/deploy-network.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ on:
required: false
type: boolean
default: false
source_tag:
description: "Source tag that triggered this deploy"
required: false
type: string
workflow_dispatch:
inputs:
network:
Expand Down Expand Up @@ -59,6 +63,10 @@ on:
required: false
type: boolean
default: false
source_tag:
description: "Source tag that triggered this deploy"
required: false
type: string

concurrency:
group: deploy-network-${{ inputs.network }}-${{ inputs.namespace || inputs.network }}-${{ inputs.semver }}-${{ github.ref || github.ref_name }}
Expand Down Expand Up @@ -184,6 +192,22 @@ jobs:
echo "cluster=" >> $GITHUB_OUTPUT
fi

- name: Step summary
if: always()
run: |
{
echo "## Deploy Network"
echo ""
echo "| Item | Value |"
echo "|------|-------|"
echo "| Network | \`${{ inputs.network }}\` |"
echo "| Semver | \`${{ inputs.semver }}\` |"
echo "| Ref | \`${{ steps.checkout-ref.outputs.ref }}\` |"
if [[ -n "${{ inputs.source_tag }}" ]]; then
echo "| Source Tag | [\`${{ inputs.source_tag }}\`](https://github.com/${{ github.repository }}/releases/tag/${{ inputs.source_tag }}) |"
fi
} >> "$GITHUB_STEP_SUMMARY"

- name: Notify Slack on failure
if: failure()
env:
Expand Down
94 changes: 94 additions & 0 deletions .github/workflows/deploy-staging-public.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Deploy to staging-public

on:
push:
branches:
- v4
workflow_dispatch: {}

concurrency:
group: deploy-staging-public
cancel-in-progress: true

env:
GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}

jobs:
determine-tag:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.poll-tag.outputs.tag }}
semver: ${{ steps.poll-tag.outputs.semver }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
fetch-depth: 0

- name: Read version from manifest
id: manifest
run: |
VERSION=$(jq -r '."."' .release-please-manifest.json)
echo "version=$VERSION"
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Poll for tag at HEAD
id: poll-tag
run: |
# wait for tag to be pushed (either RC or stable release)
VERSION="${{ steps.manifest.outputs.version }}"
HEAD_SHA=$(git rev-parse HEAD)
MAX_ATTEMPTS=60
echo "Looking for tag matching v${VERSION} or v${VERSION}-rc.* at HEAD ($HEAD_SHA)"

for i in $(seq 1 $MAX_ATTEMPTS); do
git fetch --tags --force

TAG=$(git tag --points-at HEAD | grep -E "^v${VERSION}(-rc\.[0-9]+)?$" | sort -V | tail -n 1 || true)

if [ -n "$TAG" ]; then
echo "Found tag: $TAG"
SEMVER="${VERSION}"
echo "tag=$TAG" >> $GITHUB_OUTPUT
echo "semver=$SEMVER" >> $GITHUB_OUTPUT
exit 0
fi

echo "Attempt $i/$MAX_ATTEMPTS: No matching tag yet, waiting 10s..."
sleep 10
done

echo "Error: No tag found for v${VERSION} at HEAD after 10 minutes"
exit 1

wait-for-ci3:
needs: determine-tag
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 1

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22

- name: Wait for CI3
run: spartan/scripts/wait_for_ci3.ts "${{ needs.determine-tag.outputs.tag }}"

deploy:
needs: [determine-tag, wait-for-ci3]
runs-on: ubuntu-latest
steps:
- name: Trigger deploy-network on next branch
run: |
echo "Triggering deploy-network for staging-public with semver=${{ needs.determine-tag.outputs.semver }}"
gh workflow run deploy-network.yml \
--repo "${{ github.repository }}" \
--ref next \
-f network=staging-public \
-f semver="${{ needs.determine-tag.outputs.semver }}" \
-f source_tag="${{ needs.determine-tag.outputs.tag }}"
10 changes: 5 additions & 5 deletions .github/workflows/nightly-spartan-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
workflow_dispatch:
inputs:
nightly_tag:
description: "Nightly tag to use (e.g., 2.3.4-spartan.20251209). Leave empty to auto-detect."
description: "Nightly tag to use (e.g., 2.3.4-nightly.20251209). Leave empty to auto-detect."
required: false
type: string

Expand All @@ -21,7 +21,7 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
ref: merge-train/spartan
ref: next

- name: Determine nightly tag
id: nightly-tag
Expand All @@ -30,7 +30,7 @@ jobs:
nightly_tag="${{ inputs.nightly_tag }}"
else
current_version=$(jq -r '."."' .release-please-manifest.json)
nightly_tag="${current_version}-spartan.$(date -u +%Y%m%d)"
nightly_tag="${current_version}-nightly.$(date -u +%Y%m%d)"
fi
echo "nightly_tag=$nightly_tag" >> $GITHUB_OUTPUT
echo "Using nightly tag: $nightly_tag"
Expand Down Expand Up @@ -126,7 +126,7 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
ref: merge-train/spartan
ref: next

- name: Determine nightly tag
id: nightly-tag
Expand All @@ -135,7 +135,7 @@ jobs:
nightly_tag="${{ inputs.nightly_tag }}"
else
current_version=$(jq -r '."."' .release-please-manifest.json)
nightly_tag="${current_version}-spartan.$(date -u +%Y%m%d)"
nightly_tag="${current_version}-nightly.$(date -u +%Y%m%d)"
fi
echo "nightly_tag=$nightly_tag" >> $GITHUB_OUTPUT
echo "Using nightly tag: $nightly_tag"
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,74 @@ jobs:

echo "✅ Created tag: $TAG_NAME"

dedupe-release-notes:
name: Deduplicate release notes
needs: [release-please]
if: ${{ needs.release-please.outputs.release-pr }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Check if release notes branch exists
id: check-branch
env:
GH_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
run: |
NOTES_BRANCH="${{ fromJSON(needs.release-please.outputs.release-pr).headBranchName }}--release-notes"
if git ls-remote --exit-code "https://x-access-token:${GH_TOKEN}@github.com/${{ github.repository }}.git" "refs/heads/$NOTES_BRANCH" >/dev/null 2>&1; then
echo "exists=true" >> $GITHUB_OUTPUT
echo "branch=$NOTES_BRANCH" >> $GITHUB_OUTPUT
else
echo "exists=false" >> $GITHUB_OUTPUT
echo "Release notes branch $NOTES_BRANCH does not exist, skipping deduplication"
fi

- name: Checkout release notes branch
if: steps.check-branch.outputs.exists == 'true'
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
ref: ${{ steps.check-branch.outputs.branch }}
fetch-depth: 1
token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}

- name: Fetch dedupe script from target branch
if: steps.check-branch.outputs.exists == 'true'
run: |
git fetch origin ${{ github.ref_name }} --depth=1
git show origin/${{ github.ref_name }}:scripts/dedupe_release_notes.py > /tmp/dedupe_release_notes.py

- name: Configure Git
if: steps.check-branch.outputs.exists == 'true'
run: |
git config --global user.name AztecBot
git config --global user.email tech@aztecprotocol.com

- name: Deduplicate release notes
if: steps.check-branch.outputs.exists == 'true'
run: |
if [ -f release-notes.md ]; then
python3 /tmp/dedupe_release_notes.py release-notes.md
git add release-notes.md
if ! git diff --cached --quiet; then
git commit -m "chore: deduplicate release notes"
git push
fi
fi

- name: Update PR body with deduped notes
if: steps.check-branch.outputs.exists == 'true'
env:
GH_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
run: |
if [ -f release-notes.md ]; then
PR_NUMBER=${{ fromJSON(needs.release-please.outputs.release-pr).number }}
NOTES_SIZE=$(wc -c < release-notes.md)
if [ "$NOTES_SIZE" -lt 60000 ]; then
gh pr edit "$PR_NUMBER" --body "$(cat release-notes.md)"
fi
fi

update-docs:
name: Update docs
env:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/weekly-proving-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
workflow_dispatch:
inputs:
nightly_tag:
description: "Nightly tag to use (e.g., 2.3.4-spartan.20251209). Leave empty to auto-detect."
description: "Nightly tag to use (e.g., 2.3.4-nightly.20251209). Leave empty to auto-detect."
required: false
type: string

Expand All @@ -21,7 +21,7 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
ref: merge-train/spartan
ref: next

- name: Determine nightly tag
id: nightly-tag
Expand All @@ -30,7 +30,7 @@ jobs:
nightly_tag="${{ inputs.nightly_tag }}"
else
current_version=$(jq -r '."."' .release-please-manifest.json)
nightly_tag="${current_version}-spartan.$(date -u +%Y%m%d)"
nightly_tag="${current_version}-nightly.$(date -u +%Y%m%d)"
fi
echo "nightly_tag=$nightly_tag" >> $GITHUB_OUTPUT
echo "Using nightly tag: $nightly_tag"
Expand Down
1 change: 1 addition & 0 deletions ci3/docker_isolate
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ cid=$(docker run -d \
-e TMPFS_SIZE \
-e USE_HOME_TMP \
-e AVM \
-e ELU_MONITOR_FILE \
"${arg_env_vars[@]}" \
aztecprotocol/build:3.0 \
/bin/bash -c "$cmd")
Expand Down
10 changes: 10 additions & 0 deletions ci3/exec_test
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ EOF
# If the test has a verbose mode, we want it enabled.
export VERBOSE=1

# ELU monitor file path (e2e tests write event loop data here, uploaded after test finishes).
export ELU_MONITOR_FILE=$HOME/.elu_monitor_$$.log

# Run the test with timestamps via process substitution (preserves exit code)
set +e
if [ "${ISOLATE:-0}" -eq 1 ]; then
Expand All @@ -54,4 +57,11 @@ fi
code=$?
set -e

# Upload ELU data if present (written by e2e tests, absent for C++/Rust/Noir).
if [ -s "$ELU_MONITOR_FILE" ]; then
echo "ELU file: $ELU_MONITOR_FILE ($(wc -l < "$ELU_MONITOR_FILE") lines, $(wc -c < "$ELU_MONITOR_FILE") bytes)"
cat "$ELU_MONITOR_FILE" | cache_log "elufile:${NAME:-unknown}"
rm -f "$ELU_MONITOR_FILE"
fi

exit $code
1 change: 1 addition & 0 deletions release-image/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ ARG BUILD_METADATA=""
ENV BUILD_METADATA=$BUILD_METADATA

# Provide paths to bb and acvm for use in yarn-project, also create default working directories for each
ENV UV_THREADPOOL_SIZE=8
ENV BB_WORKING_DIRECTORY=/usr/src/bb
ENV BB_BINARY_PATH=/usr/src/barretenberg/cpp/build/bin/bb-avm
ENV ACVM_WORKING_DIRECTORY=/usr/src/acvm
Expand Down
2 changes: 1 addition & 1 deletion scripts/dedupe_release_notes.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def deduplicate_release_notes(input_file, output_file=None):
if output_file is None:
output_file = input_file

with open(input_file, 'r', encoding='utf-8') as f:
with open(input_file, 'r', encoding='utf-8', errors='replace') as f:
lines = f.readlines()

original_count = len(lines)
Expand Down
4 changes: 2 additions & 2 deletions spartan/aztec-node/templates/_pod-template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -287,9 +287,9 @@ spec:
- name: L1_CONSENSUS_HOST_URLS
value: {{ join "," .Values.global.l1ConsensusUrls | quote }}
- name: L1_CONSENSUS_HOST_API_KEYS
value: {{ join "," .Values.global.l1ConsensusHostApiKeys | quote }}
value: {{ .Values.global.l1ConsensusHostApiKeys | quote }}
- name: L1_CONSENSUS_HOST_API_KEY_HEADERS
value: {{ join "," .Values.global.l1ConsensusHostApiKeyHeaders | quote }}
value: {{ .Values.global.l1ConsensusHostApiKeyHeaders | quote }}
{{- end }}
- name: DATA_DIRECTORY
value: "{{ .Values.node.storage.dataDirectory }}/data"
Expand Down
4 changes: 2 additions & 2 deletions spartan/aztec-node/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ global:
l1ConsensusUrls: []
## Only when api key is required via header, otherwise just provide in l1ConsensusHostUrls
## Example: "1234abcd"
l1ConsensusHostApiKeys: []
l1ConsensusHostApiKeys: ""
## Example: "X-API-KEY"
l1ConsensusHostApiKeyHeaders: []
l1ConsensusHostApiKeyHeaders: ""

aztecImage:
repository: aztecprotocol/aztec
Expand Down
4 changes: 2 additions & 2 deletions spartan/aztec-prover-stack/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ global:

l1ExecutionUrls: []
l1ConsensusUrls: []
l1ConsensusHostApiKeys: []
l1ConsensusHostApiKeyHeaders: []
l1ConsensusHostApiKeys: ""
l1ConsensusHostApiKeyHeaders: ""

node:
nodeType: "prover-node"
Expand Down
4 changes: 2 additions & 2 deletions spartan/aztec-validator/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ global:

l1ExecutionUrls: []
l1ConsensusUrls: []
l1ConsensusHostApiKeys: []
l1ConsensusHostApiKeyHeaders: []
l1ConsensusHostApiKeys: ""
l1ConsensusHostApiKeyHeaders: ""

validator:
nodeType: "sequencer-node"
Expand Down
Loading
Loading