Skip to content

Enable auto quorum set configuration by default#371

Open
Copilot wants to merge 2 commits intomainfrom
copilot/enable-auto-quorum-set-config-default
Open

Enable auto quorum set configuration by default#371
Copilot wants to merge 2 commits intomainfrom
copilot/enable-auto-quorum-set-config-default

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 16, 2026

SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING has been available in all stable stellar-core images since v22.3.0. The --enable-relaxed-auto-qset-config gate and old-image explicit quorum fallbacks are no longer needed.

  • Default --enable-relaxed-auto-qset-config to true in CLI option and internal default contexts
  • Remove old-image workarounds (skipHighCriticalValidatorChecks = false + quorumSetConfigType = RequireExplicitQset) from:
    • MissionVersionMixConsensus
    • MissionMixedImageLoadGeneration
    • MissionCatchupHelpers
    • MissionDatabaseInplaceUpgrade
    • MissionMixedImageNetworkSurvey
  • Update stale comments in StellarCoreSet.fs for QuorumSetConfiguration and skipHighCriticalValidatorChecks

The CLI flag is retained (now defaulting to true) for opt-out if needed. These missions now use the default PreferAutoQset path, which will use auto quorum when a homeDomain is set and fall back to explicit quorum otherwise.

Since stellar-core v22.3.0 shipped long ago, all stable images now
support the SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING config
option. This commit:

1. Changes --enable-relaxed-auto-qset-config default from false to true
2. Removes RequireExplicitQset and skipHighCriticalValidatorChecks=false
   overrides from old-image missions, allowing them to use auto quorum
   set configuration
3. Updates related comments in StellarCoreSet.fs

Agent-Logs-Url: https://github.com/stellar/supercluster/sessions/dcaac6b7-fa02-4444-a8bc-a8ff62e60327

Co-authored-by: marta-lokhova <9428003+marta-lokhova@users.noreply.github.com>
Copilot AI changed the title [WIP] Enable auto quorum set configuration by default after v22.3.0 release Enable auto quorum set configuration by default Apr 16, 2026
Copilot AI requested a review from marta-lokhova April 16, 2026 22:53
@marta-lokhova marta-lokhova marked this pull request as ready for review April 16, 2026 23:20
Copilot AI review requested due to automatic review settings April 16, 2026 23:20
Copy link
Copy Markdown
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 flips the default behavior of quorum set generation toward automatic quorum set configuration by enabling “relaxed auto-qset config” by default, and removes several mission-specific fallbacks that were only needed for older stellar-core images.

Changes:

  • Default --enable-relaxed-auto-qset-config to true (CLI option and default MissionContext in Program.fs, plus the test context).
  • Remove per-mission overrides that forced explicit quorum sets / disabled validator-check skipping for mixed-image and upgrade/catchup missions.
  • Refresh comments around quorum-set configuration modes and skipHighCriticalValidatorChecks.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/FSLibrary/StellarCoreSet.fs Updates docs/comments for quorum-set configuration and skipHighCriticalValidatorChecks.
src/FSLibrary/MissionVersionMixConsensus.fs Removes old-image explicit-qset/validator-check workarounds.
src/FSLibrary/MissionMixedImageNetworkSurvey.fs Removes old-image explicit-qset/validator-check workarounds.
src/FSLibrary/MissionMixedImageLoadGeneration.fs Removes old-image explicit-qset/validator-check workarounds.
src/FSLibrary/MissionDatabaseInplaceUpgrade.fs Removes old-image explicit-qset/validator-check workarounds.
src/FSLibrary/MissionCatchupHelpers.fs Removes old-image explicit-qset/validator-check workarounds from catchup set construction.
src/FSLibrary.Tests/Tests.fs Updates test MissionContext default for enableRelaxedAutoQsetConfig to true.
src/App/Program.fs CLI flag default changed to true, and default mission contexts updated accordingly.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 179 to +180
// Prefer automatic quorum set configuration. Fall back on explicit quorum
// set configuration if automatic configuration is not possible, or if
// --enable-relaxed-auto-qset-config is not set.
// set configuration if automatic configuration is not possible.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

The PreferAutoQset comment says it falls back to explicit quorum only when automatic configuration is not possible, but the implementation also forces an explicit quorum when missionContext.enableRelaxedAutoQsetConfig is false (see NetworkCfg.QuorumSet in StellarCoreCfg.fs). Consider updating the comment to reflect that PreferAutoQset only uses auto-qset when relaxed auto-qset is enabled (or otherwise clarify the meaning of “not possible”).

Copilot uses AI. Check for mistakes.
Comment on lines 182 to +185
// Require automatic quorum set configuration. Fail if automatic
// configuration is not possible. Uses automatic configuration even if
// --enable-relaxed-auto-qset-config is not set, so missions using this
// option *must* satisfy the HIGH quality validator checks present in
// stellar-core.
// configuration is not possible. Missions using this option *must* satisfy
// the HIGH quality validator checks present in stellar-core, or set
// `skipHighCriticalValidatorChecks` to `true`.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

This comment suggests setting skipHighCriticalValidatorChecks is sufficient to bypass the HIGH/CRITICAL validator checks, but the config key is only emitted when missionContext.enableRelaxedAutoQsetConfig is also true (see StellarCoreCfg.fs where SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING is gated). Please clarify this requirement here to avoid misleading mission authors.

Copilot uses AI. Check for mistakes.
Comment on lines +224 to +225
// SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING in stellar-core config,
// which disables validator checks for HIGH and CRITICAL validators.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

skipHighCriticalValidatorChecks is described as controlling whether SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING is set, but in the config generation it is additionally gated on missionContext.enableRelaxedAutoQsetConfig. Consider mentioning that this only takes effect when relaxed auto-qset config is enabled, so the field name/comment match runtime behavior.

Suggested change
// SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING in stellar-core config,
// which disables validator checks for HIGH and CRITICAL validators.
// SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING in stellar-core config
// when relaxed auto-qset config is enabled, which disables validator
// checks for HIGH and CRITICAL validators.

Copilot uses AI. Check for mistakes.
Comment thread src/App/Program.fs
@@ -524,7 +524,7 @@ type MissionOptions
[<Option("enable-relaxed-auto-qset-config",
HelpText = "Enables the use of automatic quorum set configuration on missions that may create core sets that do not satisfy the redundancy and history requirements placed on pubnet validators. Requires a stellar-core version that supports the SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING config option.",
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

With this option now defaulting to true, the help text reads like it is an opt-in flag. Consider amending the HelpText to explicitly state that it defaults to enabled and that users can opt out by passing --enable-relaxed-auto-qset-config=false (important if someone needs to run against an older stellar-core image that doesn’t support the config key).

Suggested change
HelpText = "Enables the use of automatic quorum set configuration on missions that may create core sets that do not satisfy the redundancy and history requirements placed on pubnet validators. Requires a stellar-core version that supports the SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING config option.",
HelpText = "Enabled by default. Uses automatic quorum set configuration on missions that may create core sets that do not satisfy the redundancy and history requirements placed on pubnet validators. Opt out with --enable-relaxed-auto-qset-config=false, which may be necessary when running against older stellar-core images that do not support the SKIP_HIGH_CRITICAL_VALIDATOR_CHECKS_FOR_TESTING config option.",

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

@bboston7 bboston7 left a comment

Choose a reason for hiding this comment

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

We should probably run these missions manually before merging. This looks fine, but I also wouldn't be surprised if this breaks a mission.

@bboston7
Copy link
Copy Markdown
Contributor

By "we", I mean "I". After all, I opened this ticket and assigned it myself.

@bboston7 bboston7 assigned bboston7 and unassigned marta-lokhova Apr 16, 2026
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.

follow up: enable auto quorum set configuration by default after v22.3.0 release

4 participants