Repository navigation
Description
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
BBPathand
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.a5b09c342is 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 andpnpm 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 currentmain. 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=1andCOPYFILE_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
[-]refactor(rust): group operator commands and node operation under crates/node[/-][+]refactor(rust): group operator commands and node operation under crates/ciphernode[/+][-]refactor(rust): group operator commands and node operation under crates/ciphernode[/-][+]refactor(rust): group ciphernode composition and operation under crates/ciphernode[/+]neogiacomo commentedon Nov 2, 2026
Latest owner-approved scope and implementation status are now reflected in the issue body:
crates/cli/crates/init; move only thenode-specific entrypoint into
crates/ciphernode/entrypoint.review, based on refactor(config)!: finish ciphernode configuration ownership #2409. The owner explicitly approved its 115-old/new-path whole-crate exception
(66 rename-folded files); all moved runtime code, tests, fixtures, and the manifest are byte-identical.
97 CLI comparisons, eight real scaffolding runs with identical generated files, and repository/
Docker-coverage/container-entrypoint/source-identity checks. Limits and the existing quiet-init Git
staging defect are recorded in the body; no real-proof or full-CI qualification claimed.
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.
fix(ci): install dependencies for repository checks
refactor(config)!: assign settings to capability owners
refactor(ciphernode)!: own node profiles and paths
refactor(config)!: finish ciphernode configuration ownership
refactor(entrypoint)!: move node operations into ciphernode family
refactor(rust): group ciphernode composition and workers
refactor(config)!: assign settings to capability owners
fix(cli): preserve configuration parse error context
refactor(ciphernode)!: own node profiles and paths
refactor(config)!: finish ciphernode configuration ownership
refactor(entrypoint)!: move node operations into ciphernode family
refactor(rust): group ciphernode composition and workers
refactor(config)!: assign settings to capability owners
fix(cli): preserve configuration parse error context
refactor(ciphernode)!: own node profiles and paths
refactor(config)!: finish ciphernode configuration ownership
refactor(entrypoint)!: move node operations into ciphernode family
refactor(rust): group ciphernode composition and workers
refactor(entrypoint)!: move node operations into ciphernode family
refactor(entrypoint)!: move node operations into ciphernode family