Skip to content

fix: Merge Conflicts#24014

Merged
ludamad merged 13 commits into
merge-train/spartan-v5from
pw/fix-v5-conflicts
Jun 11, 2026
Merged

fix: Merge Conflicts#24014
ludamad merged 13 commits into
merge-train/spartan-v5from
pw/fix-v5-conflicts

Conversation

@PhilWindle

Copy link
Copy Markdown
Collaborator

.

vezenovm and others added 13 commits June 10, 2026 09:26
Adds focused test helpers and clearer missing bb-avm error. 

I ran into a missing `bb-avm` in my local build and there nothing to
tell me that it was missing until deeper down the stack.

Whenever I added new tests I also found myself running TXE and calling
out to nargo manually rather than ever using the bootstrap scripts. I
added two test commands which will start a single TXE and run a single
contract package or a single test through the bootstrap script.
## Summary

- Propagate `CheckpointProposalJob.interrupt()` to its
`SequencerPublisher` so the publisher's `sendRequestsAt` slot-deadline
sleep is cancelled on sequencer stop.
- Check `interrupted` *before* sleeping in `sendRequestsAt`, since
`InterruptibleSleep.interrupt()` only resolves sleeps already in flight.

Completes #23930, which made the job's own polling waits interruptible
but not the publisher's. In [this `e2e_ha_full.test.ts`
flake](http://ci.aztec-labs.com/1c46f3d4a226073d) a node became proposer
165ms before teardown and took the no-broadcast votes path, leaving
`pendingL1Submission = publisher.sendRequestsAt(targetSlot)` sleeping
until the target slot — ~22 wall-clock minutes away under the warped
test clock. `Sequencer.stop()` blocked on it ("Awaiting pending L1
payload submission"), node stops were abandoned, and Jest hung on leaked
handles until CI killed the run. Nothing in the shutdown path interrupts
the per-job `SequencerPublisher`: `publisherFactory.stopAll()` only
interrupts the underlying `L1TxUtils`.

## Tests

- `checkpoint_proposal_job.test.ts`: pending L1 submission blocked in
the publisher resolves promptly on `job.interrupt()` (red without the
fix).
- `sequencer-publisher.test.ts`: `sendRequestsAt` returns immediately
when interrupted before the sleep starts (red without the fix).
)

Fixes
[F-697](https://linear.app/aztec-labs/issue/F-697/aztec-nr-extend-the-onchaindelivery-builder-for-secret-origin)
Fixes
[F-649](https://linear.app/aztec-labs/issue/F-649/fixaztec-nr-skip-note-log-linkage-for-onchain-constrained-delivery-to)

## Summary

- Extends `MessageDelivery` with separate typed builders for
unconstrained and constrained on-chain delivery.
- Adds internal tag-secret derivation config:
  - offchain: none
- onchain unconstrained: address-pair by default, with optional
non-interactive handshake selection
  - onchain constrained: non-interactive handshake
- Introduces `OnchainDeliveryMode` as the typed on-chain mode used by
tagging-index helpers and the HandshakeRegistry ABI instead of raw `u8`
values.
- Keeps invalid delivery/tag-derivation combinations rejected at compile
time where possible.
- Stops linking constrained-tagged note logs to note-hash squashing, so
removing a squashed note does not break the recipient tag index chain.
- Re-pins the HandshakeRegistry standard contract and updates the
generated standard-contract metadata.

Constrained tagging is still not fully wired up: the delivery config is
validated, but tag emission remains mocked through the existing
wallet-derived unconstrained path behind TODO(#14565).

Stack: #23875, then this PR, then #23866, then #23867.

---------

Co-authored-by: AztecBot <tech@aztec-labs.com>
Co-authored-by: Nicolas Chamo <nicolas@chamo.com.ar>
## Problem

The nargo fmt check for noir-projects lives only in the aggregate
`noir-projects/bootstrap.sh` `prep` function. CI stopped invoking that
script when the build moved to the root Makefile (90b7a95, "feat:
build with makefile"): the Makefile calls each subproject bootstrap
directly. Since then no nargo fmt check has run in CI, which is how
unformatted `.nr` files have been landing and showing up as unrelated
fmt diffs in later PRs.

## Fix

Extract the check into a `format_check` function in
`noir-projects/bootstrap.sh` and wire it as a
`noir-projects-format-check` Makefile target, mirroring
`bb-cpp-format-check`. It is a prerequisite of all four noir-projects
subproject builds, preserving the old `prep` ordering: the check doubles
as the nargo git dependency download, which must finish before the
subproject builds run nargo in parallel.

Also add `protocol-fuzzer/contracts` to the check and to the precommit
hook. It is a Nargo workspace that no check covered, and it had already
accumulated fmt drift. The nargo path in both loops is now anchored
(repo root in the bootstrap, absolute in the precommit) since the
previous relative form only resolved for workspaces one level under
noir-projects.

## Red green

The branch tip deliberately leaves 5 unformatted files untouched (3 from
the recent delivery module PRs, 2 in protocol-fuzzer/contracts), so CI
on this PR should fail in `noir-projects-format-check`. A follow up
commit will run `nargo fmt` to turn it green.
BEGIN_COMMIT_OVERRIDE
fix: interrupt publisher send-at-slot sleep on sequencer stop (#23990)
END_COMMIT_OVERRIDE
BEGIN_COMMIT_OVERRIDE
chore: improve noir contract test tooling (#23946)
feat(aztec-nr): extend OnchainDelivery builder for secret origin
(#23865)
feat(aztec-nr): wire handshake secret discovery into contract sync
(#23938)
fix(ci): run noir-projects nargo fmt check in CI (#24003)
END_COMMIT_OVERRIDE
)

Two changes scoped to the **public** repo
(`AztecProtocol/aztec-packages`) nightly flow, plus a follow-up
tightening of the scenario-test trigger. Private tagging is unchanged.

`ci3.yml`'s `ci-network-scenario` job fired on any current nightly tag
in both repos. Private produces both a `next` (v6) and a `v5-next` (v5)
nightly tag, so simply gating to the private repo still ran scenarios
against the v6 nightly. The nightly-triggered path is now gated to
**private repo + a `v5.` nightly tag**:

```yaml
(
  needs.validate-nightly-tag.outputs.is_current == 'true'
  && github.repository == 'AztecProtocol/aztec-packages-private'
  && startsWith(github.ref_name, 'v5.')
)
|| contains(github.event.pull_request.labels.*.name, 'ci-network-scenario')
```

`v5-next` is at `5.x.x` (tag `v5.x.x-nightly.*`) and `next` is at
`6.x.x` (tag `v6.x.x-nightly.*`), so `startsWith(github.ref_name,
'v5.')` selects the v5-next nightly only. The manual PR-label path
(`ci-network-scenario`) is preserved for ad-hoc dev runs.

`nightly-release-tag.yml`'s matrix tagged `[next, v5-next]` in both
repos. The branch list is now repo-dependent: private keeps `[next,
v5-next]`, public tags only `v5-next` (and `v4-next` via its existing
dedicated job). Net result: **public tags `v4-next` + `v5-next` only**,
private is untouched.

Nightly network scenario tests should run only against the private
v5-next nightly, and public should not produce a `next` nightly tag.
@ludamad ludamad enabled auto-merge June 11, 2026 20:55
@ludamad ludamad merged commit cd9e095 into merge-train/spartan-v5 Jun 11, 2026
21 of 25 checks passed
@ludamad ludamad deleted the pw/fix-v5-conflicts branch June 11, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants