Skip to content

Commit 5a4d1a4

Browse files
authored
chore(release): v4.3.0-rc.1 (#23306)
First release candidate for the v4.3 minor. ## What's in this PR 1. **Merge commit `68a4f598` brings v4-next into v4** — 223 non-merge commits accumulated on `v4-next` since `v4.2.1`. Merged cleanly, no conflicts. 2. **Release-prep commit `792385e9`:** - `CHANGELOG.md` — prepended a v4.3.0-rc.1 entry. 162 commits auto-categorized into BREAKING / Features / Bug Fixes / Documentation / Miscellaneous, with PR and commit links. Descriptions are raw commit subjects (uncurated). - `release-notes-4.3.0-rc.1.md` — narrative GitHub release body with Summary, Breaking Changes, Highlights (PXE/Wallet, Aztec.nr/TXE, CLI, Docs), and Notable Bug Fixes. Needs a curation pass before the release is published. - `docs/docs-developers/docs/resources/migration_notes.md` — renamed ` ## TBD` to ` ## 4.3.0-rc.1`; new empty ` ## TBD` left at the top for the next cycle. 3. **Follow-up commit `73d4c80c`:** corrects the framing of the SQLite kv-store change. Per engineer feedback, this is an opt-in additional backend (alongside LMDB / IndexedDB), not a forced migration. Removed from Breaking Changes; moved to PXE/Wallet highlights. ## Breaking changes - `aztec init` / `aztec new` counter template (#22751) - Shared protocol-circuit utilities in the history module (refactor!) ## Companion PR `bump-v4-next-to-4.4.0` opens v4-next's next minor cycle. Merge order doesn't matter, but both should land before the v4.3.0-rc.1 tag is cut.
2 parents 4aeadbe + 92a1054 commit 5a4d1a4

882 files changed

Lines changed: 46855 additions & 8625 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/skills/release-network-docs/SKILL.md

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@ self-identify its release type, ask the user to confirm.
2121

2222
**This skill does NOT:**
2323

24-
- Generate API docs (aztec-nr or TypeScript)
24+
- Generate developer API docs (aztec-nr or TypeScript)
2525
- Generate CLI reference docs
2626
- Update developer version config or cut developer versioned docs
2727
- Update migration notes
2828
- Require aztec CLI, nargo, or yarn-project build
2929

30+
**This skill DOES** regenerate the Node JSON-RPC API reference for the
31+
versioned docs (see Step 5a).
32+
3033
## Usage
3134

3235
```
@@ -165,7 +168,29 @@ Ask the user if any content changes are needed in `docs/docs-operate/`:
165168
- Operator changelog updates (if not handled by `/updating-changelog`)
166169

167170
If the user has content changes, apply them to the source files in
168-
`docs/docs-operate/`. If no content changes are needed, skip to Step 6.
171+
`docs/docs-operate/`. If no content changes are needed, skip to Step 5a.
172+
173+
### Step 5a: Regenerate Node API Reference
174+
175+
The Node JSON-RPC API reference is auto-generated from TypeScript source. It
176+
must be regenerated from the release tag's source files to ensure the versioned
177+
docs reflect the actual API at that release.
178+
179+
```bash
180+
cd docs
181+
yarn generate:node-api-reference
182+
```
183+
184+
This writes to `docs/docs-operate/operators/reference/node-api-reference.md`
185+
using the source files from the currently checked-out tag. The generator parses
186+
`yarn-project/stdlib/src/interfaces/aztec-node.ts` and
187+
`yarn-project/stdlib/src/interfaces/aztec-node-admin.ts` directly (no
188+
yarn-project build needed, but `yarn-project/node_modules/` must be installed
189+
so `npx tsx` can resolve `typescript` — run `yarn install` from `yarn-project`
190+
if needed).
191+
192+
Verify the output lists the expected number of methods and has no ungrouped
193+
methods warnings.
169194

170195
### Step 6: Build and Validate
171196

@@ -284,6 +309,10 @@ Check for stash conflicts. Then report to the user:
284309
- **No heavy prerequisites**: This skill does not require aztec CLI, nargo, or
285310
a yarn-project build. Only `yarn` (for the docs build), `curl`/`jq` (for
286311
the RPC query), and `cast` (for on-chain address queries) are needed.
312+
- **Node API reference is auto-generated**: Run `yarn generate:node-api-reference`
313+
(Step 5a) before building. The generator parses TypeScript source directly, so
314+
no yarn-project build is required — but `yarn-project/node_modules/` must exist
315+
(run `yarn install` from `yarn-project` if missing).
287316
- **Build must pass**: Do not cut versioned docs until `yarn build` succeeds.
288317
- **COMMIT_TAG needs `v` prefix**: The preprocessor uses COMMIT_TAG for GitHub
289318
URLs and git tag references. Omitting the `v` will break links in versioned

.github/ci3_labels_to_env.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ function main {
3737
echo "NO_FAIL_FAST=1" >> $GITHUB_ENV
3838
fi
3939

40+
# Handle skip-compat-e2e label (escape hatch for backwards compat test failures on release PRs)
41+
if has_label "ci-skip-compat-e2e"; then
42+
echo "SKIP_COMPAT_E2E=1" >> $GITHUB_ENV
43+
fi
44+
4045
# Determine CI mode based on event, labels, and target branch
4146
local ci_mode
4247
if [ "${GITHUB_EVENT_NAME:-}" == "merge_group" ] || has_label "ci-merge-queue"; then
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Validates that a published Aztec CLI release can be installed and used end-to-end.
2+
# Runs after CI3 completes a tag release (via workflow_run), or manually via workflow_dispatch.
3+
name: Aztec CLI Acceptance Test
4+
5+
on:
6+
workflow_dispatch:
7+
inputs:
8+
version:
9+
description: "Version to install (e.g. latest, nightly, 4.3.0, 4.3.0-nightly.20260420)"
10+
required: true
11+
type: string
12+
workflow_run:
13+
workflows: ["CI3"]
14+
types:
15+
- completed
16+
branches:
17+
- "v*"
18+
19+
jobs:
20+
release-acceptance:
21+
runs-on: ubuntu-latest
22+
if: >-
23+
github.event_name == 'workflow_dispatch' ||
24+
(github.event_name == 'workflow_run'
25+
&& github.event.workflow_run.conclusion == 'success'
26+
&& !contains(github.event.workflow_run.head_branch, '-commit.'))
27+
env:
28+
VERSION: ${{ github.event.inputs.version || github.event.workflow_run.head_branch }}
29+
steps:
30+
- name: Checkout
31+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
32+
with:
33+
ref: ${{ github.event.workflow_run.head_sha || github.sha }}
34+
35+
# Node is only used to run the .ts harness in run-test.sh, which needs >=22.18 for TS
36+
# type-stripping. The aztec CLI installer manages its own node version independently.
37+
- name: Setup Node.js
38+
uses: actions/setup-node@v4
39+
with:
40+
node-version: 22
41+
42+
- name: Run Aztec CLI acceptance test
43+
timeout-minutes: 30
44+
run: ./aztec-up/test/aztec-cli-acceptance-test/run-test.sh
45+
46+
- name: Notify Slack on success
47+
if: success() && github.event_name != 'workflow_dispatch'
48+
env:
49+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
50+
run: |
51+
export CI=1
52+
./ci3/slack_notify \
53+
"Aztec CLI Acceptance Test passed for version ${VERSION} :white_check_mark:" \
54+
"#team-fairies"
55+
56+
- name: Notify Slack and dispatch ClaudeBox on failure
57+
if: failure() && github.event_name != 'workflow_dispatch'
58+
env:
59+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
60+
GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
61+
run: |
62+
RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
63+
export CI=1
64+
./ci3/slack_notify_with_claudebox_kickoff "#team-fairies" \
65+
"Aztec CLI Acceptance Test FAILED (version ${VERSION}): <${RUN_URL}|View Run>" \
66+
"Aztec CLI acceptance test failed for version ${VERSION}. CI run: ${RUN_URL}. Investigate the failure and explain the root cause." \
67+
--link "$RUN_URL"

.github/workflows/ci3.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,3 +288,90 @@ jobs:
288288
AWS_SHUTDOWN_TIME: 180
289289
run: |
290290
./.github/ci3.sh network-tests-kind
291+
292+
# Backwards compatibility e2e tests.
293+
# Runs e2e tests with contract artifacts from every prior stable release to validate
294+
# that new client code works with old contract artifacts ("new pxe / old contracts").
295+
# Blocking for stable/RC releases: ci-release-publish requires this job to pass before
296+
# publishing. Observational for nightlies: runs, but continue-on-error keeps the workflow
297+
# green and ci-release-publish's condition publishes nightlies regardless of the result.
298+
# Escape hatch: ci-skip-compat-e2e label makes failures non-blocking on release PRs.
299+
ci-compat-e2e:
300+
runs-on: ubuntu-latest
301+
needs: [ci]
302+
if: |
303+
always()
304+
&& (needs.ci.result == 'success' || needs.ci.result == 'skipped')
305+
&& github.event.pull_request.head.repo.fork != true
306+
&& github.event.pull_request.draft == false
307+
&& (
308+
(startsWith(github.ref, 'refs/tags/v') && !contains(github.ref_name, '-commit.'))
309+
|| contains(github.event.pull_request.labels.*.name, 'ci-compat-e2e')
310+
|| contains(github.event.pull_request.labels.*.name, 'ci-release-pr')
311+
)
312+
# Non-blocking for nightlies and when ci-skip-compat-e2e escape hatch is applied.
313+
continue-on-error: ${{ contains(github.ref_name, '-nightly.') || contains(github.event.pull_request.labels.*.name, 'ci-skip-compat-e2e') }}
314+
steps:
315+
- name: Checkout
316+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
317+
with:
318+
ref: ${{ github.event.pull_request.head.sha || github.sha }}
319+
320+
- name: Run Backwards Compatibility E2E Tests
321+
timeout-minutes: 330
322+
env:
323+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
324+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
325+
GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
326+
BUILD_INSTANCE_SSH_KEY: ${{ secrets.BUILD_INSTANCE_SSH_KEY }}
327+
GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}
328+
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
329+
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
330+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
331+
CI3_INSTANCE_PROFILE_NAME: ${{ secrets.CI3_INSTANCE_PROFILE_NAME }}
332+
CI3_SECURITY_GROUP_ID: ${{ secrets.CI3_SECURITY_GROUP_ID }}
333+
RUN_ID: ${{ github.run_id }}
334+
AWS_SHUTDOWN_TIME: 300
335+
run: ./.github/ci3.sh compat-e2e
336+
337+
# Publishes the release (npm, Docker, GitHub release, aztec-up scripts, etc.).
338+
# Gated on ci-compat-e2e: a compat regression blocks stable/RC publishing. Nightlies
339+
# publish regardless — compat-e2e runs there observationally. Dev `-commit.` tags from
340+
# the ci-release-pr flow never reach this job (they are not real releases).
341+
ci-release-publish:
342+
runs-on: ubuntu-latest
343+
environment: master
344+
needs: [ci, ci-compat-e2e]
345+
if: |
346+
startsWith(github.ref, 'refs/tags/v')
347+
&& !contains(github.ref_name, '-commit.')
348+
&& needs.ci.result == 'success'
349+
&& (
350+
contains(github.ref_name, '-nightly.')
351+
|| needs.ci-compat-e2e.result == 'success'
352+
)
353+
steps:
354+
- name: Checkout
355+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
356+
with:
357+
ref: ${{ github.sha }}
358+
359+
- name: Run Release Publish
360+
env:
361+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
362+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
363+
GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
364+
BUILD_INSTANCE_SSH_KEY: ${{ secrets.BUILD_INSTANCE_SSH_KEY }}
365+
GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}
366+
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
367+
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
368+
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
369+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
370+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
371+
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
372+
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
373+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
374+
CI3_INSTANCE_PROFILE_NAME: ${{ secrets.CI3_INSTANCE_PROFILE_NAME }}
375+
CI3_SECURITY_GROUP_ID: ${{ secrets.CI3_SECURITY_GROUP_ID }}
376+
RUN_ID: ${{ github.run_id }}
377+
run: ./.github/ci3.sh release-publish

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "4.2.0"
2+
".": "4.3.0"
33
}

.test_patterns.yml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,19 @@ tests:
167167
- *palla
168168

169169
# yarn-project tests
170+
# Attempt to catch all kv-store browser test failures (consider them quarantined for now)
171+
- regex: "yarn-project/kv-store"
172+
error_regex: "vitest"
173+
owners:
174+
- *martin
170175
- regex: "yarn-project/kv-store"
171176
error_regex: "Could not import your test module"
172177
owners:
173178
- *grego
174179
- regex: "yarn-project/kv-store"
175180
error_regex: "timeout: sending signal TERM to command"
176181
owners:
177-
- *alex
182+
- *martin
178183
- regex: "yarn-project/kv-store"
179184
error_regex: "Failed to fetch dynamically imported module"
180185
owners:
@@ -364,3 +369,19 @@ tests:
364369
error_regex: "Cannot find module '@aztec/sequencer-client/config'"
365370
owners:
366371
- *palla
372+
373+
# http://ci.aztec-labs.com/153f5dcbb0f3799c
374+
- regex: "src/e2e_offchain_payment.test.ts"
375+
error_regex: "✕ reprocesses an offchain-delivered payment after an L1 reorg"
376+
owners:
377+
- *martin
378+
379+
- regex: "yarn-project/scripts/run_test.sh bb-prover/src/avm_proving_tests/avm_"
380+
error_regex: "timeout: sending signal"
381+
owners:
382+
- *charlie
383+
384+
- regex: "run_test.sh simple tx_stats_bench"
385+
error_regex: "✕ verifies transactions at 10 TPS"
386+
owners:
387+
- *phil

0 commit comments

Comments
 (0)