Skip to content

Fix Conway committee ratification semantics + stale starttime in SlotConfig for transaction validation#11

Merged
satran004 merged 2 commits into
mainfrom
fix/invalid_committee_state_devnet
Jun 1, 2026
Merged

Fix Conway committee ratification semantics + stale starttime in SlotConfig for transaction validation#11
satran004 merged 2 commits into
mainfrom
fix/invalid_committee_state_devnet

Conversation

@satran004
Copy link
Copy Markdown
Member

@satran004 satran004 commented May 31, 2026

Summary

  • Fixes Yano Conway committee ratification to align committee presence, no-confidence recovery thresholds, hot-key active committee sizing, and devnet empty- committee behavior with ledger semantics.
  • For devnet with past time travel, SlotConfig with stale starttime

Problem

Yano inferred committee state from the committee member map and active member count. That made an empty but present Conway genesis committee look like no-confidence, so Yano-only devkit protocol parameter governance actions could remain active instead of enacting. Yano also always used normal UpdateCommittee thresholds, counted committee members without hot-key authorization for min-size, and tracked devnet config had an empty committee threshold that did not match the intended no-committee-gate devkit setup.

Solution

  • Add explicit persisted committeePresent state, rollback-safe through boundary deltas.
  • Store committeePresent=true during Conway genesis bootstrap and UpdateCommittee enactment.
  • Store committeePresent=false during NoConfidence enactment.
  • Resolve NORMAL vs NO_CONFIDENCE from committee presence only, not member activity.
  • Select UpdateCommittee DRep/SPO thresholds from normal vs no-confidence threshold fields based on the post-Phase-1 committee state.
  • Exclude members without authorized hot keys from post-bootstrap committee min-size checks.
  • Preserve fail-closed behavior for non-zero thresholds with zero voters, while allowing committee threshold 0/1 to pass committee approval.
  • Align tracked Yano devnet Conway genesis empty committee threshold to 0/1.

Tests

  • Added rollback tests for committeePresent.
  • Added committee state tests for empty present committee, absent committee, and present-but-inactive committee.
  • Added DRep and SPO threshold tests for UpdateCommittee after no-confidence.
  • Added Phase 1 to Phase 2 threshold visibility regression coverage.
  • Added hot-key min-size regression coverage.
  • Added threshold-zero committee vote coverage.
  • Added tracked devnet Conway genesis threshold guard.

@satran004 satran004 changed the title Fix Conway committee ratification semantics Fix Conway committee ratification semantics + stale starttime in SlotConfig for transaction validation Jun 1, 2026
@satran004 satran004 merged commit e4f676f into main Jun 1, 2026
1 check passed
@satran004 satran004 deleted the fix/invalid_committee_state_devnet branch June 1, 2026 13:30
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