Skip to content

Refactor local-sealing and self-healing-open into sealing-recovery#7679

Merged
cjen1-msft merged 49 commits intomicrosoft:mainfrom
cjen1-msft:sealing-recovery-codex
Feb 27, 2026
Merged

Refactor local-sealing and self-healing-open into sealing-recovery#7679
cjen1-msft merged 49 commits intomicrosoft:mainfrom
cjen1-msft:sealing-recovery-codex

Conversation

@cjen1-msft
Copy link
Contributor

This is primarily a UX change to the config, as well as renaming all of the internal things to follow this.
So:

  • Whole feature: Sealing-Based-Recovery (or sealing-recovery for short)
  • Self-Healing-Open -> Recovery-Decision-Protocol
  • Local-Sealing - unchanged but rejigged the config

The other change is an update to the test infra to store the sealing-recovery identity inside the Node which is locally sealing, allowing it to be read later by a recovering node.

Copilot AI review requested due to automatic review settings February 19, 2026 18:01
@cjen1-msft cjen1-msft requested a review from a team as a code owner February 19, 2026 18:01
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR refactors the sealing-based recovery feature with new terminology and reorganized configuration:

  • Renames "self-healing-open" to "recovery-decision-protocol" throughout the codebase
  • Consolidates "local-sealing" configuration under a new "sealing-recovery" umbrella config structure
  • Updates test infrastructure to store and track sealing_recovery_identity within Node objects
  • Reorganizes documentation to present the feature as "Sealing-based Recovery" with two sub-components: Recovery Decision Protocol and Local Sealing

Changes:

  • Renamed all C++ files, classes, functions, and namespaces from self_healing_open to recovery_decision_protocol
  • Restructured configuration: sealing_recovery.identity (required) and sealing_recovery.recovery_decision_protocol (optional nested config)
  • Enhanced test infrastructure with Node.get_sealing_recovery_identity() and automatic identity management
  • Updated documentation to clarify the distinction between the protocol (Recovery Decision Protocol) and the mechanism (Local Sealing)

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/infra/remote.py Renamed parameters from enable_local_sealing/previous_local_sealing_identity/self_healing_open_* to sealing_recovery_identity/recovery_decision_protocol_cluster_identities
tests/infra/node.py Added sealing_recovery_identity field and get_sealing_recovery_identity() method to Node class
tests/infra/network.py Refactored start_in_self_healing_open to start_in_recovery_decision_protocol with automatic identity extraction from existing_network
tests/e2e_operations.py Renamed test functions and updated to use new sealing_recovery_identity configuration structure
tests/config.jinja Restructured configuration template to nest recovery_decision_protocol under sealing_recovery
src/node/rpc/self_healing_open_handlers.h Deleted file (replaced by recovery_decision_protocol_handlers.h)
src/node/rpc/recovery_decision_protocol_handlers.h New file replacing self_healing_open_handlers.h with updated naming and config access
src/node/rpc/node_stub.h Updated interface method name from self_healing_open() to recovery_decision_protocol()
src/node/rpc/node_operation_interface.h Updated virtual method signature from self_healing_open() to recovery_decision_protocol()
src/node/rpc/node_operation.h Updated wrapper method delegation
src/node/rpc/node_interface.h Updated interface includes and method signature
src/node/rpc/node_frontend.h Updated handler initialization and subsystem calls
src/node/recovery_decision_protocol_impl.h Renamed from self_healing_open_impl.h, updated all class/namespace names
src/node/recovery_decision_protocol_impl.cpp Renamed from self_healing_open_impl.cpp, added get_identity() helper, updated config access paths
src/node/node_state.h Updated friend class declaration, member variable naming, and config access for sealing recovery
src/host/run.cpp Simplified config handling - removed previous_local_sealing_identity, directly assigns sealing_recovery config
src/host/configuration.h Replaced enable_local_sealing bool with sealing_recovery optional config structure
src/common/configuration.h Added RecoveryDecisionProtocolConfig and SealingRecoveryConfig JSON declarations, removed previous_local_sealing_identity
include/ccf/service/tables/recovery_decision_protocol.h Renamed from self_healing_open.h, updated namespace and table name constants
include/ccf/service/node_info_network.h Removed will_locally_seal_ledger_secrets field (feature detection now via sealing_recovery presence)
include/ccf/node/startup_config.h Added RecoveryDecisionProtocolConfig and SealingRecoveryConfig structs, removed enable_local_sealing and previous_local_sealing_identity fields
doc/operations/recovery.rst Reorganized documentation with Recovery Decision Protocol as primary section, Local Sealing as subsection
doc/host_config_schema/cchost_config.json Updated schema to reflect new sealing_recovery configuration structure
doc/audit/builtin_maps.rst Updated all table documentation from self_healing_open to recovery_decision_protocol
CMakeLists.txt Updated source file references from self_healing_open_impl.cpp to recovery_decision_protocol_impl.cpp

@cjen1-msft cjen1-msft added the run-long-test Run Long Test job label Feb 20, 2026
@achamayou achamayou added the run-long-test Run Long Test job label Feb 25, 2026
Copy link
Member

@achamayou achamayou left a comment

Choose a reason for hiding this comment

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

@cjen1-msft there are still a couple uses of cluster that ought to say network, but this otherwise looks good to me.

Copy link
Member

@achamayou achamayou left a comment

Choose a reason for hiding this comment

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

@cjen1-msft there are still a couple uses of cluster that ought to say network, but this otherwise looks good to me.

@cjen1-msft cjen1-msft marked this pull request as draft February 25, 2026 20:05
@cjen1-msft cjen1-msft marked this pull request as ready for review February 26, 2026 14:08
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 30 out of 30 changed files in this pull request and generated 2 comments.

@cjen1-msft cjen1-msft merged commit 676e3f3 into microsoft:main Feb 27, 2026
21 of 22 checks passed
@cjen1-msft cjen1-msft deleted the sealing-recovery-codex branch February 27, 2026 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-long-test Run Long Test job

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants