Skip to content

Conversation

@cjen1-msft
Copy link
Contributor

I found two places where our spec overapproximates the behaviours of CCF.

First CheckQuorum can always trigger on a leader, so in the case of a single nodeconfiguration it can trigger in the spec but never in practise.

Next the DropIgnoredMessage was allowed to drop messages if they were ignored. We specifically don't ignore RequestVote messages from unknown replicas, while this is allowed by the spec.

Both of these were causing false liveness counterexamples in testing of the prevote changes.

@achamayou achamayou added the run-long-verification Run Long Verification jobs label Oct 20, 2025
@achamayou
Copy link
Member

@cjen1-msft when Model Checking, we pass --disable-check-quorum, which goes through here, here and ultimately here.

The simulation is doing some CheckQuorum though.

cjen1-msft and others added 2 commits October 20, 2025 15:41
Co-authored-by: Eddy Ashton <ashton.eddy@gmail.com>
@cjen1-msft cjen1-msft marked this pull request as ready for review October 20, 2025 15:07
@cjen1-msft cjen1-msft requested a review from a team as a code owner October 20, 2025 15:07
Copilot AI review requested due to automatic review settings October 20, 2025 15:07
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 fixes two instances where the TLA+ specification over-approximated CCF's behavior, causing false liveness counterexamples. The changes align the specification more closely with the actual implementation by restricting when CheckQuorum can trigger and when messages can be dropped.

  • Adds a constraint to prevent CheckQuorum from triggering in single-node configurations
  • Prevents DropIgnoredMessage from dropping RequestVoteRequest messages from unknown nodes

@cjen1-msft cjen1-msft added this pull request to the merge queue Oct 22, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Oct 22, 2025
@achamayou achamayou added this pull request to the merge queue Oct 22, 2025
Merged via the queue into microsoft:main with commit 0375c3f Oct 22, 2025
27 checks passed
@achamayou achamayou deleted the fix-spec branch October 22, 2025 18:24
@cjen1-msft cjen1-msft added the 6.x-todo PRs which should be backported to 6.x label Nov 5, 2025
cjen1-msft added a commit to cjen1-msft/CCF that referenced this pull request Nov 5, 2025
)

Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
Co-authored-by: Eddy Ashton <ashton.eddy@gmail.com>
cjen1-msft added a commit to cjen1-msft/CCF that referenced this pull request Nov 5, 2025
)

Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
Co-authored-by: Eddy Ashton <ashton.eddy@gmail.com>
@eddyashton eddyashton added the backported This PR was successfully backported to LTS branch label Dec 3, 2025
@eddyashton
Copy link
Member

Adding backported label - this was backported in #7436.

@eddyashton eddyashton removed the run-long-verification Run Long Verification jobs label Dec 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.x-todo PRs which should be backported to 6.x backported This PR was successfully backported to LTS branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants