Repository navigation
refactor(ciphernode)!: own node profiles and paths - #2407
neogiacomo wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 29 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
Architecture changeFrom
Every change (10)
Experimental. The page goes away when the pull request closes. |
Move node profile resolution and path derivation to e3-ciphernode-config with native NodeConfig and UnscopedNodeConfig APIs. Migrate callers directly and keep application loading and URL parsing in the CLI. Preserve configuration keys, defaults, precedence, durable locations and runtime behavior. Keep real network/release identity in e3-config until the final ownership slice removes that package; add no forwarding facade. Part of #2383; stacked on #2406. BREAKING CHANGE: node profile and path imports now use e3_ciphernode_config. AppConfig and UnscopedAppConfig are renamed to NodeConfig and UnscopedNodeConfig, without old-import aliases. No operator reset or resync is required.
e926dce to
1896cdd
Compare
Move network/bootstrap policy and compiled release identity into e3-ciphernode-config with their unchanged release manifest and tests. Migrate direct consumers and the contract-tooling reader, remove unused dependencies, and delete e3-config without a compatibility facade. Preserve configuration behavior, exact release identity, counters, durable locations, P2P protocol names, and runtime admission policy. Update owner guidance, Docker/workspace inputs, diagnostics, and blueprint references. Part of #2383; stacked on #2407. BREAKING CHANGE: network and release imports now use e3_ciphernode_config; e3-config is removed. The release manifest now lives at crates/ciphernode/config/protocol-release.toml. No operator reset or resync is required.
What and why
Part of #2383, stacked on #2406 (
refactor/2383-config-prover-owner), notmain.77 old/new review paths, counting both sides of renames; 75 rename-folded files.
e3-ciphernode-configincrates/ciphernode/configowns the actual node profile/scoping and pathimplementations, with native
NodeConfigandUnscopedNodeConfigAPIs. MoveNodeDefinition,OsDirs,combine_unique, andPathsEnginewith their implementations and tests.discovery/YAML helpers/tests together in
crates/cli/src/app_config.rs.ValidUrlinline intocrates/cli/src/cli.rs, preserving URL normalization,command-line validation, and permissive remote conversion. Add focused and executable coverage.
No compatibility facade, aliases, forwarding exports, or duplicate ownership. Remove the old
profile/path/validation modules and exports.
e3-configstill owns real network/bootstrap andrelease-identity behavior; the next reviewed slice moves that behavior and deletes the package.
The complete remaining move exceeded the review budget, so this PR stops at the existing boundary.
Intentional Rust API break: import profile/path APIs from
e3_ciphernode_config; renameAppConfig/UnscopedAppConfigtoNodeConfig/UnscopedNodeConfig. The!does not mean anoperator reset/resync or a protocol change.
Stack refresh (2026-11-02): signed head
1896cdd95is now based directly on #2406 heade512acc22, inheriting currentmainand #2397's repository-check dependency-install repair.The reviewed slice diff is byte-identical (
git range-diffalso reports an unchanged patch);pushed with an exact expected-head lease and normal hooks. The refreshed
CI workflow passed at this
current head; #2383 tracks the remaining reviewer/merge gates.
Verification
228 Rust tests passed; zero ignored in the selected runs:
cargo test --locked --offline -p e3-ciphernode-config -p e3-config— 22.cargo test --locked --offline -p e3-cli -p e3-entrypoint -p e3-daemon-server --tests— 162.cargo test --locked --offline -p e3-ciphernode-builder --lib— 33.cargo test --locked --offline -p e3-evm --lib node_release::— 4.cargo test --locked --offline -p e3-net --test network_isolation— 2.cargo test --locked --offline -p e3-tests --test layout_lock— 1, unchanged fixture.cargo test --locked --offline -p e3-tests --test integration test_p2p_actor -- --test-threads=1— 4.Normal CLI builds pass before/after. 97 executable before/after cases have identical exit codes,
stdout and stderr, covering discovery, named nodes, absolute/relative path overrides, precedence,
metadata, telemetry, numeric limits, backend rejection, EVM settings, and print-env output. New URL
tests and the extended daemon loopback case also passed against the old implementation before moving it.
Passed:
pnpm lint,pnpm check:pnpm,pnpm check:license,pnpm check:repository,pnpm check:links,pnpm check:bindings,pnpm check:addresses,pnpm check:crypto-config,format/diff checks, eight blueprint documentation tests, blueprint rendering, and
bash crates/tests/docker/test-ciphernode-entrypoint.sh.The path engine is byte-identical; node implementation and 45 caller files match after only native
names/imports and formatting. Locked metadata adds only the local settings owner; existing versions
and external identities stay unchanged. CLI/entrypoint production graphs add only that owner;
narrower runtime graphs drop obsolete directory/path/YAML edges. The canonical all-pair circuit
source hash remains
0184f95b66764893. Release manifest, network/release implementations, and exactworkspace version are unchanged.
Builds used
E3_ZK_PROVER_SKIP_FIXTURE_BUILD=1andCOPYFILE_DISABLE=1; no assertions or productionproof guards were disabled. Harness feature unification is not production or real-proof qualification.
Known limits, not bypassed:
references, and 115 moved/broken facts (116 before). No missing owners, paths, or unmatched facts.
evm/indexer/src/repo.rs.pnpm evm:buildTypeScript errors were not rerun; no contracts, ABIs, TypeScript,generated artifacts, or release-manifest reader paths change here.
jobs. Path-filtered jobs remain skipped; this is not exhaustive old-data/mixed-peer,
deployed-verifier, OpenVM-worker, or rollout qualification.
Compatibility
Reviewed the actual diff against
docs/architecture/design-principles.md,docs/architecture/persistence-and-replay.md,docs/architecture/network-delivery.md, anddocs/architecture/upgrades.md, checking moved implementations, direct callers, metadata, runtimeguards, layout fixtures, and executable behavior. No actionable runtime/protocol finding was
identified. This is implementation review, not independent human approval or release qualification.
Configuration keys/defaults/precedence, backend rejection, operator identity/store paths, chain
ordering, and runtime policy are preserved. No durable/wire schema, event identity, replay/actor
ordering, committee/threshold/proof statement, cryptographic input, guest/verifier identity,
network ID, release-ID computation, or counter changes.
Proposed upgrade class: compatible node-binary replacement after normal qualification; keep both
counters. No migration, reset/resync, restamp, governance step, release, or rollout is performed.
Source rollback restores owners/imports/manifests together; operational rollback remains governed
by the existing release-controller/storage policy. Human review and qualification remain required.