Skip to content

refactor(rust): group ciphernode composition and operation under crates/ciphernode #2383

Closed

Description

@neogiacomo

Parent: #2326 (under #2319). Design discussion: #2375.

Goal and agreed scope

Group ciphernode-owned composition, configuration, services, and process-fenced node operations
under crates/ciphernode/, retaining package boundaries except for the approved configuration split.
This family is neither an umbrella package nor a nested workspace.

Keep crates/cli and CLI-owned crates/init standalone: they also serve application developers.
This supersedes the earlier whole-package CLI/init relocation plan. Generic task-pool, console,
and filesystem capabilities stay put; builder redesign remains outside this issue (#2257).

Capability Owner
Node composition e3-ciphernode-builder, crates/ciphernode/builder
Daemon transport e3-daemon-server, crates/ciphernode/daemon-server
Compute dispatch e3-multithread, crates/ciphernode/multithread
Node operations e3-entrypoint, crates/ciphernode/entrypoint
Node profiles, paths, network/release identity e3-ciphernode-config, crates/ciphernode/config
Application loading and program settings CLI; discovery/YAML helpers/tests stay in app_config.rs
Resolved OpenVM worker settings Existing OpenVM host owner
Prover binary/runtime settings ZK prover owner
RPC/auth/EVM connection settings e3-evm-config, independent of EVM runtime

e3-config is fully removed: no compatibility facade, aliases, forwarding-only package, or duplicate
ownership. Deliberate Rust API/import changes are documented in each PR; configuration keys,
defaults, precedence, backend rejection, and durable locations are preserved.

Current delivery

GitHub now reports all five PRs merged by neogiacomo and this issue closed on November 4. Current main dff65f4a0 has exactly the verified stack's tree. These owner merges and issue closure occurred outside this rebase session; no merge was executed here.
The stack was rebased onto main 2da6f43cd (#2231); the table records reviewed pre-merge
head/base pairs, not separate CI runs on the subsequent squash commits.
Fresh CI and Repository Checks passed on all five current head/base pairs.

Slice Parent Current signed head Review paths / files Fresh CI Repository Checks
#2397 main 35598b3d3 82 / 56 passed passed
#2406 #2397 99bba6233 86 / 82 passed passed
#2407 #2406 6e943d7fb 77 / 75 passed passed
#2409 #2407 e6af8daa4 51 / 48 passed passed
#2410 #2409 4097cfd8d 115 / 69 passed passed

Both sides of renames count toward the below-100-path ceiling; #2410 retains its approved 115-path
exception. Original branch heads have backup refs; obsolete worktrees were removed, with small
dirty-source recovery archives retained. #2384 checkouts and untracked source hashes are unchanged.

November 4 rebase, local checks, and compatibility limits
  • Preserves fix(zk-prover): validate ZK readiness #2231's ZK-readiness validation. One import conflict retains both BBPath and
    CircuitInfo; all other reviewed implementation patches replay unchanged. Tip-to-tip changes are
    main's seven files (319 additions, 74 deletions) plus the workflow-generated contributor README
    block. The identical bot updates are preserved once at the foundation and inherited by descendants.
  • All published heads are signed; every non-README byte matches the locally verified source trees.
    .dev.3, advisory locks, deployment/docs updates, and CI layout are retained. a5b09c342 is absent.
  • 127 selected Rust tests passed, zero ignored:
    • cargo test --locked --offline -p e3-ciphernode-config -p e3-evm-config --lib: 33.
    • cargo test --locked --offline -p e3-zk-prover --lib backend::: 23, including fix(zk-prover): validate ZK readiness #2231 readiness.
    • cargo test --locked --offline -p e3-cli --tests: 66, including both Figment diagnostics and
      Noir setup/status. Earlier failing-before diagnostic evidence remains valid; it was not repeated.
    • cargo test --locked --offline -p e3-tests --test layout_lock: 1.
    • cargo test --locked --offline -p e3-tests --test integration test_p2p_actor: 4. This target's
      compilation covers the resolved integration import; it does not run full ZK setup.
  • 86 tooling/release tests passed: scripts 25, release 43, harnesses 4, blueprint docs 8,
    installed MCP launchers 2, and node-release file readers 4. Frozen install and pnpm evm:build
    pass. Normal pre-push hooks pass; the initial missing-nargo PATH prerequisite was fixed, not bypassed.
  • The Figment fix still extracts node/program settings directly from one provider, preserving keys,
    defaults, precedence, backend rejection, and key/source metadata. The full CLI library LGPL header
    and intentional public config modules are retained. No facade, aliases, or duplicate ownership.
  • Canonical release writer still produces the unchanged identity:
version          0.20.0-dev.3
protocol_version 9
node_generation  2
releaseId        0x87fdef2c1214c77afb1c3933cf0235f9cce2ecef20623287786347f4ea6e6df5
  • No new protocol, wire/schema, durable-path, circuit/verifier statement, or counter change relative
    to current main. Review references: persistence/replay, network delivery, upgrades, and repository
    testing. Existing assurance gaps remain open; compatible rolling replacement still needs normal
    qualification. Rollback restores owners/imports/wiring together; compatibility counters never decrease.
  • Builds use E3_ZK_PROVER_SKIP_FIXTURE_BUILD=1 and COPYFILE_DISABLE=1, without disabling assertions
    or production proof guards. Existing indexer unused-import warnings remain. No exhaustive real-proof,
    historical/mixed-fleet, deployed-verifier, scaffolding, or rollout qualification was rerun. Earlier
    730-test/28-comparison results are historical, not new-head evidence.
  • Quiet-init Git staging, invalid remote otel, outer-only CLI error printing, and unrelated
    blueprint drift remain separate follow-ups. Only one refactor(rust): group ciphernode composition and operation under crates/ciphernode #2383 worktree was recreated; shared Cargo
    outputs were reused, not deleted.

Completion gates

  • Implement revised ownership/layout and approved entrypoint module cleanup.
  • Rebase the five-PR stack onto current main, preserving reviewed path budgets and main's fixes.
  • Preserve diagnostic regressions and the full LGPL header; regenerate release evidence.
  • Run focused local checks and publish signed updates with normal hooks and exact leases.
  • Publish all PRs ready for review with their predecessor bases; subsequently merged by the owner.
  • Obtain fresh CI and Repository Checks success on every current head/base pair.
  • Obtain required independent reviewer approval (not revalidated by this rebase).
  • Merge in order and close refactor(rust): group ciphernode composition and operation under crates/ciphernode #2383. Observed owner actions outside this session; merged main matches the verified stack tree.

Activity

  1. self-assigned this
    on Oct 30, 2026
  2. changed the title [-]refactor(rust): group operator commands and node operation under crates/node[/-] [+]refactor(rust): group operator commands and node operation under crates/ciphernode[/+] on Oct 30, 2026
  3. changed the title [-]refactor(rust): group operator commands and node operation under crates/ciphernode[/-] [+]refactor(rust): group ciphernode composition and operation under crates/ciphernode[/+] on Nov 2, 2026
  4. neogiacomo commented on Nov 2, 2026

    @neogiacomo
    ContributorAuthor

    Latest owner-approved scope and implementation status are now reflected in the issue body:

    No further layout/configuration implementation remains under this revised scope. Keep the issue open
    for final review, authorized publication, downstream stack refresh/required CI, and merge in order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions