Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
6ceb26c
feat: replace NAPI with IPC for world state and AVM simulator
charlielye Mar 21, 2026
433253a
fix: remove unref() from IPC backends to prevent event loop drain
charlielye Mar 22, 2026
ced56e0
fix: restore unref() on WSDB/AVM backends, keep CDB server ref'd
charlielye Mar 22, 2026
873f5f7
fix: add keepalive timer during IPC backend initialization
charlielye Mar 23, 2026
0805b55
fix: add diagnostic logging for process exit during startup
charlielye Mar 23, 2026
f26f5b7
fix: remove diagnostic logging and keepalive timer, rely on CDB serve…
charlielye Mar 23, 2026
16af509
fix: ref IPC child process during destroy to prevent event loop drain
charlielye Mar 23, 2026
bf5fd76
fix: remove all unref/ref from IPC backends, rely on proper destroy
charlielye Mar 23, 2026
ba866f6
fix: track process exit in constructor, add forceExit to world-state …
charlielye Mar 23, 2026
6a8ff35
fix: close leaked NativeWorldStateService instances in re-org tests
charlielye Mar 23, 2026
ee0d373
fix: close leaked NativeWorldStateService in leaf/sibling/block-numbe…
charlielye Mar 23, 2026
2db4fb8
fix: close leaked NativeWorldStateService in integration test beforeAll
charlielye Mar 23, 2026
fa68b04
fix: clean up world state, prover, and broker in rerunEpochProvingJob
charlielye Mar 23, 2026
513e199
fix: close IPC resources (AvmBackend, CdbIpcServer) in AVM proving tests
charlielye Mar 23, 2026
64d3683
fix: close IPC resources in avm_contract_updates tests
charlielye Mar 23, 2026
134b232
chore: retrigger CI
charlielye Mar 23, 2026
24f4b27
fix: restore gasLimits parameter for AVM proving tests
charlielye Mar 23, 2026
088387c
fix: increase timeout for avm_check_circuit1 test to 60s
charlielye Mar 23, 2026
52cff96
fix: close readline interfaces in executeBB to prevent Jest hang
charlielye Mar 23, 2026
2631d32
fix: clean up stdio streams and listeners in IPC backend destroy
charlielye Mar 23, 2026
bc9d257
fix: close merkle tree fork in tester cleanup to prevent Jest hang
charlielye Mar 23, 2026
a6b5126
fix: close leaked AvmProvingTester in avm_check_circuit2 test
charlielye Mar 23, 2026
c25bf3c
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Mar 23, 2026
888071e
fix: use IPC C++ simulator in PublicProcessorFactory when avmBackend …
charlielye Mar 23, 2026
9d59741
fix: enforce IPC C++ simulator unconditionally everywhere NAPI was used
charlielye Mar 23, 2026
a4274b6
fix: remove unused CdbIpcServer import from TXE oracle
charlielye Mar 23, 2026
9d4d649
fix: wire CDB IPC server through PublicProcessorFactory for epoch pro…
charlielye Mar 23, 2026
77d04e8
fix: serialize concurrent CDB IPC access with simulation lock
charlielye Mar 23, 2026
8b3c6ce
fix: restore original error string in private_voting test
charlielye Mar 23, 2026
b82ad66
fix: use CDB simulation lock in checkpoint builder for block building
charlielye Mar 23, 2026
167dc1c
fix: robust IPC world state shutdown to prevent test hangs
charlielye Mar 23, 2026
cd6e961
feat: restore DumpingCppPublicTxSimulator for IPC and fix shutdown co…
charlielye Mar 23, 2026
1d91d88
feat: AVM simulator pool with fork-ID CDB routing for parallel simula…
charlielye Mar 23, 2026
eb61091
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Mar 23, 2026
e55b32f
fix: add cancel support to AVM pool and unregisterFork cleanup
charlielye Mar 23, 2026
6c815ba
feat: implement AVM simulation cancellation via SIGUSR1
charlielye Mar 23, 2026
a98a04f
feat: SimulationHandle for per-simulation cancel, fix fork leak and d…
charlielye Mar 23, 2026
a4fdbb6
fix: lint errors in SimulationHandle changes
charlielye Mar 23, 2026
060ff32
fix: wrap unregisterFork in try/catch to prevent swallowing simulatio…
charlielye Mar 23, 2026
40e94e9
fix: suppress unhandled rejection from pool finally chain
charlielye Mar 23, 2026
f5cacc4
fix: remove stale @ts-expect-error directives in example_swap
charlielye Mar 24, 2026
b961f73
fix: remove stale @ts-expect-error directives in token_bridge example
charlielye Mar 24, 2026
edbcc1c
fix: wrap unregisterFork in try/catch in epoch-proving-job
charlielye Mar 24, 2026
273e03f
fix: use async IIFE for deferred rejection in processor test mocks
charlielye Mar 24, 2026
415827e
fix: use Promise.resolve().then() for deferred rejection in test mocks
charlielye Mar 24, 2026
966e5ae
fix: prevent unhandled rejection in processor test mocks
charlielye Mar 24, 2026
76d6d14
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Mar 24, 2026
6c13fe3
fix: implement clear() for IPC world state (close + delete data dir)
charlielye Mar 24, 2026
7558cab
fix: implement clear() with recreateInstance for proper forced rollback
charlielye Mar 24, 2026
9de3da8
fix: reject queued waiters on pool destroy instead of resolving null
charlielye Mar 24, 2026
ffc703d
fix: TXE fork leak — unregisterFork on close and wire closeIpc into stop
charlielye Mar 24, 2026
ca3a90e
fix: restore @ts-expect-error directives in docs examples
charlielye Mar 24, 2026
820cd51
fix: clear stale handle, pipeline-safe CDB server, remove duck-typing
charlielye Mar 24, 2026
bbff52d
fix: clear() for fromIpc path, handle cleanup on error, un-skip fix t…
charlielye Mar 24, 2026
41b1063
fix: revert unnecessary timeout extensions, update review skill
charlielye Mar 24, 2026
82da2c0
fix: increase avm_check_circuit1 timeout to 45s with documented IPC o…
charlielye Mar 24, 2026
f624336
fix: re-skip timeout race tests — IPC has different race profile
charlielye Mar 24, 2026
976e493
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Mar 24, 2026
bff3c7c
fix: restore test coverage, fix TXE fork leak, delete NAPI-only tests
charlielye Mar 24, 2026
805e62d
fix: lint errors in timeout cancel test
charlielye Mar 24, 2026
cee2f6c
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Mar 24, 2026
c7b31bc
fix: flake seconds
charlielye Mar 24, 2026
3755550
feat: cache tree roots in WsdbIpcMerkleDB to eliminate redundant IPC …
charlielye Mar 24, 2026
c5f0d4d
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Mar 25, 2026
0e53708
fix: add missing default cases in wsdb_execute treeId switch statements
charlielye Mar 25, 2026
61a9d60
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Mar 31, 2026
eea5600
fix: yarn.lock
charlielye Apr 1, 2026
cb9356c
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Apr 1, 2026
f8bac39
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Apr 3, 2026
92f3e5c
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Apr 18, 2026
a807186
fix: thread GenesisData through IPC world state constructors after merge
charlielye Apr 18, 2026
97912ec
fix: pass genesis timestamp to aztec-wsdb so initial header hashes match
charlielye Apr 18, 2026
e4728c7
fix: forward genesis data through IPC world state path
charlielye Apr 18, 2026
ffe47e3
fix: use .result on SimulationHandle in nullifier collision test
charlielye Apr 18, 2026
d7b2071
fix: validate map sizes before spawning wsdb backend
charlielye Apr 18, 2026
8183ccd
fix: close AvmProvingTester in test vectors afterEach to prevent Jest…
charlielye Apr 18, 2026
da5a5c5
Merge branch 'next' into cl/wsdb_cdb
charlielye Apr 21, 2026
82d92fa
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye Apr 24, 2026
35b80f4
fix: update aztec_constants.hpp include path after upstream move
charlielye Apr 24, 2026
05d432c
fix: remove stale useCppSimulator param, fix AztecNodeService constru…
charlielye Apr 24, 2026
9316c8a
chore: retrigger CI
charlielye Apr 24, 2026
5e62468
Merge remote-tracking branch 'origin/next' into cl/wsdb_cdb
charlielye May 6, 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
113 changes: 113 additions & 0 deletions .claude/skills/refactor-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
name: refactor-review
description: Deep review of a refactor branch to catch unexpected behavioral changes, regressions, or missing functionality. Merges latest parent, resolves conflicts, then inspects the full diff.
---

# Refactor Review

Deep inspection of a refactor branch to verify behavioral equivalence with the parent branch.

## Purpose

A refactor should change implementation without changing behavior. This review catches:

- Unexpected behavioral changes (different defaults, removed features, changed error handling)
- Regressions (tests weakened, timeouts extended, coverage removed)
- Incomplete work (TODOs, FIXMEs, commented-out code, stub implementations)
- Missing functionality (features on parent that aren't present on the branch)

## Workflow

### Step 1: Merge latest parent

```bash
# Determine the base branch
BASE=$(gh pr view --json baseRefName -q '.baseRefName' 2>/dev/null || echo "next")
git fetch origin "$BASE"
git merge "origin/$BASE"
```

If there are conflicts, resolve them and commit the merge. If conflicts are non-trivial, report them to the user before proceeding.

### Step 2: Build

```bash
./bootstrap.sh
```

Fix any build errors introduced by the merge. If build errors exist pre-merge (on the branch itself), note them but don't block the review.

### Step 3: Determine refactor intent

If the user provided a description of the refactor's purpose, use that. Otherwise, examine:

- PR title and description (`gh pr view`)
- Commit messages (`git log origin/$BASE..HEAD --oneline`)
- The diff itself (`git diff origin/$BASE...HEAD --stat`)

Summarize the intent in one sentence before proceeding.

### Step 4: Deep diff inspection

Run `git diff origin/$BASE...HEAD` and analyze every change for:

#### Behavioral changes

- Default values changed (timeouts, pool sizes, config defaults)
- Error handling changed (catch blocks added/removed, error types changed)
- Control flow changed (early returns added, conditions inverted)
- API signatures changed (parameters added/removed/reordered)
- Feature flags or env vars added/removed/renamed

#### Regressions

- Test assertions weakened or removed
- Test timeouts increased — always flag as MEDIUM with old/new values. Timeout increases can mask performance regressions; each must be justified or investigated.
- Test cases removed or commented out
- Error paths that now silently succeed
- Functionality that existed on parent but is missing on the branch
- Loss of parallelization or concurrency.

#### Incomplete work

- TODO/FIXME/HACK comments added
- Stub implementations (`throw new Error('not implemented')`)
- Commented-out code
- Dead code paths (unreachable branches)

#### Resource management

- Cleanup/dispose calls removed
- New resources without corresponding cleanup
- Changed lifecycle (e.g., process vs thread, persistent vs per-call)

### Step 5: Generate report

Produce a structured report:

```
## Refactor Review: <branch-name>

**Intent:** <one-sentence summary>
**Base:** <parent branch>
**Files changed:** <count>

### Behavioral Changes
- [file:line] Description of change and impact

### Regressions
- [file:line] Description of what was lost

### Incomplete Work
- [file:line] TODO/stub/commented-out code

### Resource Management
- [file:line] Cleanup concern

### Summary
<overall assessment: is this behaviorally equivalent?>
```

### Step 6: Wait for user

Present the report and wait for the user to tell you what to fix. Do NOT make changes autonomously — the user decides which findings are intentional and which need fixing.
3 changes: 3 additions & 0 deletions barretenberg/cpp/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ endif()
add_subdirectory(barretenberg/api)
add_subdirectory(barretenberg/bb)
add_subdirectory(barretenberg/bbapi)
add_subdirectory(barretenberg/wsdb)
add_subdirectory(barretenberg/cdb)
add_subdirectory(barretenberg/avm)
add_subdirectory(barretenberg/benchmark)
add_subdirectory(barretenberg/boomerang_value_detection)
add_subdirectory(barretenberg/circuit_checker)
Expand Down
46 changes: 46 additions & 0 deletions barretenberg/cpp/src/barretenberg/avm/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
if(NOT(FUZZING) AND NOT(WASM))
# IPC adapter library (WsdbIpcMerkleDB + related adapters)
add_library(
avm_ipc_adapters
STATIC
wsdb_ipc_merkle_db.cpp
)
target_link_libraries(
avm_ipc_adapters
PUBLIC
barretenberg
wsdb_ipc_client
cdb_ipc_client
ipc
)

# aztec-avm binary (standalone AVM simulator server)
add_executable(
aztec-avm
main.cpp
cli.cpp
avm_execute.cpp
avm_ipc_server.cpp
)
target_link_libraries(
aztec-avm
PRIVATE
barretenberg
vm2_sim
avm_ipc_adapters
ipc
env
)
if(ENABLE_STACKTRACES)
target_link_libraries(
aztec-avm
PUBLIC
Backward::Interface
)
target_link_options(
aztec-avm
PRIVATE
-ldw -lelf
)
endif()
endif()
68 changes: 68 additions & 0 deletions barretenberg/cpp/src/barretenberg/avm/avm_commands.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#pragma once
/**
* @file avm_commands.hpp
* @brief NamedUnion command structs for the aztec-avm simulation API.
*
* Commands use opaque std::vector<uint8_t> for inputs/outputs since
* AvmFastSimulationInputs and TxSimulationResult are large, complex types
* with existing msgpack serialization.
*/

#include "barretenberg/serialize/msgpack.hpp"

#include <cstdint>
#include <string>
#include <vector>

namespace bb::avm {

// Forward declaration
struct AvmRequest;

// ---------------------------------------------------------------------------
// Simulation commands
// ---------------------------------------------------------------------------

struct AvmSimulate {
static constexpr const char MSGPACK_SCHEMA_NAME[] = "AvmSimulate";
struct Response {
static constexpr const char MSGPACK_SCHEMA_NAME[] = "AvmSimulateResponse";
std::vector<uint8_t> result;
SERIALIZATION_FIELDS(result);
bool operator==(const Response&) const = default;
};
// Msgpack-serialized AvmFastSimulationInputs
std::vector<uint8_t> inputs;
SERIALIZATION_FIELDS(inputs);
Response execute(AvmRequest& request) &&;
bool operator==(const AvmSimulate&) const = default;
};

struct AvmSimulateWithHints {
static constexpr const char MSGPACK_SCHEMA_NAME[] = "AvmSimulateWithHints";
struct Response {
static constexpr const char MSGPACK_SCHEMA_NAME[] = "AvmSimulateWithHintsResponse";
std::vector<uint8_t> result;
SERIALIZATION_FIELDS(result);
bool operator==(const Response&) const = default;
};
// Msgpack-serialized AvmProvingInputs
std::vector<uint8_t> inputs;
SERIALIZATION_FIELDS(inputs);
Response execute(AvmRequest& request) &&;
bool operator==(const AvmSimulateWithHints&) const = default;
};

struct AvmShutdown {
static constexpr const char MSGPACK_SCHEMA_NAME[] = "AvmShutdown";
struct Response {
static constexpr const char MSGPACK_SCHEMA_NAME[] = "AvmShutdownResponse";
void msgpack(auto&& pack_fn) { pack_fn(); }
bool operator==(const Response&) const = default;
};
void msgpack(auto&& pack_fn) { pack_fn(); }
Response execute(AvmRequest& request) &&;
bool operator==(const AvmShutdown&) const = default;
};

} // namespace bb::avm
Loading
Loading