Skip to content

refactor: split noir-projects into fnd/ and labs/ - #25007

Merged
nchamo merged 6 commits into
merge-train/fairiesfrom
nchamo/noir-projects-split
Jul 28, 2026
Merged

refactor: split noir-projects into fnd/ and labs/#25007
nchamo merged 6 commits into
merge-train/fairiesfrom
nchamo/noir-projects-split

Conversation

@nchamo

@nchamo nchamo commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

First step of splitting noir-projects by owner, ahead of the repo split: Foundation owns the protocol circuits and protocol contracts, Labs owns aztec-nr and the application-layer contracts and tooling. Grouping the sources by owner now makes the eventual extraction a clone-and-delete of one directory per repo. This PR is Noir-side only: the JS packages already got their matching split in #24998.

The change

Split into commits best reviewed one at a time (the intermediate states intentionally do not build; only the final state does, and PRs squash on merge):

  1. 5d291c2moves only. Pure git mv, no content changes.

    • fnd/: mock-protocol-circuits, noir-protocol-circuits, the protocol contracts (with their codegen list), gates_report.sh, and the chonk/rollup circuit-list JSONs.
    • labs/: aztec-nr, contract-snapshots, protocol-fuzzer, the account, app, fees, standard, test, libs and protocol_interface contract groups, and the noir-contracts build harness (workspace, bootstrap, pinned standard-contracts tarball, scripts).
  2. 7e37e09mechanical path rewrites. Every noir-projects/<project> reference gains its fnd/ or labs/ segment (scripts, docs, CI hash patterns, CODEOWNERS, Makefile), and aztec-nr's protocol_types dep crosses into fnd/. Historical docs keep the old layout since their links pin release tags that predate the move.

  3. 7daf4d8splits the noir-contracts pipeline in two. fnd/noir-contracts gets its own workspace (the three protocol contracts) and a trimmed bootstrap (no TXE tests, no docs flow, no pinned standards); the protocol-contracts data and aztec.js protocol contract type generators (the artifact consumers chore!: move protocol contracts out of noir-contracts.js #24998 left reading the old harness root) point at its target. labs/noir-contracts keeps the canonical harness: TXE test wiring, the docs/examples flow, gen_test_token, the pinned standard-contracts tarball, and the aztec_process + artifact-size scripts under its scripts/. Plus relative-depth fixes in moved scripts, orchestration/Makefile updates, fixes for path references that were already stale before the move, and the constructed paths the rewrite pass could not see (the root bench list's brace expansion, the aztec-up counter scaffold's dep-path sed, the cli-wallet claim flow's FeeJuice artifact lookup).

  4. 757b135d861aa25999600b21b52436861d70e83b — per-side orchestration + protocol contract tests (review follow-up). Replaces the top-level noir-projects/bootstrap.sh with fnd/bootstrap.sh and labs/bootstrap.sh, driven directly by the root Makefile: generate_variants moves into fnd/noir-protocol-circuits, and the format check runs the two sides serially in one target since they share the nargo dependency cache. Adds test_cmds to fnd/noir-contracts and a protocol-contracts-tests Makefile target, restoring the contract_class_registry nargo tests the split had dropped.

  5. 8a98624ab4652da5b93b64eee1becbd7ba5aca27 — cache-key fixes. Restores noir-projects/.rebuild_patterns (yarn-project and boxes hash it via a brace expansion the reference sweep could not see) and repoints noir-protocol-circuits' circuits_hash pattern at the fnd/ path so protocol-circuit test and bench cache keys vary with circuit sources again.
    Each side compiles its contracts into its own target/, so nothing at noir-projects/ top level remains except shared helpers (precommit.sh, scripts/run_test.sh); the root Makefile drives the two sides directly. The only cross-group source dep is aztec-nr → protocol_types, the boundary a follow-up PR turns into a versioned dependency.

@nchamo nchamo self-assigned this Jul 27, 2026
@nchamo nchamo 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 and removed ci-draft Run CI on draft PRs. labels Jul 27, 2026
@nchamo
nchamo force-pushed the nchamo/noir-projects-split branch from 1bef4ed to f2de9b9 Compare July 27, 2026 15:59
@nchamo nchamo added the ci-full Run all master checks. label Jul 27, 2026
@nchamo
nchamo force-pushed the nchamo/noir-projects-split branch 3 times, most recently from 13be31e to e9e20b4 Compare July 27, 2026 17:09
nchamo added 2 commits July 27, 2026 14:17
Pure git mv, no content changes. fnd/ gets mock-protocol-circuits,
noir-protocol-circuits, the protocol contracts (with their codegen
list), gates_report.sh and the circuit-list JSONs; labs/ gets aztec-nr,
contract-snapshots, protocol-fuzzer, the remaining contract groups and
the noir-contracts build harness (workspace, bootstrap, pinned
standard-contracts tarball, scripts). Does not build on its own: path
references and the harness split catch up in the next two commits.
Mechanical path updates only: every noir-projects/<project> reference
gains its fnd/ or labs/ group segment (scripts, docs, CI hash patterns,
CODEOWNERS, Makefile), harness references default to labs/noir-contracts
(the fnd consumers are repointed in the next commit), and aztec-nr's
protocol_types dep crosses into fnd/. Historical docs (versioned
snapshots, migration notes, old-tag examples) keep the old layout since
their links pin release tags that predate the move.
@nchamo
nchamo force-pushed the nchamo/noir-projects-split branch from e9e20b4 to 6bac190 Compare July 27, 2026 17:18
fnd/noir-contracts gets its own workspace (the three protocol contracts)
and a trimmed bootstrap: compile machinery only, no TXE tests (protocol
packages have none), no docs flow, no pinned standard contracts. The
protocol-contracts data and aztec.js protocol contract type generators
(the artifact consumers #24998 left reading the old harness root) point
at its target.

labs/noir-contracts keeps the canonical harness: TXE test wiring, the
docs/examples flow, gen_test_token, the pinned standard-contracts
tarball, and (per review) test_aztec_process.sh and
bench_artifact_sizes.sh, which move under its scripts/.

Also: relative-depth fixes (../../ -> ../../../) in moved projects'
scripts, run_test.sh anchors NARGO at the repo root, contract-snapshots'
repo_root() gains a level, orchestration/Makefile lists name the new
pipelines, fixes for path references that were already stale before the
move, and the constructed paths the rewrite pass could not see: the root
bench list's brace expansion, the aztec-up counter scaffold's dep-path
sed, and the cli-wallet claim flow's FeeJuice artifact lookup (now an
explicit path into the fnd target).
@nchamo
nchamo force-pushed the nchamo/noir-projects-split branch from 6bac190 to 7daf4d8 Compare July 27, 2026 18:00
@nchamo
nchamo marked this pull request as ready for review July 27, 2026 18:56

@nventuro nventuro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The contract_class_registry crate holds tests (plain nr tests, not txe) which are no longer being run. These just need nargo test.

Comment thread noir-projects/fnd/noir-contracts/bootstrap.sh Outdated
Comment thread noir-projects/bootstrap.sh Outdated
@nchamo
nchamo enabled auto-merge (squash) July 28, 2026 14:37
@nchamo
nchamo merged commit c2ca120 into merge-train/fairies Jul 28, 2026
13 checks passed
@nchamo
nchamo deleted the nchamo/noir-projects-split branch July 28, 2026 14:46
This was referenced Jul 28, 2026
AztecBot added a commit to noir-lang/noir that referenced this pull request Aug 3, 2026
aztec-packages moved noir-projects into fnd/ and labs/ subdirectories in
AztecProtocol/aztec-packages#25007, so every pinned project path in the
external-library and benchmark configs now points at a directory that no
longer exists at the newly pinned commit.

- noir-projects/aztec-nr            -> noir-projects/labs/aztec-nr
- noir-projects/noir-contracts      -> noir-projects/labs/noir-contracts
- noir-projects/noir-protocol-circuits/... -> noir-projects/fnd/noir-protocol-circuits/...

The expected-failure files under .github/critical_libraries_status are keyed
by project path, so they move alongside the config entries.
rangozd pushed a commit to rangozd/aztec-packages that referenced this pull request Aug 5, 2026
BEGIN_COMMIT_OVERRIDE
refactor: split noir-projects into fnd/ and labs/ (AztecProtocol#25007)
fix(aztec-nr): restrict raw note-enqueue sink to pub(crate) (AztecProtocol#24974)
END_COMMIT_OVERRIDE
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-full Run all master checks. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants