Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
179 commits
Select commit Hold shift + click to select a range
30fedcf
fix: stringify all bigints in pino-logger
spypsy Feb 9, 2026
f4800a9
refactor missing txs collection
deffrian Feb 6, 2026
bd47ea0
missing txs tracker
deffrian Feb 6, 2026
07a27f0
add test
deffrian Feb 6, 2026
e895363
track txs between requests
deffrian Feb 9, 2026
dee87b0
fromArray
deffrian Feb 9, 2026
dd81ca3
verification inside node tx source
deffrian Feb 9, 2026
c6f1471
fix file store
deffrian Feb 9, 2026
3d0e498
fix build
deffrian Feb 9, 2026
5881f21
fix tests
deffrian Feb 10, 2026
87b2cef
verification in file store tx source
deffrian Feb 10, 2026
a14c9f8
Merge branch 'merge-train/spartan' into nikita/dynamic-missing-txs
deffrian Feb 10, 2026
014b6b3
fix build
deffrian Feb 10, 2026
6682f5a
fix lint
deffrian Feb 10, 2026
4b44406
fix test
deffrian Feb 10, 2026
ebfa25a
refactor(ethereum): config-driven tx delayer replaces manual DelayedT…
spalladino Feb 9, 2026
853d17d
chore: log L1 trace errors once in debug
spypsy Feb 11, 2026
bf208ba
Merge branch 'merge-train/spartan' into nikita/dynamic-missing-txs
deffrian Feb 11, 2026
73f2bb1
fix build & suggestion
deffrian Feb 11, 2026
5a3074f
fix other suggestions
deffrian Feb 11, 2026
2c85faf
actual fix
deffrian Feb 11, 2026
9f0518e
remove duplicate function
spypsy Feb 11, 2026
72174ab
refactor(ethereum): simplify L1TxUtils factories and internalize delayer
spalladino Feb 11, 2026
5af0a01
Initial commit
PhilWindle Feb 11, 2026
38e7ef0
Add memory usage metric
PhilWindle Feb 11, 2026
7517cdb
fix(node-lib): add missing dateProvider to L1TxUtils integration test
spalladino Feb 11, 2026
ddc5e2f
fix(end-to-end): force-enable tx delayer in e2e setup
spalladino Feb 12, 2026
e9f4dba
Merge branch 'merge-train/spartan' into nikita/dynamic-missing-txs
deffrian Feb 12, 2026
cab041b
fix merge
deffrian Feb 12, 2026
5e9908e
test(archiver): add missing reorg and prune unit tests
spalladino Feb 12, 2026
62e99e0
chore: ensure consistent HA DB timestamps
spypsy Feb 12, 2026
7929485
More metrics
PhilWindle Feb 12, 2026
c9c15bf
Fee only priority checks
PhilWindle Feb 12, 2026
8ccff06
fix: stringify all bigints in pino-logger (#20303)
PhilWindle Feb 13, 2026
7d645ea
chore: ensure consistent HA DB timestamps (#20398)
AztecBot Feb 13, 2026
c05c980
chore: log L1 trace errors once in debug (#20380)
AztecBot Feb 13, 2026
0bb9df7
test(archiver): add missing reorg and prune unit tests (#20441)
PhilWindle Feb 13, 2026
02a4606
feat(ci.aztec-labs.com): CI cost and metrics tracking (#20100)
ludamad Feb 13, 2026
db3abf9
refactor(ethereum): cleaner initialization for tx delayer in l1txutil…
PhilWindle Feb 13, 2026
1618ded
Removed unused interface from p2p client
PhilWindle Feb 13, 2026
cd47107
Merge remote-tracking branch 'origin/merge-train/spartan' into pw/tx-…
PhilWindle Feb 13, 2026
1cad1d1
Reverted change
PhilWindle Feb 13, 2026
a977661
chore(validator): blob upload tests
spalladino Feb 12, 2026
36a27d0
chore(validator): blob upload tests (#20463)
PhilWindle Feb 13, 2026
2d3a235
Review changes
PhilWindle Feb 13, 2026
9d2307a
Review changes
PhilWindle Feb 13, 2026
a74470a
Merge branch 'next' into merge-train/spartan
Feb 13, 2026
513c526
Fix
PhilWindle Feb 13, 2026
e2b8ecf
Merge branch 'next' into merge-train/spartan
Feb 13, 2026
3a3a397
automatically stop node from signalling
mrzeszutko Feb 12, 2026
a5fe63e
using L1 start block as fromBlock
mrzeszutko Feb 13, 2026
ec14b01
Merge branch 'next' into merge-train/spartan
Feb 13, 2026
006875a
Merge branch 'next' into merge-train/spartan
Feb 13, 2026
e52b7d2
chore: move TXE ports out of Linux ephemeral range (#20475)
ludamad Feb 13, 2026
feaa467
Merge branch 'next' into merge-train/spartan
Feb 13, 2026
1003d7b
fix(node): sync ws before simulating public calls (#20499)
spalladino Feb 13, 2026
471c876
fix(ethereum): check timeout before consuming nonce in L1TxUtils (#20…
spalladino Feb 13, 2026
e6ea518
chore(mbps): cleanup todos no longer needed
spalladino Feb 13, 2026
2835925
refactor(mbps): add timestamp to checkpoint global vars
spalladino Feb 13, 2026
d9ad4ff
chore(mbps): remove outdated todo comments
spalladino Feb 13, 2026
2f2a1ab
fix(validator): do not attest to checkpoint that points to non-latest…
spalladino Feb 13, 2026
25a11bf
feat(archiver): return L2 block data to avoid fetching full block
spalladino Feb 13, 2026
1dad015
Merge branch 'next' into merge-train/spartan
Feb 13, 2026
4c30e23
chore(e2e): toggle mbps in e2e tests
spalladino Feb 9, 2026
761ee8c
chore(e2e): reenable block building test (#20504)
spalladino Feb 13, 2026
06d81c8
refactor(sequencer): rename block-level metrics to checkpoint-level (…
spalladino Feb 13, 2026
2be895a
feat(archiver): add l2 tips cache
spalladino Feb 13, 2026
59780e2
feat(archiver): return L2 block data to avoid fetching full block (#2…
PhilWindle Feb 14, 2026
b993181
chore(mbps): clean up TODOs for multiple blocks per slot (#20502)
PhilWindle Feb 14, 2026
d57dccb
feat(archiver): add l2 tips cache (#20510)
PhilWindle Feb 14, 2026
58fd912
chore(e2e): toggle mbps in e2e tests (#20315)
PhilWindle Feb 14, 2026
3dfc45c
Merge remote-tracking branch 'origin/merge-train/spartan' into pw/tx-…
PhilWindle Feb 14, 2026
5f7ad8f
More metrics
PhilWindle Feb 15, 2026
879a554
fix: set PXE sync chain tip to proposed for scenario bot
Feb 16, 2026
9cc364d
fix: set PXE sync chain tip to proposed for scenario bot (#20530)
PhilWindle Feb 16, 2026
b824018
feat: Metrics added to the transaction pool (#20477)
PhilWindle Feb 16, 2026
2aea1d3
fix(ci): preserve both attempt logs when retrying flaky tests (#20439)
ludamad Feb 16, 2026
ba40940
feat: automatically stop node from signalling (#20416)
PhilWindle Feb 16, 2026
49524a2
Merge branch 'merge-train/spartan' into nikita/dynamic-missing-txs
deffrian Feb 16, 2026
8d8451c
refactor: add getCheckpointsDataForEpoch and enrich CheckpointData
spalladino Feb 16, 2026
243c693
refactor: add getCheckpointsDataForEpoch and enrich CheckpointData (#…
PhilWindle Feb 16, 2026
dac73ca
feat: worker thread wallet
alexghr Feb 16, 2026
80a54b5
refactor: make prover-node a subsystem of aztec-node
spalladino Feb 16, 2026
8f3a389
refactor: make prover-node a subsystem of aztec-node (#20393)
PhilWindle Feb 16, 2026
497f35f
suggestions
deffrian Feb 16, 2026
1e81f41
fix
deffrian Feb 16, 2026
0bfa842
fix
deffrian Feb 16, 2026
c866633
feat: worker thread wallet (#20557)
PhilWindle Feb 16, 2026
7739e5b
World state history based on checkpoints
PhilWindle Feb 16, 2026
ff4cf99
feat: add API key authentication for admin RPC endpoint
Feb 12, 2026
fc143f8
Comments
PhilWindle Feb 16, 2026
9519ab3
Merge remote-tracking branch 'origin/next' into merge-train/spartan
PhilWindle Feb 16, 2026
27aa830
docs: fix avm docs - l2 gas is not the same as mana (#20565)
dbanks12 Feb 16, 2026
a1e4b61
docs: simulator readme typos (#19701)
dbanks12 Feb 16, 2026
e9c7d86
chore: fix deployments
alexghr Feb 16, 2026
2e62768
chore: fix deployments (#20558)
PhilWindle Feb 16, 2026
1207cfa
feat: suspend sentinel during escape hatch (#20471)
LHerskind Feb 16, 2026
3c3d0fc
Merge branch 'next' into merge-train/avm
Feb 16, 2026
ab30ee4
fix: async blob (#20559)
alexghr Feb 16, 2026
5033806
chore: vendor web3signer (#20570)
alexghr Feb 17, 2026
693b104
fix: `DelayedPublicMutable` not relying on the guarantee of increasin…
benesjan Feb 17, 2026
7a3bbcc
chore: bump test slot duration
just-mitch Feb 17, 2026
7eef2cf
Merge branch 'next' into merge-train/avm
Feb 17, 2026
c8e0b00
Merge branch 'next' into merge-train/avm
Feb 17, 2026
a0262f0
Merge branch 'next' into merge-train/avm
Feb 17, 2026
13d7316
Merge branch 'next' into merge-train/avm
Feb 17, 2026
4774f44
fix(avm): alu gadget fuzzer serialisation (#19115)
MirandaWood Feb 17, 2026
71dc368
Merge branch 'next' into merge-train/avm
Feb 17, 2026
2cc6846
Merge branch 'next' into merge-train/avm
Feb 17, 2026
625a7c5
fix: Fix checkpoint invalidation test (#20579)
PhilWindle Feb 17, 2026
0e1e46d
Merge remote-tracking branch 'origin/next' into ag/merge-next
alexghr Feb 17, 2026
4601ffa
feat: World state history length is now defined in checkpoints (#20566)
PhilWindle Feb 17, 2026
e8d3a69
fix: async world state cleanups (#20578)
alexghr Feb 17, 2026
786386c
chore: merge next into merge-train/spartan (#20582)
ludamad Feb 17, 2026
0aef088
fix: skip flaking epochs_long_proving_time.test.ts
ludamad Feb 17, 2026
f7016be
chore: better agent utilisation in proving test
alexghr Feb 16, 2026
b9378ca
chore!: change max private log size to 16 fields
LeilaWang Feb 17, 2026
736a202
chore!: change max private log size to 16 fields (#20515)
LeilaWang Feb 17, 2026
a178034
fix: `DelayedPublicMutable` not relying on the guarantee of increasin…
charlielye Feb 17, 2026
39a1605
chore: better agent utilisation in proving test (#20562)
PhilWindle Feb 17, 2026
f039b7e
Merge branch 'next' into merge-train/avm
Feb 17, 2026
326744c
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
6fcc86e
Merge branch 'next' into merge-train/avm
Feb 17, 2026
a2b87e2
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
50e778a
feat: merge-train/avm (#20567)
AztecBot Feb 17, 2026
4d48205
fix: use ci3_labels_to_env.sh for ci-external label
ludamad Feb 17, 2026
43ed6a9
feat: Error codes for RPC calls
Feb 16, 2026
603ad70
Add flag to delete all prune transactions
PhilWindle Feb 17, 2026
3efb1d9
fix: use ci3_labels_to_env.sh for ci-external label (#20597)
ludamad Feb 17, 2026
a001805
feat: (A-302) add reloadKeystore admin RPC endpoint
danielntmd Feb 17, 2026
1d43be9
feat: (A-302) add reloadKeystore admin RPC endpoint (#20325)
PhilWindle Feb 17, 2026
3e96287
Use the tips store
PhilWindle Feb 17, 2026
ab981a2
Gate on config
PhilWindle Feb 17, 2026
c43786e
fix inverted flag
deffrian Feb 17, 2026
6f24e7f
chore: cleanup wallets package
Thunkar Feb 17, 2026
a39635b
feat: (A-451) error codes for RPC calls (#20560)
PhilWindle Feb 17, 2026
60b4fc7
feat: (A-514) add API key authentication for admin RPC endpoint (#20411)
danielntmd Feb 17, 2026
3bd5145
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
6b2cade
fix: increase waitForTx timeout in epochs_invalidate_block test (#20603)
alexghr Feb 17, 2026
be842f0
Merge branch 'merge-train/spartan' into nikita/dynamic-missing-txs
deffrian Feb 17, 2026
fae88c7
chore: update skill to correct path and add changelog docs for new en…
Feb 17, 2026
dcb856c
type
deffrian Feb 17, 2026
1e180e5
chore: update block proposal/checkpoint proposal panel (#20584)
alexghr Feb 17, 2026
101ef01
fix: async dispose() lint rule (#20587)
alexghr Feb 17, 2026
7ea6a37
fix(p2p): fix compress option in file store and enable for tx uploads…
alexghr Feb 17, 2026
2f31af4
chore: fixes for chaos mesh experiments (#20606)
alexghr Feb 17, 2026
76923c1
feat(p2p): add download metrics to file store tx source (#20601)
alexghr Feb 17, 2026
2e46cd1
chore: update skill to correct path and add changelog docs for new en…
PhilWindle Feb 17, 2026
c8d1ccc
Merge branch 'merge-train/spartan' into nikita/dynamic-missing-txs
deffrian Feb 17, 2026
623d2ce
Just use checkpoint difference
PhilWindle Feb 17, 2026
b103742
fix build
deffrian Feb 17, 2026
e08a9e5
chore: deflake epoch_mbps (#20609)
alexghr Feb 17, 2026
639368d
feat: merge-train/spartan (#20476)
ludamad Feb 17, 2026
30b9692
Set appropriate slot duration
PhilWindle Feb 17, 2026
130f488
fix(ci): insufficient parallelism in merge-queue-heavy
ludamad Feb 17, 2026
5bfbd67
fix(ci): insufficient parallelism in merge-queue-heavy (#20613)
ludamad Feb 17, 2026
afd4cbe
fix: Set Aztec slot duration as a multiple of the Ethereum slot durat…
PhilWindle Feb 17, 2026
41cb45a
feat: Re-instate the function optionally to delete all transactions i…
PhilWindle Feb 17, 2026
00e18c5
feat: dynamically adjust missing txs set (#20300)
mralj Feb 17, 2026
98eda62
feat: notify slack on merge train PR merge
ludamad Feb 17, 2026
afaea64
chore: fund deployer account (#20564)
alexghr Feb 17, 2026
07ffd46
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
85f00d3
chore: remove non cross-platform, dead code
just-mitch Feb 17, 2026
42462f5
update logic scope
ledwards2225 Feb 16, 2026
a3b7e94
chore: remove non cross-platform, dead code (#20616)
just-mitch Feb 17, 2026
694fcd9
chore: cleanup wallets package (#20592)
AztecBot Feb 17, 2026
0f106d7
chore: update logic module audit scope (#20556)
ledwards2225 Feb 17, 2026
dbbeddc
feat: notify slack on merge train PR merge (#20614)
ludamad Feb 17, 2026
94c5a4c
chore!: update da gas
LeilaWang Feb 17, 2026
6ec7568
chore!: update da gas (#20611)
LeilaWang Feb 17, 2026
637df1c
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
3c5f51d
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
e73e0de
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
84d400c
Merge branch 'next' into merge-train/spartan
Feb 17, 2026
dedf440
feat: merge-train/spartan (#20615)
AztecBot Feb 18, 2026
6246b21
chore(docs): cut new aztec and bb docs version for tag v4.0.0-nightly…
Feb 18, 2026
12efeac
Merge branch 'next' into janb/unblocking-fairies-train-merge
benesjan Feb 18, 2026
a6363fa
after merge fix
benesjan Feb 18, 2026
4cdcaff
fmt
benesjan Feb 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .claude/skills/updating-changelog/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Read `.release-please-manifest.json` to get the version (e.g., `{"." : "4.0.0"}`
**Target files:**

- Aztec contract developers: `docs/docs-developers/docs/resources/migration_notes.md`
- Node operators and Ethereum contract developers: `docs/docs-network/reference/changelog/v{major}.md`
- Node operators and Ethereum contract developers: `docs/docs-operate/operators/reference/changelog/v{major}.md`

### 2. Analyze Branch Changes

Expand Down Expand Up @@ -60,7 +60,7 @@ Explanation of what changed.

## Node Operator Changelog Format

**File:** `docs/docs-network/reference/changelog/v{major}.md`
**File:** `docs/docs-operate/operators/reference/changelog/v{major}.md`

**Breaking changes:**
````markdown
Expand Down
4 changes: 2 additions & 2 deletions .github/ci3_labels_to_env.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Determines CI mode from labels and environment variables.
# Called by ci3.yml to set CI_MODE and related environment variables.
# Called by ci3.yml and ci3-external.yml to set CI_MODE and related environment variables.
# Outputs environment variables to GITHUB_ENV for use in subsequent steps.
set -euo pipefail

Expand All @@ -23,7 +23,7 @@ function main {
local target_branch
if [ "${GITHUB_EVENT_NAME:-}" == "merge_group" ]; then
target_branch="${MERGE_GROUP_BASE_REF:-}"
elif [ "${GITHUB_EVENT_NAME:-}" == "pull_request" ]; then
elif [ "${GITHUB_EVENT_NAME:-}" == "pull_request" ] || [ "${GITHUB_EVENT_NAME:-}" == "pull_request_target" ]; then
target_branch="${PR_BASE_REF:-}"
else
target_branch="${GITHUB_REF_NAME:-}"
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/ci3-external.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ jobs:
fi
GITHUB_TOKEN=${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} gh pr edit ${{ github.event.pull_request.number }} --remove-label "ci-external-once"

- name: Determine CI Mode
env:
MERGE_GROUP_BASE_REF: ${{ github.event.merge_group.base_ref }}
PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
run: ./.github/ci3_labels_to_env.sh ${{ join(github.event.pull_request.labels.*.name, ' ') }}

- name: Run
env:
REF_NAME: repo-fork/${{ github.repository }}/${{ github.head_ref }}
Expand All @@ -78,7 +86,7 @@ jobs:
PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
PR_COMMITS: ${{ github.event.pull_request.commits }}
GITHUB_REF_NAME: ${{ github.ref_name }}
run: ./.github/ci3.sh "${{ join(github.event.pull_request.labels.*.name, ',') }}"
run: ./.github/ci3.sh $CI_MODE

- name: Post-Actions
if: always()
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci3.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ jobs:
PR_COMMITS: ${{ github.event.pull_request.commits }}
PR_NUMBER: ${{ github.event.pull_request.number }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_ACTOR: ${{ github.actor }}
# NOTE: $CI_MODE is set in the Determine CI Mode step.
run: ./.github/ci3.sh $CI_MODE

Expand Down
27 changes: 22 additions & 5 deletions .github/workflows/merge-queue-dequeue-notify.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
name: Notify Slack on Merge Queue Dequeue
name: Notify Slack on Merge Train Events

on:
pull_request:
types: [dequeued]
types: [dequeued, closed]

jobs:
notify-slack:
name: Notify Slack
notify-dequeued:
name: Notify Slack (Dequeued)
runs-on: ubuntu-latest
if: startsWith(github.event.pull_request.head.ref, 'merge-train/') && github.event.pull_request.merged != true
if: github.event.action == 'dequeued' && startsWith(github.event.pull_request.head.ref, 'merge-train/') && github.event.pull_request.merged != true
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -21,3 +21,20 @@ jobs:
REF_NAME: ${{ github.event.pull_request.head.ref }}
PR_URL: ${{ github.event.pull_request.html_url }}
run: ./ci3/merge_train_failure_slack_notify --dequeued

notify-merged:
name: Notify Slack (Merged)
runs-on: ubuntu-latest
if: github.event.action == 'closed' && github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'merge-train/')
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.ref }}

- name: Send Slack notification
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
REF_NAME: ${{ github.event.pull_request.head.ref }}
PR_URL: ${{ github.event.pull_request.html_url }}
run: ./ci3/merge_train_failure_slack_notify --merged
4 changes: 2 additions & 2 deletions .github/workflows/weekly-proving-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
fi

- name: Run real proving benchmarks
timeout-minutes: 150
timeout-minutes: 180
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Expand All @@ -57,7 +57,7 @@ jobs:
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
RUN_ID: ${{ github.run_id }}
AWS_SHUTDOWN_TIME: 150
AWS_SHUTDOWN_TIME: 180
NO_SPOT: 1
run: |
./.github/ci3.sh network-proving-bench prove-n-tps-real prove-n-tps-real "aztecprotocol/aztec:${{ steps.nightly-tag.outputs.nightly_tag }}"
Expand Down
5 changes: 5 additions & 0 deletions .test_patterns.yml
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,11 @@ tests:
owners:
- *palla

- regex: "src/e2e_block_building.test.ts"
error_regex: "✕ processes txs until hitting timetable"
owners:
- *palla

# http://ci.aztec-labs.com/e8228a36afda93b8
# Test passed but there was an error on stopping
- regex: "playground/scripts/run_test.sh"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,29 @@

Repository: https://github.com/AztecProtocol/aztec-packages

Commit hash: TBD
Commit hash: e4712cda8def49d75fbba2d361625fc5e21945f5

## Files to Audit

Note: Paths relative to `aztec-packages/barretenberg/cpp/src/barretenberg`

### stdlib (core logic implementation)

1. `stdlib/primitives/logic/logic.hpp`
2. `stdlib/primitives/logic/logic.cpp`
3. `stdlib_circuit_builders/plookup_tables/uint.hpp` (lookup tables)

### dsl (ACIR interface)

4. `dsl/acir_format/logic_constraint.hpp` — ACIR struct and gate function declarations
5. `dsl/acir_format/logic_constraint.cpp` — Converts ACIR logic constraints into stdlib circuit gates

## Summary of Module

The `logic` module provides circuit-friendly implementations of bitwise logical operations (XOR and AND) over variable-length unsigned integers using plookup tables.

### stdlib layer

Main function: `create_logic_constraint(a, b, num_bits, is_xor_gate)`

- Computes `a XOR b` or `a AND b` for inputs up to `num_bits` in length
Expand All @@ -31,10 +40,19 @@ The implementation:
- If both inputs are constants, the operation is computed natively without circuit constraints
- If one input is constant, it is converted to a witness before processing

### dsl layer

The DSL layer bridges ACIR opcodes (`BlackBoxFuncCall::AND`, `BlackBoxFuncCall::XOR`) to the stdlib logic implementation:

- `acir_to_constraint_buf.cpp` deserializes ACIR AND/XOR black box calls into `LogicConstraint` structs (deserialization file itself is out of scope)
- `create_logic_gate` converts `WitnessOrConstant` inputs to `field_ct` via `to_field_ct`, calls `stdlib::logic::create_logic_constraint`, and asserts the computed result equals the ACIR-provided result witness

## Test Files

1. `stdlib/primitives/logic/logic.test.cpp`
2. `dsl/acir_format/logic_constraint.test.cpp`

## Dependencies

- Plookup read: `stdlib/primitives/plookup/plookup.hpp`
- ACIR format core: `dsl/acir_format/acir_format.hpp` (constraint application loop)
24 changes: 12 additions & 12 deletions barretenberg/cpp/src/barretenberg/avm_fuzzer/harness/alu.fuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ struct AluFuzzerInput {
MemoryValue a;
MemoryValue b;
MemoryValue c = MemoryValue::from_tag(MemoryTag::FF, 0); // Placeholder for result
int op_id = 0; // For execution trace alu_op_id

uint16_t op_id = 0; // For execution trace alu_op_id
// We serialise MemoryValues as FF + 1 byte for tag to save 31 bytes per value:
static const size_t size = (3 * (sizeof(FF) + 1)) + sizeof(uint16_t);
// Serialize to buffer
void to_buffer(uint8_t* buffer) const
{
Expand All @@ -58,7 +59,7 @@ struct AluFuzzerInput {
buffer += sizeof(FF) + 1;
write_mem_value(buffer, c);
buffer += sizeof(FF) + 1;
serialize::write(buffer, static_cast<uint16_t>(op_id));
serialize::write(buffer, op_id);
}

static AluFuzzerInput from_buffer(const uint8_t* buffer)
Expand Down Expand Up @@ -88,11 +89,11 @@ struct AluFuzzerInput {

extern "C" size_t LLVMFuzzerCustomMutator(uint8_t* data, size_t size, size_t max_size, unsigned int seed)
{
if (size < sizeof(AluFuzzerInput)) {
if (size < AluFuzzerInput::size) {
// Initialize with default input
AluFuzzerInput input;
input.to_buffer(data);
return sizeof(AluFuzzerInput);
return AluFuzzerInput::size;
}

std::mt19937_64 rng(seed);
Expand All @@ -119,7 +120,6 @@ extern "C" size_t LLVMFuzzerCustomMutator(uint8_t* data, size_t size, size_t max

auto random_mem_value_from_tag = [&rng](MemoryTag tag) -> MemoryValue {
std::uniform_int_distribution<uint64_t> dist(0, std::numeric_limits<uint64_t>::max());
// TODO(MW): Use array?
FF value = FF(dist(rng), dist(rng), dist(rng), dist(rng));
// Do we want the option of making "invalid tag" values, where the value is out of range for the tag?
// These aren't currently possible with this function since MemoryValue::from_tag will throw in that case.
Expand All @@ -135,9 +135,9 @@ extern "C" size_t LLVMFuzzerCustomMutator(uint8_t* data, size_t size, size_t max
// Deserialize current input
AluFuzzerInput input = AluFuzzerInput::from_buffer(data);

// Choose random ALU operation
// Choose random ALU operation (11 possible operations with op_id = 2^index)
std::uniform_int_distribution<int> dist(0, 11);
input.op_id = 1 << dist(rng);
input.op_id = static_cast<uint16_t>(1 << dist(rng));

// Choose test case (TODO(MW): what else do we want here?)
dist = std::uniform_int_distribution<int>(0, 4);
Expand Down Expand Up @@ -187,18 +187,18 @@ extern "C" size_t LLVMFuzzerCustomMutator(uint8_t* data, size_t size, size_t max
// Serialize mutated input back to buffer
input.to_buffer(data);

if (max_size > sizeof(AluFuzzerInput)) {
return sizeof(AluFuzzerInput);
if (max_size > AluFuzzerInput::size) {
return AluFuzzerInput::size;
}

return sizeof(AluFuzzerInput);
return AluFuzzerInput::size;
}

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
{
using bb::avm2::MemoryValue;

if (size < sizeof(AluFuzzerInput)) {
if (size < AluFuzzerInput::size) {
info("Input size too small");
return 0;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// === AUDIT STATUS ===
// internal: { status: Planned, auditors: [], commit: }
// internal: { status: Complete, auditors: [Suyash], commit: e4712cda8def49d75fbba2d361625fc5e21945f5 }
// external_1: { status: not started, auditors: [], commit: }
// external_2: { status: not started, auditors: [], commit: }
// =====================
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// === AUDIT STATUS ===
// internal: { status: Planned, auditors: [], commit: }
// internal: { status: Complete, auditors: [Suyash], commit: e4712cda8def49d75fbba2d361625fc5e21945f5 }
// external_1: { status: not started, auditors: [], commit: }
// external_2: { status: not started, auditors: [], commit: }
// =====================
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// === AUDIT STATUS ===
// internal: { status: Planned, auditors: [], commit: }
// internal: { status: Complete, auditors: [Suyash], commit: e4712cda8def49d75fbba2d361625fc5e21945f5 }
// external_1: { status: not started, auditors: [], commit: }
// external_2: { status: not started, auditors: [], commit: }
// =====================
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// === AUDIT STATUS ===
// internal: { status: Planned, auditors: [], commit: }
// internal: { status: Complete, auditors: [Suyash], commit: e4712cda8def49d75fbba2d361625fc5e21945f5 }
// external_1: { status: not started, auditors: [], commit: }
// external_2: { status: not started, auditors: [], commit: }
// =====================
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// === AUDIT STATUS ===
// internal: { status: Planned, auditors: [], commit: }
// internal: { status: Complete, auditors: [Suyash], commit: e4712cda8def49d75fbba2d361625fc5e21945f5 }
// external_1: { status: not started, auditors: [], commit: }
// external_2: { status: not started, auditors: [], commit: }
// =====================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,12 +237,12 @@
#define AVM_TORADIXBE_DYN_L2_GAS 3
#define AVM_BITWISE_DYN_L2_GAS 3
#define AVM_EMITPUBLICLOG_DYN_L2_GAS 3
#define AVM_EMITNOTEHASH_BASE_DA_GAS 512
#define AVM_EMITNULLIFIER_BASE_DA_GAS 512
#define AVM_SENDL2TOL1MSG_BASE_DA_GAS 512
#define AVM_EMITPUBLICLOG_BASE_DA_GAS 1024
#define AVM_EMITPUBLICLOG_DYN_DA_GAS 512
#define AVM_SSTORE_DYN_DA_GAS 1024
#define AVM_EMITNOTEHASH_BASE_DA_GAS 32
#define AVM_EMITNULLIFIER_BASE_DA_GAS 32
#define AVM_SENDL2TOL1MSG_BASE_DA_GAS 32
#define AVM_EMITPUBLICLOG_BASE_DA_GAS 64
#define AVM_EMITPUBLICLOG_DYN_DA_GAS 32
#define AVM_SSTORE_DYN_DA_GAS 64
#define AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_HEIGHT 6
#define AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_INITIAL_ROOT \
"0x2870b93163d4fd6ada360fe48ee1e8e8e69308af34cdfaeffacbbe5929e2466d"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class AvmHardCodedVKAndHash {
using FF = bb::curve::BN254::ScalarField;

// Precomputed VK hash (hash of all commitments below).
static FF vk_hash() { return FF(uint256_t("0x1f47e68404e58fcde864ff61573d61acab5832efb230f9a32ae68044d31dfd19")); }
static FF vk_hash() { return FF(uint256_t("0x02296b934ced1a5cdacae120d2032d88a119bdb0738d4c4f3ada4f5a831a5153")); }

static constexpr std::array<Commitment, NUM_PRECOMPUTED_ENTITIES> get_all()
{
Expand Down Expand Up @@ -59,13 +59,13 @@ class AvmHardCodedVKAndHash {
uint256_t(
"0x09f2eef32136799118634a108531dc248506d5f58f64885575b245865b56d48e")), // precomputed_exec_opcode
Commitment(
uint256_t("0x0188169f0225c14e925347c4f9f192d191b2ab6ca2fbc1d0453f48af5d9c667b"),
uint256_t("0x09bd44905d676585d8c7a91c8ba8fd6b1b598326cb80b95e80b4b39703c7e2c8"),
uint256_t(
"0x25b997de6f92af3ea3b409b41437fea01980b344a12fabc6b833656f26d6e954")), // precomputed_exec_opcode_base_da_gas
"0x1bec3a67476715f88745bc09b1ea57859c8fe809fae4376efab6ba773ea7f6d4")), // precomputed_exec_opcode_base_da_gas
Commitment(
uint256_t("0x1ddbbb27c627edafce021d5f332867ac9234c6f507442633bff9a5dbb4d02803"),
uint256_t("0x0f5b3fee86f9815eb0be052412de7f2a4c82f678604ba9e161c4412529810057"),
uint256_t(
"0x10fda7a2360b21bbfbb1e815377adc0fa869bbcb4a46b29c31ae017893fdfb0d")), // precomputed_exec_opcode_dynamic_da_gas
"0x1ad065dec1d51664807b4d551d0eb8abe0b061b8380dde6d662e2df36a1f85c8")), // precomputed_exec_opcode_dynamic_da_gas
Commitment(
uint256_t("0x06c03e425e92d09aa8243220a0968b4d7d00c89e541a2b6095920883a8a6fa72"),
uint256_t(
Expand Down
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion barretenberg/docs/docs/bb-cli-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sidebar_position: 1000
*This documentation is auto-generated from the `bb` CLI help output.*


*Generated: Tue 17 Feb 2026 04:44:25 UTC*
*Generated: Wed 18 Feb 2026 04:46:30 UTC*

*Command: `bb`*

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sidebar_position: 1000
*This documentation is auto-generated from the `bb` CLI help output.*


*Generated: Tue 17 Feb 2026 04:44:25 UTC*
*Generated: Wed 18 Feb 2026 04:46:30 UTC*

*Command: `bb`*

Expand Down
2 changes: 1 addition & 1 deletion barretenberg/docs/versions.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"v0.87.0",
"v4.0.0-nightly.20260217"
"v4.0.0-nightly.20260218"
]
5 changes: 0 additions & 5 deletions barretenberg/sol/scripts/copy_optimized_to_cpp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -97,22 +97,17 @@ awk '
awk '
BEGIN {
in_unroll = 0
unroll_label = ""
}
# Detect UNROLL_SECTION_START
/\{\{[[:space:]]*UNROLL_SECTION_START[[:space:]]+[^}]+\}\}/ {
print # Print the start marker
in_unroll = 1
# Extract the label for matching with END
match($0, /UNROLL_SECTION_START[[:space:]]+([^[:space:]}\]]+)/, arr)
unroll_label = arr[1]
next
}
# Detect UNROLL_SECTION_END
/\{\{[[:space:]]*UNROLL_SECTION_END[[:space:]]+[^}]+\}\}/ {
print # Print the end marker
in_unroll = 0
unroll_label = ""
next
}
# Skip lines inside unroll sections
Expand Down
Loading
Loading