Skip to content

merge queue: queuing epbs (d5650d7) and #1080 together - #1081

Closed
mergify[bot] wants to merge 5 commits into
epbsfrom
mergify/merge-queue/3f5203f411
Closed

mergify[bot] wants to merge 5 commits into
epbsfrom
mergify/merge-queue/3f5203f411

Conversation

@mergify

@mergify mergify Bot commented Jun 10, 2026 •

Copy link
Copy Markdown

🎉 This pull request has been checked successfully and will be merged soon. 🎉

Branch epbs (d5650d7) and #1080 are queued together for merge.

This pull request has been created by Mergify to check the mergeability of #1080.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue rule default for merge:

  • check-success=test-suite-success

Required conditions to stay in the queue:

---
checking_base_sha: d5650d7dbc37c2f2f050273c651aca05c3139bec
previous_failed_batches: []
pull_requests:
  - number: 1080
    scopes: []
scopes: []
...

shane-moore and others added 5 commits June 5, 2026 18:15
Retargets the merged committee-scoped Role::PTCCommittee to a
validator-scoped, leaderless Role::PTCAttester per SIP-94 §3, and gives
PTC its own PartialSignatureKind::PTCAttester = 7 instead of reusing
PostConsensus. Wire bytes are unchanged (Role byte 7; kind value 7).

- msgid: rename the role, drop it from is_committee_role, max_round is
  None (non-QBFT), validator-scoped duty executor; add is_non_qbft_role.
- partial_sig: add PartialSignatureKind::PTCAttester = 7.
- message_validator: bucket PTC as pre-consensus, bind the PTCAttester
  role to the PTCAttester kind, enforce the per-validator
  one-message-per-packet bound (removing the dead committee occurrence
  helpers), flat duty_limit of Some(2), and reject consensus messages
  for non-QBFT roles via is_non_qbft_role.
- qbft_manager: drop the PTC routing stub; PTCAttester rejects QBFT
  messages as an inconsistent message id in both executor branches.
Add classification asserts for PTCAttester (not committee-scoped, no
max round, non-QBFT) so a silent revert of the retarget fails a test,
and extend the non-consensus-role rejection test to cover PTCAttester.
Also regroup PTCAttester into the non-QBFT arm of qbft_manager's
committee-executor match; same InconsistentMessageId outcome, clearer
intent.
Payload attestations are gossip-valid only for their own slot and
block-includable only at slot + 1, so PTC partials older than that are
useless. Move PTCAttester from the epoch-long TTL bucket (34 slots,
inherited from the committee-scoped design) to the Proposer/SyncCommittee
slot-bound bucket (3 slots).
Review feedback on #1080:

- Rename is_non_qbft_role to is_qbft_role and negate at the
  consensus-message guard, mirroring how is_committee_role is named
  positively and negated at call sites (petarjuki7).
- Pin every role's QBFT classification in a test so a new role landing
  in the wrong max_round arm fails loudly instead of silently flipping
  validation behavior (jnhsigmap).
- Drop the unreachable FailedToGetMaxRound variant: the guard already
  rejects every role without a max round, so the fallback now returns
  UnexpectedConsensusMessage, which is also what the branch would mean
  if it ever fired (jnhsigmap).
@github-actions

Copy link
Copy Markdown

Your PR title doesn't follow the Conventional Commit guidelines.

Example of valid titles:

  • feat: add new user login
  • fix: correct button size
  • docs: update README

Usage:

  • feat: Introduces a new feature
  • fix: Patches a bug
  • chore: General maintenance tasks or updates
  • test: Adding new tests or modifying existing tests
  • perf: Performance improvements
  • refactor: Changes to improve code structure
  • docs: Documentation updates
  • ci: Changes to CI/CD configurations
  • revert: Reverts a previously merged PR

Breaking Changes

Breaking changes are noted by using an exclamation mark. For example:

  • feat!: changed the API
  • chore(node)!: Removed unused public function

Help

For more information, follow the guidelines here: https://www.conventionalcommits.org/en/v1.0.0/

@mergify mergify Bot closed this Jun 10, 2026
@mergify
mergify Bot deleted the mergify/merge-queue/3f5203f411 branch June 10, 2026 23:11
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.94737% with 2 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (epbs@d5650d7). Learn more about missing BASE report.

Files with missing lines Patch % Lines
anchor/common/ssv_types/src/msgid.rs 97.29% 1 Missing ⚠️
anchor/message_validator/src/consensus_message.rs 97.43% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             epbs    #1081   +/-   ##
=======================================
  Coverage        ?   62.52%           
=======================================
  Files           ?      156           
  Lines           ?    26547           
  Branches        ?        0           
=======================================
  Hits            ?    16598           
  Misses          ?     9949           
  Partials        ?        0           
Flag Coverage Δ
rust 62.52% <98.94%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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.

2 participants