Skip to content

Unify operator and node startup configuration - #8309

Draft
Amaury Chamayou (achamayou) with Copilot wants to merge 4 commits into
mainfrom
copilot/remove-distinct-in-memory-config-type-again
Draft

Unify operator and node startup configuration#8309
Amaury Chamayou (achamayou) with Copilot wants to merge 4 commits into
mainfrom
copilot/remove-distinct-in-memory-config-type-again

Conversation

Copilot AI commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Startup converted the operator configuration into a near-identical in-memory type, preserving an obsolete host/enclave split and eagerly loading file inputs.

  • Single configuration type

    • Replace host::HostConfig and ccf::StartupConfig with public ccf::CCFConfig; remove the host-side conversion.
    • Preserve the operator JSON schema and node-to-node genesis format.
  • Node-owned input loading

    • Resolve file-backed inputs in node code where needed.
    • Retain runtime node data and pin service certificates across join retries, snapshot fetching, and recovery.
  • Public API migration

    • Expose configuration through ccf/node/configuration.h, with command settings under command.start, command.join, and command.recover.
    • Expose resolved node data separately on NodeConfigurationState; update consumers and migration notes.
    const auto& state = node_configuration->get();
    const auto& join = state.node_config.command.join;
    const auto& node_data = state.node_data;

Closes #7565.

Copilot AI and others added 3 commits September 8, 2026 08:40
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Copilot AI changed the title [WIP] Remove distinct in-memory config type Unify operator and node startup configuration Sep 8, 2026

Copilot AI 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.

🔵 Needs a closer look

It changes startup, recovery, attestation, and join trust-anchor handling across core host and node boundaries.

Pull request overview

Unifies operator and node startup configuration under the public ccf::CCFConfig API.

Changes:

  • Removes duplicate host/startup configuration types and migrates consumers.
  • Moves file-backed input loading into node startup paths.
  • Preserves genesis serialization and adds configuration/data retention tests.

Custom instructions used

  • .github/copilot-instructions.md
  • .github/instructions/changelog.instructions.md
  • .github/instructions/reviewing.instructions.md
File summaries
File Description
CHANGELOG.md Documents the public API migration.
CMakeLists.txt Moves environment utilities into the CCF implementation.
include/ccf/node/configuration.h Defines the unified configuration type.
include/ccf/node/node_configuration_interface.h Exposes resolved node data separately.
include/ccf/node/start_type.h Adds the public startup-mode enum.
python/pyproject.toml Updates the package version.
samples/apps/logging/logging.cpp Migrates node-data access.
src/common/configuration.h Updates JSON serialization declarations.
src/common/enclave_interface_types.h Uses the public startup-mode definition.
src/enclave/enclave.h Accepts unified configuration.
src/enclave/entry_points.h Updates enclave entry-point signature.
src/enclave/main.cpp Passes unified startup settings.
src/host/configuration.h Removes the redundant host configuration.
src/host/run.cpp Removes host-side conversion and input loading.
src/kv/kv_types.h Updates configuration include.
src/node/node_configuration_subsystem.h Publishes configuration and resolved node data.
src/node/node_state.h Loads and retains startup inputs in node state.
src/node/recovery_decision_protocol.h Updates configuration include.
src/node/recovery_snapshot_ledger.h Updates configuration include.
src/node/rpc/network_identity_subsystem.h Updates configuration include.
src/node/rpc/node_call_types.h Preserves the genesis wire model.
src/node/rpc/node_frontend.h Reads resolved node data.
src/node/rpc/node_interface.h Exposes unified configuration and node data.
src/node/rpc/test/frontend_test.cpp Updates the test configuration fixture.
src/node/rpc/test/node_frontend_test.cpp Tests configuration and genesis serialization.
tests/governance.py Tests file-backed startup data retention.
Review details
  • Files reviewed: 26/26 changed files
  • Comments generated: 0
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove distinct in-memory config type

3 participants