Skip to content

refactor(pxe): clean up the operation and staged-write lifecycle (backport of aztec-labs-eng/aztec-node#35) - #25336

Open
nventuro wants to merge 1 commit into
nico/port-node-20-operation-queuefrom
nico/port-node-35-operation-lifecycle
Open

refactor(pxe): clean up the operation and staged-write lifecycle (backport of aztec-labs-eng/aztec-node#35)#25336
nventuro wants to merge 1 commit into
nico/port-node-20-operation-queuefrom
nico/port-node-35-operation-lifecycle

Conversation

@nventuro

@nventuro nventuro commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Backport of aztec-labs-eng/aztec-node#35 to the v5 line: a git cherry-pick -x of its squash commit on aztec-node/main, 3850908ac99f57206222639bc6e9e1463569160b. The change itself was described and reviewed there; this PR is only about the port being faithful, so please review it as such.

Validating the backport

  1. Fetch the source repo once: git remote add node https://github.com/aztec-labs-eng/aztec-node && git fetch node main.

  2. Compare the upstream patch with this PR's patch (range-diff compares patches, so unrelated histories are fine):

    git range-diff 3850908ac9^..3850908ac9 origin/nico/port-node-35-operation-lifecycle^..origin/nico/port-node-35-operation-lifecycle
    

    Expected: the (cherry picked from commit …) trailer under the commit message, and exactly one patch-level difference, in yarn-project/txe/src/oracle/txe_oracle_top_level_context.ts:

    --        await this.executeUtilityCall(syncCall, { scopes: execScopes, jobId });
    -+        await this.executeUtilityCall(syncCall, { scopes: execScopes, changeSetId });
    +-        await this.executeUtilityCall(syncCall, { scopes: execScopes, jobId, authorizedUtilityCallTargets });
    ++        await this.executeUtilityCall(syncCall, { scopes: execScopes, changeSetId, authorizedUtilityCallTargets });
    

    v5's contract-sync utilityExecutor forwards authorizedUtilityCallTargets (next does not); the resolution keeps that argument and applies upstream's jobIdchangeSetId rename. Every other -/+ line in the output is a context-only difference (a single - or + followed by a space): the lines around the patch differ between v5 and next in txe_session.ts and sync_tagged_private_logs.test.ts, the changed lines do not.

  3. Build and run the unit suites at this commit (from yarn-project/): yarn workspace @aztec/pxe build && yarn workspace @aztec/txe build && yarn workspace @aztec/pxe test && yarn workspace @aztec/txe test. The upstream PR's own tests are part of these suites, so passing them is the behavioral check; CI on this PR runs them as well.

  4. This change rewrites the TXE session's operation lifecycle, so also run a TXE-driven contract test package against the built TXE, e.g. noir-projects/noir-contracts/bootstrap.sh test-package nested_utility_contract (also checked locally: custom_sync_state_contract, token_contract).

Stack

Stacked on the backport of aztec-labs-eng/aztec-node#20 (base branch nico/port-node-20-operation-queue); to be rebased onto merge-train/fairies-v5 once that one merges. Order: #20#35#40#47#94#100#98 (aztec-node numbers).

* refactor(pxe): clean up the operation and staged-write lifecycle

* fix(pxe): keep an operation's outcome when a contributor's end notification throws

* refactor(pxe): clarify staged-write coordinator docs and naming

(cherry picked from commit 3850908ac99f57206222639bc6e9e1463569160b)
@nventuro
nventuro force-pushed the nico/port-node-35-operation-lifecycle branch from 36f8320 to 9293331 Compare August 28, 2026 21:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants