Skip to content

Commit f803ed2

Browse files
committed
chore: merge v5-next into backport-to-v5-next-staging
2 parents 71f8e3d + 2ec0175 commit f803ed2

2,444 files changed

Lines changed: 191942 additions & 62100 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/agents/aztec-wallet.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fi
4848

4949
# Query node version
5050
RESPONSE=$(curl -sf -X POST -H 'Content-type: application/json' \
51-
--data '{"jsonrpc":"2.0","id":1,"method":"node_getNodeInfo"}' \
51+
--data '{"jsonrpc":"2.0","id":1,"method":"aztec_getNodeInfo"}' \
5252
"$RPC_URL" 2>&1) || {
5353
echo "ERROR: Could not reach node at $RPC_URL" >&2
5454
echo "Response: $RESPONSE" >&2

.claude/skills/release-docs/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Fetch node info from the provided RPC URL:
3030

3131
```bash
3232
curl -s -X POST -H 'Content-Type: application/json' \
33-
-d '{"method":"node_getNodeInfo"}' <RPC_URL> | jq .result
33+
-d '{"method":"aztec_getNodeInfo"}' <RPC_URL> | jq .result
3434
```
3535

3636
Parse the response to extract:
@@ -214,7 +214,7 @@ These files are auto-generated — do not hand-edit them.
214214

215215
Regenerate the Node JSON-RPC API reference documentation. This script parses the
216216
TypeScript interface definitions and Zod schemas in `yarn-project/stdlib/src/interfaces/`
217-
to produce a complete markdown reference for the `node_` and `nodeAdmin_` RPC methods.
217+
to produce a complete markdown reference for the `aztec_` and `aztecAdmin_` RPC methods.
218218

219219
**Prerequisite:** `yarn-project` must be built (already done in Step 6 prerequisites).
220220

@@ -259,7 +259,7 @@ docs (Step 13), the generated content is included in the snapshot automatically.
259259
### Step 9: Resolve Missing Contract Addresses & Update Network Info
260260

261261
The `networks.md` L1 table includes contracts that are **not** returned by
262-
`node_getNodeInfo`. Before updating the tables, resolve these in three tiers.
262+
`aztec_getNodeInfo`. Before updating the tables, resolve these in three tiers.
263263

264264
Determine the L1 RPC URL from the `l1ChainId`: `1` → Ethereum mainnet,
265265
`11155111` → Sepolia. The Rollup and Registry addresses are already known from

.claude/skills/release-network-docs/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Fetch node info from the provided RPC URL:
4545

4646
```bash
4747
curl -s -X POST -H 'Content-Type: application/json' \
48-
-d '{"method":"node_getNodeInfo"}' <RPC_URL> | jq .result
48+
-d '{"method":"aztec_getNodeInfo"}' <RPC_URL> | jq .result
4949
```
5050

5151
Parse the response to extract:
@@ -87,7 +87,7 @@ git tag -l "v<nodeVersion>"
8787
### Step 3: Identify and Resolve Missing Contract Addresses
8888

8989
The `networks.md` L1 table includes contracts that are **not** returned by
90-
`node_getNodeInfo`. Resolve these addresses in three tiers:
90+
`aztec_getNodeInfo`. Resolve these addresses in three tiers:
9191

9292
#### Tier 1: Query on-chain from known contracts
9393

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: "Spartan network teardown"
2+
description: >
3+
Tear down a deployed Spartan network (delete any Chaos Mesh experiments and
4+
the Kubernetes namespace) directly on the GitHub runner. This replaces the
5+
EC2-backed `ci3.sh network-teardown` path for cleanup: teardown is pure
6+
gcloud/kubectl work, so there is no need to provision a build instance.
7+
inputs:
8+
env_file:
9+
description: "Spartan environment file name (e.g. tps-scenario), used to source CLUSTER and GCP_REGION."
10+
required: true
11+
namespace:
12+
description: "Kubernetes namespace to tear down."
13+
required: true
14+
gcp_sa_key:
15+
description: "GCP service account key JSON (secrets.GCP_SA_KEY)."
16+
required: true
17+
gcp_project_id:
18+
description: "GCP project id (secrets.GCP_PROJECT_ID)."
19+
required: true
20+
runs:
21+
using: "composite"
22+
steps:
23+
- name: Setup gcloud and install GKE auth plugin
24+
uses: google-github-actions/setup-gcloud@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db # v2.1.4
25+
with:
26+
install_components: "gke-gcloud-auth-plugin"
27+
28+
- name: Tear down network
29+
shell: bash
30+
env:
31+
GCP_SA_KEY: ${{ inputs.gcp_sa_key }}
32+
GCP_PROJECT_ID: ${{ inputs.gcp_project_id }}
33+
NAMESPACE: ${{ inputs.namespace }}
34+
ENV_FILE: ${{ inputs.env_file }}
35+
GOOGLE_APPLICATION_CREDENTIALS: /tmp/gcp-key.json
36+
CI: "1"
37+
run: |
38+
set -euo pipefail
39+
# Store the GCP service account key for gcloud auth and the teardown.
40+
set +x
41+
umask 077
42+
printf '%s' "$GCP_SA_KEY" > "$GOOGLE_APPLICATION_CREDENTIALS"
43+
jq -e . "$GOOGLE_APPLICATION_CREDENTIALS" >/dev/null
44+
45+
cd "$(git rev-parse --show-toplevel)/spartan"
46+
# Reuse the same env + auth + teardown scripts the EC2 path runs, but
47+
# execute them directly on the runner instead of via bootstrap_ec2.
48+
source ./scripts/source_env_basic.sh
49+
source ./scripts/gcp_auth.sh
50+
source_env_basic "$ENV_FILE"
51+
gcp_auth
52+
./scripts/network_teardown.sh

.github/ci3_labels_to_env.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ function main {
127127
echo "WARNING: Skipping main CI because Chonk input refresh was requested; the update step will run after this step succeeds." >&2
128128
ci_mode="skip"
129129
elif has_label "ci-release-pr"; then
130+
# Release-PR mode creates and pushes a release tag for this PR's head (ci3.sh::handle_release_pr).
131+
# In the private repo that tag triggers a private release via the safety gate below — this is the
132+
# manual way to cut a private release from a PR, alongside the nightly tag cron.
130133
ci_mode="release-pr"
131134
elif has_label "ci-full"; then
132135
ci_mode="full"
@@ -141,6 +144,9 @@ function main {
141144
elif has_label "ci-barretenberg" || [ "$target_branch" == "merge-train/barretenberg" ]; then
142145
ci_mode="barretenberg"
143146
elif [[ "${GITHUB_REF:-}" == refs/tags/v* ]]; then
147+
# A pushed semver tag is a release; REF_NAME is the tag (see ci3/source_refname). In the private
148+
# repo this is the nightly path (nightly-release-tag*.yml push v<ver>-nightly.<date> tags on next and
149+
# v5-next); the private-repo safety gate below routes it to the internal Artifact Registry.
144150
ci_mode="release"
145151
else
146152
ci_mode="fast"
@@ -149,6 +155,17 @@ function main {
149155
echo "CI_MODE=$ci_mode" >> $GITHUB_ENV
150156
echo "CI mode: $ci_mode"
151157

158+
# Private-repo safety gate. The release flow can publish to DockerHub/npmjs/crates.io/github; that
159+
# MUST NEVER run in the private fork. So whenever this repo would release — for ANY trigger (a pushed
160+
# nightly tag, a ci-release-pr tag, anything future) — force the private path: publish only the docker
161+
# image and npm packages to our internal Artifact Registry (bootstrap.sh::private_release). Keyed on
162+
# the repo name (case-insensitive) so it can't be reached in the public repo.
163+
if [ "$ci_mode" = "release" ] &&
164+
[ "$(printf '%s' "${GITHUB_REPOSITORY:-}" | tr 'A-Z' 'a-z')" = "aztecprotocol/aztec-packages-private" ]; then
165+
echo "PRIVATE_RELEASE=1" >> $GITHUB_ENV
166+
echo "SKIP_COMPAT_E2E=1" >> $GITHUB_ENV
167+
fi
168+
152169
# Determine if benchmarks should be uploaded (merge-queue, full, or full-no-test-cache modes)
153170
if [[ "$ci_mode" == "merge-queue" || "$ci_mode" == "merge-queue-heavy" || "$ci_mode" == "full" || "$ci_mode" == "full-no-test-cache" ]]; then
154171
echo "SHOULD_UPLOAD_BENCHMARKS=1" >> $GITHUB_ENV

.github/workflows/avm-circuit-inputs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ concurrency:
1515

1616
jobs:
1717
collect-avm-circuit-inputs:
18+
if: github.repository != 'AztecProtocol/aztec-packages-private'
1819
runs-on: ubuntu-latest
1920
steps:
2021
- name: Checkout
@@ -66,6 +67,7 @@ jobs:
6667

6768
avm-check-circuit:
6869
needs: collect-avm-circuit-inputs
70+
if: github.repository != 'AztecProtocol/aztec-packages-private'
6971
runs-on: ubuntu-latest
7072
steps:
7173
- name: Checkout
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Bench Inclusion Point
2+
3+
# Reusable: runs ONE inclusion-sweep TPS point against an ALREADY-DEPLOYED
4+
# network (SKIP_NETWORK_DEPLOY=1). The caller (nightly-bench-inclusion-sweep.yml)
5+
# deploys the network once and calls this for each point (1/5/10 TPS), chaining
6+
# the calls so the points run sequentially on the same network. Deploy / wait /
7+
# teardown are done once by the caller, not here.
8+
9+
on:
10+
workflow_call:
11+
inputs:
12+
tps:
13+
description: "Target TPS for this point"
14+
required: true
15+
type: string
16+
namespace:
17+
description: "k8s namespace of the already-deployed network"
18+
required: true
19+
type: string
20+
network:
21+
description: "Network env name (environments/<network>.env)"
22+
required: false
23+
type: string
24+
default: bench-inclusion-sweep
25+
docker_image:
26+
description: "Full aztec docker image (already deployed)"
27+
required: true
28+
type: string
29+
source_ref:
30+
description: "Git ref to checkout for the bench scripts"
31+
required: true
32+
type: string
33+
sweep_id:
34+
description: "Shared sweep id so the dashboard groups the points"
35+
required: true
36+
type: string
37+
38+
jobs:
39+
bench:
40+
runs-on: ubuntu-latest
41+
steps:
42+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
43+
with:
44+
ref: ${{ inputs.source_ref }}
45+
- name: Run ${{ inputs.tps }} TPS inclusion point
46+
timeout-minutes: 120
47+
env:
48+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
49+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
50+
GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
51+
BUILD_INSTANCE_SSH_KEY: ${{ secrets.BUILD_INSTANCE_SSH_KEY }}
52+
GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}
53+
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
54+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
55+
RUN_ID: ${{ github.run_id }}
56+
AWS_SHUTDOWN_TIME: 180
57+
NO_SPOT: 1
58+
SKIP_NETWORK_DEPLOY: "1"
59+
TARGET_TPS: ${{ inputs.tps }}
60+
BENCH_SWEEP_ID: ${{ inputs.sweep_id }}
61+
BENCH_SWEEP_LABEL: inclusion-sweep
62+
run: ./.github/ci3.sh network-inclusion-sweep ${{ inputs.network }} ${{ inputs.namespace }} "${{ inputs.docker_image }}"

.github/workflows/ci3.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ name: CI3
77
on:
88
workflow_dispatch:
99
push:
10+
branches:
11+
- next
1012
tags:
1113
- "v*"
1214
pull_request:
@@ -115,6 +117,9 @@ jobs:
115117
EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY: ${{ secrets.GCP_SEPOLIA_API_KEY }}
116118
EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER: "X-goog-api-key"
117119
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
120+
# Internal GCP Artifact Registry the private repo's release pushes the docker image to (see
121+
# bootstrap.sh::private_release). Empty in the public repo, where releases publish normally.
122+
INTERNAL_DOCKER_REGISTRY: ${{ vars.INTERNAL_DOCKER_REGISTRY }}
118123
MERGE_GROUP_BASE_REF: ${{ github.event.merge_group.base_ref }}
119124
PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
120125
PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
@@ -254,6 +259,7 @@ jobs:
254259
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
255260
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
256261
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
262+
INTERNAL_DOCKER_REGISTRY: ${{ secrets.INTERNAL_DOCKER_REGISTRY }}
257263
CI3_INSTANCE_PROFILE_NAME: ${{ secrets.CI3_INSTANCE_PROFILE_NAME }}
258264
CI3_SECURITY_GROUP_ID: ${{ secrets.CI3_SECURITY_GROUP_ID }}
259265
RUN_ID: ${{ github.run_id }}
@@ -269,7 +275,16 @@ jobs:
269275
tag="${tag#v}"
270276
major_version=$(./ci3/semver major "$tag")
271277
namespace="v${major_version}-scenario"
272-
docker_image="aztecprotocol/aztec:${tag}"
278+
case "$GITHUB_REPOSITORY" in
279+
AztecProtocol/aztec-packages-private)
280+
image_registry="${INTERNAL_DOCKER_REGISTRY%/}"
281+
echo "::add-mask::${image_registry}"
282+
;;
283+
*)
284+
image_registry="aztecprotocol"
285+
;;
286+
esac
287+
docker_image="${image_registry}/aztec:${tag}"
273288
else
274289
# branch name
275290
namespace=pr-$(echo "$HEAD_REF" | sed 's/[^a-z0-9-]/-/g' | cut -c1-20 | sed 's/-*$//')

.github/workflows/docs-typesense.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ jobs:
3939
run: |
4040
set -euo pipefail
4141
42+
if [ -z "$TYPESENSE_API_KEY" ] || [ -z "$TYPESENSE_HOST" ]; then
43+
echo "Typesense secrets are not configured; skipping docs search reindex."
44+
exit 0
45+
fi
46+
4247
docker run \
4348
-e "TYPESENSE_API_KEY=$TYPESENSE_API_KEY" \
4449
-e "TYPESENSE_HOST=$TYPESENSE_HOST" \

.github/workflows/fuzzing-docker-avm-build-private.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
name: Build Private Fuzzing AVM Container
22

33
on:
4-
push:
5-
branches:
6-
- next
74
workflow_dispatch:
85
inputs:
96
commit:

0 commit comments

Comments
 (0)