Skip to content

chore: port-to-v6 rolling port - #25549

Merged
iakovenkos merged 3 commits into
v6from
cb/port-to-v6
Sep 29, 2026
Merged

iakovenkos merged 3 commits into
v6from
cb/port-to-v6

Conversation

@AztecBot

@AztecBot AztecBot commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Rolling integration PR for changes labelled port-to-v6 on next. Each merged source PR is cherry-picked onto cb/port-to-v6 as its own commit, keeping (#N) in the title.

Ported

  • #25547 fix: raise playground chunk size limit to 5350 KB (clean pick)
  • #25543 fix(acir_tests): refresh yarn.lock for bb.js's proper-lockfile dependency (clean pick; not labelled, pulled in because v6 is red without it)

v6-only

  • test(labs): skip mainnet compatibility and pin testnet compatibility to v6. Decided in #backports by Santiago: mainnet isn't deployed yet; testnet is deployed from v6 and will be redeployed from it later.
    • labs-patches/test_cmd_skip drops aztec/src/mainnet_compatibility.test.ts from the labs test commands collected here.
    • New labs patch 0009 re-pins testnet_compatibility.test.ts to what v6 builds:
      • VK tree root 0x2d89003cc2dc62b06f07d83d3635c66c63fc43668369d30e7ee516f908ee10e3
      • protocol contracts hash 0x0030cdae9792549b9edb5b865f4e10e91bb87565f22ab80d405213f7e991b378
      • both taken from this PR's failing CI run on 347da12
    • The historical genesis root already matched and is unchanged.

Notes

  • fix: raise playground chunk size limit to 5350 KB #25547 adds labs-patches/0008-fix-raise-playground-chunk-size-limit-to-5350-KB.patch. The context it patches (playground/vite.config.ts, general maxSizeKB: 5300) matches v6's Labs pin 54e3383, so the series applies there.
  • v6 carries 741955e (bb.js depends on proper-lockfile) but not the matching barretenberg/acir_tests/yarn.lock refresh, so yarn install --immutable in bb-acir fails with YN0028 on any PR into v6. fix(acir_tests): refresh yarn.lock for bb.js's proper-lockfile dependency #25543 is that refresh from next.
  • The compat tests only run for release-line targets (v6, v6-next, backport-to-v6-*), never on next. So any later breaking protocol/kernel change ported to v6 has to re-pin testnet in the same PR.
  • The private counterpart, which skips both tests in aztec-packages-private, is AztecProtocol/aztec-packages-private#907.

Testing

  • ./labs-patches/bootstrap.sh check: the series (0008, 0009) applies cleanly to 54e3383c4b.
  • scripts/labs_env.sh + labs/ci3/prefix_test_cmds drop the mainnet command and keep the testnet one.
  • The testnet test itself runs on this PR's CI.

🤖 Generated with Claude Code


Created by claudebox · group: slackbot · Slack thread

The playground build can produce a 5300.70 KB barretenberg threads
chunk, exceeding the 5300 KB general chunk limit. Raise that limit to
5350 KB through the Labs patch series; retain the stricter entrypoint
limit.

Validation: `labs-patches/bootstrap.sh check` passed against the public
repository's Labs pin, and `git diff --check` passed. The original
change was validated with a full playground build and size-boundary
checks; the full build was not repeated for this port.

(cherry picked from commit f7638fb)
@AztecBot AztecBot added ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure claudebox Owned by claudebox. it can push to this PR. labels Sep 28, 2026
charlielye and others added 2 commits September 28, 2026 15:48
…ency (#25543)

`barretenberg/acir_tests` consumes bb.js through a portal, and bb.js
gained `proper-lockfile` (plus its `retry` dependency) with the
concurrent-safe CRS cache fill in #25493 without this lockfile
following. A cold `yarn install --immutable` in
`barretenberg/acir_tests` fails on the two missing resolutions.

Regular CI kept passing because its node_modules cache hit; the
2026-09-26 nightly release
(https://github.com/AztecProtocol/aztec-packages/actions/runs/36216969684)
missed the cache and failed in `bb-acir` on exactly this, so no nightly
can publish until it lands.

Only `yarn.lock` changes (the two resolutions added).

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

https://claude.ai/code/session_012EUKia6wteDk9kZZuT2Gju

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 00e2f3f)
…to v6

Mainnet isn't deployed from v6 yet, so its compatibility test has nothing to
pin against: labs-patches/test_cmd_skip drops it from the collected labs
test commands.

Testnet is deployed from v6, so its compatibility test now pins the VK tree
root and protocol contracts hash that v6 builds (labs patch 0009). The
historical genesis root already matched and is unchanged.
@iakovenkos
iakovenkos marked this pull request as ready for review September 29, 2026 09:47
@iakovenkos
iakovenkos requested a review from a team September 29, 2026 09:47
@iakovenkos
iakovenkos merged commit 98a46e2 into v6 Sep 29, 2026
13 checks passed
@iakovenkos
iakovenkos deleted the cb/port-to-v6 branch September 29, 2026 09:57
@AztecBot AztecBot mentioned this pull request Oct 2, 2026
15 tasks done
IlyasRidhuan added a commit that referenced this pull request Oct 4, 2026
Rolling integration PR for changes labelled `port-to-v6` on `next`. Each
merged source PR is cherry-picked onto `cb/port-to-v6` as its own
commit, keeping `(#N)` in the title.

## Ported

- [x]
[#25536](#25536)
fix(kernels): charge the teardown call's AVM startup gas (pick applied
without conflicts, plus two `fix(port)` commits)
- `fix(port)` 1 drops
`labs-patches/0001-fix-pxe-charge-the-teardown-call-s-AVM-startup-gas-i.patch`,
which the pick brings along. The labs pin on `v6` (`a0d73c0aed`) already
carries that PXE change upstream as aztec-labs-eng/aztec-node#364, so
the patch has nothing to apply to. The Noir side is `gas_meter.nr` and
`validate_gas_used_tests.nr`, both identical to `next`.
- `fix(port)` 2 adds labs patch
`0001-test-pin-testnet-compatibility-to-the-v6-kernel-VK-t.patch`, which
re-pins the VK tree root in
`labs/yarn-project/aztec/src/testnet_compatibility.test.ts`.
- [x]
[#25576](#25576)
fix(p2p): require exact contract class log length in DataTxValidator
(labs patch) (clean pick)
- Adds labs patch
`0010-fix-p2p-require-exact-contract-class-log-length-in-D.patch`. Both
files it touches (`data_validator.ts`, `data_validator.test.ts`) have
the same pre-image blobs on the `v6` labs pin as on `next`'s.
- [x]
[#25577](#25577)
fix(l1): include the Noir compiler in the l1-contracts cache hash (clean
pick)
- `noir/bootstrap.sh hash` is what the other Noir consumers on `v6`
already use (`avm-transpiler`, `noir-protocol-circuits`, `acir_tests`).
- [x]
[#25578](#25578)
fix(circuits): key the VK cache on its real inputs and never cache the
L1 verifier (clean pick)
- With #25577 and this one applied,
`noir-protocol-circuits/bootstrap.sh` and `scripts/circuit_kind.test.sh`
are identical to `next` at b0a7559.
- [x]
[#25579](#25579)
fix(private-kernel): a surviving nullifier link may only resolve to a
non-revertible note hash (pick applied without conflicts, plus one
`fix(port)` commit)
- It changes the `private-kernel-reset-tail-to-public` circuits, so the
VK tree root moves again. The `fix(port)` commit updates labs patch 0001
to the new root.
- [x]
[#23587](#23587)
fix: anchor Grumpkin SRS to pinned chunk hashes on load (clean pick)
- All eight files end up identical to `next` at 08f90e6, as does the
rest of `barretenberg/cpp/src/barretenberg/srs`. No later commit on
`next` touches them.
- [x]
[#25580](#25580)
test(private-kernel): reject a duplicate nullifier index hidden behind
an inactive squashing hint (clean pick)
- Test-only: one test and its import in
`validate_transient_data_squashing_hints.nr`.
- With #25536, #25579 and this one applied, the `private-kernel-lib`
crate is identical to `next` at b1b6871.
- [x]
[#25530](#25530)
chore: move away from auto-close-issues.yml (clean pick)
- Deletes `.github/workflows/auto-close-issues.yml` and
`scripts/auto_close_issues.py`. Nothing else on `v6` invokes either.
- [x]
[#25566](#25566)
docs(types): document that poseidon2_hash_bytes does not commit the byte
length (clean pick)
- A doc comment and three unit tests in `types/src/hash.nr`, which ends
up identical to `next` at 4f4bef8.
- [x]
[#25582](#25582)
fix: Avoid early proof submission prover griefing (clean pick)
- [x]
[#25585](#25585)
test: cover prover registration upgrade paths (clean pick)
- Review follow-up to #25582: forge tests, a test wrapper
simplification, and one corrected comment in `RewardLib.sol`. No
contract logic changes.
- [x]
[#25570](#25570)
refactor(l1): remove the built-in checkpoint reward overrides (clean
pick)
- `v6` carries the override stack this removes (#25312, #25426, #25461)
and the proof-submission optimizations it keeps (#25404, #25406,
#25419).
- Nothing outside `l1-contracts` references what it removes
(`registryRewardOverrides`, `AZTEC_REGISTRY_REWARD_OVERRIDE_*`,
`getRegistryRewardOverrides`, the four `RewardLib__*` errors): no hits
in this repo or in the `v6` labs pin `a0d73c0aed`.
- [x]
[#25571](#25571)
feat(l1): pluggable sequencer reward calculator (AZIP-28) (clean pick)
- Adds `ISequencerRewardCalculator`, `SequencerRewardCalculatorLib`, the
`sequencerRewardCalculator` rollup config field,
`setSequencerRewardCalculator` / `getSequencerRewardCalculator`, and the
optional `AZTEC_SEQUENCER_REWARD_CALCULATOR` deploy variable (zero
address by default).
- Nothing in the `v6` labs pin references the calculator. Labs imports
`network-defaults.json` directly, where the new key is an added default.
- [x]
[#25572](#25572)
test(l1): reference registry reduction sequencer reward calculator
(clean pick)
- Test-tree only (`l1-contracts/test/reward-calculators`, a fork test
and its fixture), plus the `foundry.toml` read permission for the
fixture and regenerated gas reports.
- [x]
[#25573](#25573)
test(l1): reference premium sequencer reward calculator with
provenance-tracking ATPs (clean pick)
- Test-tree only (`l1-contracts/test/reward-calculators/premium`), plus
regenerated gas reports.
- With #25577, #25578, #25582, #25585, #25570, #25571, #25572 and this
one applied, the whole `l1-contracts` directory is identical to `next`
at 551aa41.

## Protocol impact

- #25536 and #25579 both change private kernel circuits, so the VK tree
root that `v6` builds moves:
- from
`0x2d89003cc2dc62b06f07d83d3635c66c63fc43668369d30e7ee516f908ee10e3`
(the testnet deployed from `v6`)
- to
`0x05b95d9ef57c61d1c6626545101db55ae2d1f98ecb618d1c220610c049ee522b`
(taken from this PR's failing CI run on `34e0b24f`), which is what labs
patch 0001 pins
- the intermediate root with #25536 alone was
`0x21f06c3b82320ea5f80646751cdd9fa023dfd61400a42b8c952aa32e8f155793`
(from the failing CI run on `bed8264`)
- After this merges, `v6` no longer matches the currently deployed
testnet until it is redeployed. The re-pin follows the decision recorded
on #25549 (a breaking kernel change ported to `v6` re-pins testnet in
the same PR).
- The protocol contracts hash and the genesis root are unchanged; those
two assertions passed on `34e0b24f`.
- #25570 and #25571 change how the L1 rollup pays sequencers:
- the per-registry checkpoint reward overrides built into the rollup are
gone, along with `RollupConfigInput.registryRewardOverrides`,
`getRegistryRewardOverrides` and the `AZTEC_REGISTRY_REWARD_OVERRIDE_*`
deploy variables
- sequencer reward policy is delegated to an optional governance-set
calculator contract; with none configured every proposer gets the
default sequencer share
- #25572 and #25573 add reference calculators under `l1-contracts/test`
only; no calculator ships in `src` or is configured by default
- #25582 changes the L1 rollup contracts: `RewardLib` reward handling
for early proof submissions, and a new `getHasSubmittedFullEpoch` view
on `IRollup` / `Rollup`.
- Per #25585, the prover node (`prover-node-publisher.ts` in
`aztec-labs-eng/aztec-node`) still skips submission when
`getHasSubmitted` is true. It has to use `getHasSubmittedFullEpoch` for
full-epoch proofs before the fix helps honest provers; that change is
not in this PR or in the `v6` labs pin's patch series.
- The L1 changes take effect only on a rollup deployed from this code.
- #25536 is a repricing: a public tx with a teardown call is charged
20_000 more L2 gas. The PXE on `v6` already estimates that amount.
- #25579 rejects, in tail-to-public only, a nullifier whose note hash
link resolves to a revertible note hash. No honest client produces that
witness; the private-only tail circuit is unchanged.
- #25576 tightens p2p tx validation: a contract class log whose `length`
exceeds its trimmed length is now rejected. Honest producers already
emit the trimmed length.
- #23587 makes bb check a loaded Grumpkin SRS against pinned chunk
hashes. It changes the bb binary, not any circuit.
- #25580 and #25566 add unit tests (and a doc comment) and change no
circuit.
- #25530 removes a GitHub workflow: issues referenced by commits pushed
to `v6` are no longer closed by the script.
- #25577 and #25578 are build-cache only and change no circuit:
  - the l1-contracts cache key now follows the Noir commit
- the VK cache key now covers the circuit kind and the bootstrap script,
so every VK is regenerated once
- the Solidity verifier is written on every build instead of restored
from the cache
- l1-contracts gains a test that `generated/HonkVerifier.sol` equals the
circuits-side verifier

## Testing

- CI3 passed on `fb097a89` (the first eleven ports, through #25585),
including the testnet compatibility test against the re-pinned root and
the l1-contracts forge tests.
- CI3 on `34e0b24f` (the first nine ports, before the second re-pin) ran
about 10,400 tests; the only failure was the VK tree root assertion that
the second re-pin fixes.
- `./labs-patches/bootstrap.sh check`: the series (0001, 0010) applies
cleanly to `a0d73c0aed`. Patch 0001 was produced with `bootstrap.sh
apply` / `export`.
- #25577 / #25578: `bash -n` passes on both bootstrap scripts and
`scripts/circuit_kind.test.sh` passes locally. `v6` has no
`pinned-build.tar.gz`, so the pinned-build path is not exercised.
- No circuits, bb or L1 contracts were built locally (no `nargo`, no bb
build and no pinned `solc` in the port environment). The four AZIP-28
ports (#25570 to #25573) have no CI result yet: the forge suite, the
labs build against the changed rollup ABI and the deploy-script tests
run on this PR's CI.
- The branch is based on `v6` at cf7ea33; `v6` has since gained
#25551 (a notify workflow change), which merges without conflicts.

---
*Created by
[claudebox](https://claudebox.work/v2/sessions/134efca9a11ee14f/jobs/7)
· group: `slackbot` · [Slack
thread](https://aztecprotocol.slack.com/archives/C0AGN2WT3CP/p1790609320989739?thread_ts=1790609320.989739&cid=C0AGN2WT3CP)*
@AztecBot AztecBot mentioned this pull request Oct 4, 2026
1 task done
iAmMichaelConnor pushed a commit that referenced this pull request Oct 4, 2026
Rolling integration PR for changes labelled `port-to-v6` on `next`. Each
merged source PR is cherry-picked onto `cb/port-to-v6` as its own
commit, keeping `(#N)` in the title.

## Ported

- [x]
[#25586](#25586)
fix(types): do not clamp the delayed public mutable time horizon on a
scheduled change to the same value (clean pick; testnet re-pin pending)
- All three files end up identical to `next` at d363a40, as do the
`types` and `private-kernel-lib` crates.

## Protocol impact

- `ScheduledValueChange::get_time_horizon` no longer clamps the horizon
when the scheduled value equals the current one, so a cancelled or
idempotent contract update no longer shortens callers'
`expiration_timestamp`. A genuine pending change is clamped as before.
- This changes the `private_kernel_init` and `private_kernel_inner`
circuits (and their batched variants), so the VK tree root that `v6`
builds moves.
- Labs patch
`0001-test-pin-testnet-compatibility-to-the-v6-kernel-VK-t.patch`
currently pins
`0x05b95d9ef57c61d1c6626545101db55ae2d1f98ecb618d1c220610c049ee522b`, so
`testnet_compatibility.test.ts` is expected to fail on this head.
- Following the decision recorded on #25549 (a breaking kernel change
ported to `v6` re-pins testnet in the same PR), the patch is updated
here once CI reports the new root.
- Per the source PR, the protocol contracts compile to identical
bytecode, so genesis does not move.

## Testing

- `./labs-patches/bootstrap.sh check`: the series (0001, 0010) applies
cleanly to the labs pin `a0d73c0aed`.
- Not built or tested locally (no `nargo` in the port environment); the
`types` and kernel unit tests run on this PR's CI.

---
*Created by
[claudebox](https://claudebox.work/v2/sessions/134efca9a11ee14f/jobs/26)
· group: `slackbot` · [Slack
thread](https://aztecprotocol.slack.com/archives/C0AGN2WT3CP/p1790609320989739?thread_ts=1790609320.989739&cid=C0AGN2WT3CP)*
@AztecBot AztecBot mentioned this pull request Oct 5, 2026
1 task done
IlyasRidhuan added a commit that referenced this pull request Oct 5, 2026
Rolling integration PR for changes labelled `port-to-v6` on `next`. Each
merged source PR is cherry-picked onto `cb/port-to-v6` as its own
commit, keeping `(#N)` in the title.

## Ported

- [x]
[#25589](#25589)
chore: blobs and docs (pick of the merge commit, `-m 1`, applied without
conflicts, plus one `fix(port)` commit)
- All eight files end up identical to `next` at 86d0021, as do the
`blob` and `rollup-lib` crates and the whole `l1-contracts` directory.
  - It adds two labs patches, which keep their `next` numbering:
- `0006-fix-blob-lib-bind-checkpoint-boundaries-into-the-blo.patch`
(`yarn-project/blob-lib`, a test fixture path and the L1 publisher
integration test)
- `0007-docs-aztec-nr-private-log-fields-past-the-log-s-leng.patch` (a
doc comment in `aztec-nr`'s `private_context.nr`)
- Every file those two patches touch has the same pre-image blob on the
`v6` labs pin `a0d73c0aed` as the patch expects.
- The `fix(port)` commit updates labs patch
`0001-test-pin-testnet-compatibility-to-the-v6-kernel-VK-t.patch` to the
VK tree root `v6` builds with this change.

## Protocol impact

- The blob commitments hash now binds checkpoint boundaries: each
commitment is hashed with a one-byte flag that is `0x01` for a
checkpoint's first blob and `0x00` otherwise. The change is made in
three places that have to agree:
  - L1: `BlobLib.calculateBlobCommitmentsHash`
- circuits: the `blob` crate (`blob_batching.nr`, the accumulator ABIs),
consumed by the rollup circuits
  - node: `yarn-project/blob-lib`, through labs patch 0006
- This changes the rollup circuits, so the VK tree root that `v6` builds
moves:
- from
`0x1032cbb2f61a9c1151370ebc35c8ea20d1a726e3388eb94e84291c2b2fecb5d3`
(pinned on `v6` since #25587)
- to
`0x031139abb5b9f51ca0e55a6e2022d567029f50acc9428506f05c91ae27e7f75d`
(taken from this PR's failing CI run on `b2cd9f3f`), which is what labs
patch 0001 now pins
- The testnet deployed from `v6` has root
`0x2d89003cc2dc62b06f07d83d3635c66c63fc43668369d30e7ee516f908ee10e3`;
`v6` has not matched it since #25575. The re-pin follows the decision
recorded on #25549 (a breaking circuit change ported to `v6` re-pins
testnet in the same PR).
- The protocol contracts hash and the genesis root are unchanged; those
two assertions passed on `b2cd9f3f`.
- The L1 change takes effect only on a rollup deployed from this code. A
node built from this branch computes the new hash, so it does not agree
with a rollup deployed before it.

## Testing

- CI3 on `b2cd9f3f` (before the re-pin): `testnet_compatibility.test.ts`
› "has expected VK tree root" was the only failure in the fast run,
which covers the `blob` and rollup circuit tests, the new
`blobCommitmentsHash.t.sol` forge test and the labs `blob-lib` tests.
- `./labs-patches/bootstrap.sh check`: the series (0001, 0006, 0007,
0010) applies cleanly to the labs pin `a0d73c0aed`. Patch 0001 was
produced with `bootstrap.sh apply` / `export`.
- No circuits or L1 contracts were built locally (no `nargo` and no
pinned `solc` in the port environment); the re-pinned test runs on this
PR's CI.

---
*Created by
[claudebox](https://claudebox.work/v2/sessions/134efca9a11ee14f/jobs/29)
· group: `slackbot` · [Slack
thread](https://aztecprotocol.slack.com/archives/C0AGN2WT3CP/p1790609320989739?thread_ts=1790609320.989739&cid=C0AGN2WT3CP)*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants