Skip to content

consensus: add fork-gated empty-active-set epoch escape to prevent co…#137

Merged
finalis-core merged 1 commit into
mainfrom
handshake
May 23, 2026
Merged

consensus: add fork-gated empty-active-set epoch escape to prevent co…#137
finalis-core merged 1 commit into
mainfrom
handshake

Conversation

@finalis-core

Copy link
Copy Markdown
Contributor

consensus: add fork-gated empty-active-set epoch escape to prevent committee deadlock

  • add network fork flag empty_active_set_epoch_escape_activation_height (mainnet: 10145)
  • implement deterministic checkpoint fallback in canonical derivation:
    • when next-epoch committee would be empty and active_validator_count == 0,
      select lexicographically smallest bonded non-banned/non-onboarding validator
      as a single-member fallback committee
  • mirror identical fallback logic in runtime checkpoint builder to preserve
    canonical/runtime parity and avoid checkpoint recomputation mismatches
  • emit runtime trace log:
    • epoch-empty-active-escape ... selected=<pub> reason=deterministic-fallback-member
  • keeps consensus progressing across epoch boundaries instead of stalling on
    empty active-set committee collapse

@finalis-core finalis-core self-assigned this May 23, 2026
@finalis-core finalis-core merged commit 8bfcdf6 into main May 23, 2026
10 checks passed
@finalis-core finalis-core deleted the handshake branch May 23, 2026 04:38
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.

1 participant