Skip to content

gui: add wait for supermajority#8949

Merged
jherrera-jump merged 1 commit intofiredancer-io:mainfrom
jherrera-jump:jherrera/gui-wait-for-supermajority
Mar 27, 2026
Merged

gui: add wait for supermajority#8949
jherrera-jump merged 1 commit intofiredancer-io:mainfrom
jherrera-jump:jherrera/gui-wait-for-supermajority

Conversation

@jherrera-jump
Copy link
Copy Markdown
Contributor

@jherrera-jump jherrera-jump commented Mar 17, 2026

  • Add wait_for_supermajority phase to full client boot state machine

@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch 3 times, most recently from 2cd354d to 471b51d Compare March 17, 2026 22:38
@jherrera-jump jherrera-jump requested a review from Copilot March 17, 2026 22:39
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 extends the Firedancer GUI/WebSocket API to expose “waiting for supermajority” (WFS) boot progress details, including a new boot phase, additional summary fields, and a new websocket topic that streams which staked peers are currently offline during WFS.

Changes:

  • Add a new boot progress phase waiting_for_supermajority and export WFS-related progress/identity fields in the summary.boot_progress websocket payload.
  • Wire snapshot manifest messages into the GUI tile so the GUI/peers view can derive restart-attempt information and build the staked-peer set for WFS offline tracking.
  • Add a new websocket topic wfs_offline_peers.update that emits edge-triggered add/remove updates for staked peers that are offline/online during WFS.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/disco/topo/fd_topo.h Adds GUI tile config fields for WFS bank hash and expected shred version.
src/disco/gui/fd_gui_tile.c Adds a new GUI input link kind for snapshot manifests and initializes GUI WFS summary fields.
src/disco/gui/fd_gui_printf.h Declares a new peers printf function for wfs_offline_peers updates.
src/disco/gui/fd_gui_printf.c Emits WFS fields in summary.boot_progress and implements wfs_offline_peers.update serialization.
src/disco/gui/fd_gui_peers.h Adds WFS offline peer tracking structures and manifest handler declaration.
src/disco/gui/fd_gui_peers.c Builds WFS peer set from snapshot manifest, tracks online/offline transitions, and publishes websocket updates.
src/disco/gui/fd_gui.h Adds WFS fields to GUI summary and declares snapshot manifest handler; adds new boot progress phase constant.
src/disco/gui/fd_gui.c Integrates gossip WFS state into boot progress state machine; parses manifest to derive restart attempt.
src/app/firedancer/topology.c Wires snapin_manif into the GUI tile and passes WFS config values into GUI tile config.
book/api/websocket.md Documents new WFS summary fields, prev_stake, and the new wfs_offline_peers topic.

Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_peers.c
Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread book/api/websocket.md Outdated
Comment thread book/api/websocket.md Outdated
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

Adds GUI/websocket support for a new boot phase (waiting_for_supermajority) and related cluster-restart telemetry, including per-peer offline tracking during that phase.

Changes:

  • Introduces waiting_for_supermajority as a new boot progress phase and publishes wait_for_supermajority_* fields in the summary.boot_progress websocket payload.
  • Plumbs wait_for_supermajority configuration (bank hash + expected shred version) into the GUI summary state.
  • Adds wfs_offline_peers websocket topic and adds prev_stake to peer vote info.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/disco/topo/fd_topo.h Adds GUI tile config fields for WFS bank hash + expected shred version.
src/disco/gui/fd_gui_tile.c Wires new snapin_manif input to GUI + peers handlers; propagates WFS config into GUI summary.
src/disco/gui/fd_gui_printf.h Declares new websocket printer for wfs_offline_peers updates.
src/disco/gui/fd_gui_printf.c Emits new boot phase + WFS fields; adds prev_stake; implements wfs_offline_peers update payload printing.
src/disco/gui/fd_gui_peers.h Adds state for tracking WFS offline peers and a manifest handler API.
src/disco/gui/fd_gui_peers.c Builds offline-peer set from snapshot manifest; tracks online/offline transitions and publishes websocket updates.
src/disco/gui/fd_gui.h Adds boot phase constant + stores WFS configuration and WFS boot-progress fields.
src/disco/gui/fd_gui.c Drives boot phase transitions using gossip WFS metrics; extracts restart attempt from snapshot manifest.
src/app/firedancer/topology.c Connects snapin_manif to GUI tile and populates GUI WFS config from config.
book/api/websocket.md Documents new wait_for_supermajority_* fields, prev_stake, and new wfs_offline_peers topic.

Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread book/api/websocket.md Outdated
Comment thread book/api/websocket.md
Comment thread src/disco/gui/fd_gui_peers.c
Comment thread src/disco/gui/fd_gui_peers.c Outdated
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from fcf086f to a6332d3 Compare March 18, 2026 17:29
@jherrera-jump jherrera-jump requested review from Copilot and removed request for Copilot March 18, 2026 17:29
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

Adds a new waiting_for_supermajority phase to the full-client GUI boot progress state machine and extends peer/snapshot-driven GUI telemetry to support cluster-restart workflows (including previous-epoch stake and offline-staked-peer tracking).

Changes:

  • Extend boot progress with a waiting_for_supermajority phase and expose WFS-related fields over the websocket summary.boot_progress topic.
  • Plumb snapshot manifest messages into the GUI tile and use them to compute/report WFS attempt and staked-peer offline/online deltas.
  • Add prev_stake reporting for peers (previous epoch’s activated stake).

Reviewed changes

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

Show a summary per file
File Description
src/disco/topo/fd_topo.h Adds GUI tile config fields for WFS bank hash + expected shred version.
src/disco/gui/fd_gui_tile.c Adds a new input kind for snapshot manifest and forwards it to GUI/peers subsystems; initializes WFS summary fields.
src/disco/gui/fd_gui_printf.h Declares websocket printer for wfs_offline_peers updates.
src/disco/gui/fd_gui_printf.c Adds new boot progress phase string + WFS boot fields; prints prev_stake; implements wfs_offline_peers update topic.
src/disco/gui/fd_gui_peers.h Adds prev_stake storage and WFS offline-peer tracking structures/APIs.
src/disco/gui/fd_gui_peers.c Implements manifest-driven WFS offline peer tracking and sets prev_stake from previous epoch stakes.
src/disco/gui/fd_gui.h Adds WFS fields to GUI summary; adds new boot phase constant; declares manifest handler.
src/disco/gui/fd_gui.c Adds WFS-aware boot progress transitions and sampling; extracts restart attempt from snapshot manifest.
src/app/firedancer/topology.c Wires snapin_manif into GUI tile and plumbs WFS config into GUI tile config.
book/api/websocket.md Documents new boot progress phase/fields, prev_stake, and wfs_offline_peers websocket topic.

Comment thread src/disco/gui/fd_gui.c
Comment thread src/disco/gui/fd_gui.c Outdated
Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_peers.c Outdated
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 extends the GUI/websocket surface area to support a new full-client boot phase (waiting_for_supermajority) and exposes additional cluster-restart and peer stake context (including previous-epoch stake and offline-staked-peer updates derived from the snapshot manifest).

Changes:

  • Add waiting_for_supermajority to the GUI boot progress state machine and websocket output, including WFS configuration + progress metrics.
  • Plumb snapshot manifest messages into the GUI tile and peers subsystem, and add a wfs_offline_peers websocket topic.
  • Add prev_stake to peer vote-account JSON payloads (where available).

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
src/disco/topo/fd_topo.h Adds GUI tile config fields for WFS bank hash and expected shred version.
src/disco/gui/fd_gui_tile.c Adds snapin_manif input handling and routes snapshot manifest into GUI + peers.
src/disco/gui/fd_gui_printf.h Declares websocket printer for wfs_offline_peers updates.
src/disco/gui/fd_gui_printf.c Emits new boot_progress phase/fields; adds wfs_offline_peers.update formatting; adds prev_stake field to peer vote JSON.
src/disco/gui/fd_gui_peers.h Adds WFS offline-peer tracking structures/state and manifest handler prototype; adds prev_stake to peer node model.
src/disco/gui/fd_gui_peers.c Implements manifest-derived offline-peer tracking and sets prev_stake via epoch data; adds online/offline transitions.
src/disco/gui/fd_gui.h Adds boot phase constant and summary fields for WFS config/metrics; declares snapshot manifest handler.
src/disco/gui/fd_gui.c Integrates gossip WFS state into boot progress transitions; tracks WFS metrics/attempt from snapshot manifest.
src/app/firedancer/topology.c Wires snapin_manif into GUI tile and passes WFS config into GUI tile.
book/api/websocket.md Documents new boot progress phase/fields, prev_stake, and the new wfs_offline_peers topic.

Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_tile.c Outdated
Comment thread src/disco/gui/fd_gui_printf.c Outdated
Comment thread book/api/websocket.md Outdated
Comment thread book/api/websocket.md Outdated
Comment thread book/api/websocket.md Outdated
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from fca67b0 to 5098d3b Compare March 18, 2026 20:39
@jherrera-jump jherrera-jump requested a review from Copilot March 18, 2026 20:39
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

Adds GUI support for Solana “wait for supermajority” (WFS) during full-client boot, including a new boot phase, WFS metrics surfaced over websocket, and a new websocket topic to show which staked peers are offline during cluster restart. Also extends peer payloads to include previous-epoch stake.

Changes:

  • Extend full-client boot progress state machine with waiting_for_supermajority and emit WFS-related fields/metrics over websocket.
  • Wire snapshot manifest (snapin_manif) into the GUI tile and use it to derive restart attempt + offline staked-peer tracking.
  • Add prev_stake for peers (previous epoch) and document the new websocket fields/topics.

Reviewed changes

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

Show a summary per file
File Description
src/disco/topo/fd_topo.h Adds GUI tile config fields for WFS bank hash + expected shred version.
src/disco/gui/fd_gui_tile.c Adds snapin_manif input handling and passes WFS config into GUI/peers subsystems.
src/disco/gui/fd_gui_printf.h Declares websocket printer for wfs_offline_peers updates.
src/disco/gui/fd_gui_printf.c Adds boot phase string + WFS fields to boot_progress JSON; implements offline-peer update message formatting.
src/disco/gui/fd_gui_peers.h Adds peer prev_stake and data structures for tracking offline staked peers during WFS.
src/disco/gui/fd_gui_peers.c Computes prev_stake from prior epoch data and implements offline-peer tracking fed by snapshot manifests + gossip activity.
src/disco/gui/fd_gui.h Adds boot phase constant, WFS summary fields, and snapshot manifest handler prototype.
src/disco/gui/fd_gui.c Wires WFS into boot-progress state transitions and extracts restart attempt from snapshot manifest hard forks.
src/app/firedancer/topology.c Connects snapin_manif to GUI tile and propagates WFS bank hash / shred version from config.
book/api/websocket.md Documents new boot phase/fields, prev_stake, and the wfs_offline_peers topic.

Comment thread book/api/websocket.md Outdated
Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_printf.c Outdated
Comment thread book/api/websocket.md Outdated
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from 5098d3b to 144ee09 Compare March 18, 2026 21:03
@jherrera-jump jherrera-jump requested a review from Copilot March 18, 2026 21:03
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

Adds a new GUI boot-progress phase for “waiting for supermajority” (cluster-restart/WFS) in the full-client startup state machine, and extends peer data surfaced to the frontend (previous epoch stake + WFS offline peer tracking).

Changes:

  • Add waiting_for_supermajority boot phase and emit WFS progress fields (bank hash, shred version, stake/peer counts, attempt).
  • Add prev_stake to peer vote-account JSON and compute it from the previous epoch’s stake table.
  • Add snapshot-manifest ingestion path and a wfs_offline_peers websocket topic to track staked peers that are offline during WFS.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/disco/topo/fd_topo.h Extend GUI tile config with WFS bank hash + expected shred version.
src/disco/gui/fd_gui_tile.c Add snapin_manif input handling and route manifest messages into GUI + peers.
src/disco/gui/fd_gui_printf.h Declare new websocket printer for wfs_offline_peers updates.
src/disco/gui/fd_gui_printf.c Emit new boot-progress fields; add prev_stake; implement wfs_offline_peers update printing.
src/disco/gui/fd_gui_peers.h Add prev_stake to peer model; add WFS offline-peer tracking structures and manifest handler API.
src/disco/gui/fd_gui_peers.c Compute prev_stake; ingest snapshot manifest into WFS peer set; maintain online/offline tracking + broadcasts.
src/disco/gui/fd_gui.h Add new boot phase enum and WFS-related summary + boot-progress fields; add manifest handler prototype.
src/disco/gui/fd_gui.c Drive new boot phase via gossip WFS metrics; set WFS fields; derive restart attempt from manifest hard-forks.
src/app/firedancer/topology.c Wire snapin_manif into GUI and pass WFS config into the GUI tile.
book/api/websocket.md Document new boot phase + WFS fields, new wfs_offline_peers topic, and prev_stake.

Comment thread src/disco/gui/fd_gui.c
Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_peers.c
Comment thread book/api/websocket.md Outdated
Comment thread book/api/websocket.md Outdated
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from 144ee09 to 628f37f Compare March 18, 2026 21:20
@jherrera-jump jherrera-jump requested a review from Copilot March 18, 2026 21:21
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

Adds GUI support for Firedancer’s “wait for supermajority” (WFS) startup behavior and exposes additional restart/epoch context to the frontend.

Changes:

  • Extend the full-client boot progress state machine with a waiting_for_supermajority phase and associated websocket fields.
  • Add snapshot-manifest plumbing into the GUI tile to surface WFS attempt metadata and to derive/report offline staked peers during WFS.
  • Include previous epoch stake (prev_stake) in peer vote-account JSON output (when available).

Reviewed changes

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

Show a summary per file
File Description
src/disco/topo/fd_topo.h Adds GUI tile config fields for WFS bank hash and expected shred version
src/disco/gui/fd_gui_tile.c Wires new snapin_manif input and routes snapshot manifest messages to GUI/peers logic
src/disco/gui/fd_gui_printf.h Declares websocket printer for WFS offline peer updates
src/disco/gui/fd_gui_printf.c Emits WFS boot progress fields, prev_stake, and new wfs_offline_peers topic updates
src/disco/gui/fd_gui_peers.h Adds data structures and APIs for WFS offline peer tracking and prev_stake storage
src/disco/gui/fd_gui_peers.c Implements manifest-driven offline-peer tracking and computes per-peer prev_stake from prior epoch info
src/disco/gui/fd_gui.h Adds boot phase enum value and WFS-related fields to GUI summary/boot progress
src/disco/gui/fd_gui.c Implements WFS boot phase transitions, metric sampling, and snapshot manifest handling for WFS attempt
src/app/firedancer/topology.c Adds snapin_manif link to gui inputs and plumbs WFS config into GUI tile config
book/api/websocket.md Documents new boot phase/fields, prev_stake, and the wfs_offline_peers websocket topic

Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui.c Outdated
Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_tile.c Outdated
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from 628f37f to b5a391c Compare March 18, 2026 21:39
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 extends Firedancer’s GUI-facing boot state machine and peer reporting to support a new wait-for-supermajority startup phase (driven by gossip WFS metrics and snapshot manifest data), and augments peer JSON with previous epoch stake.

Changes:

  • Add waiting_for_supermajority as a new GUI boot-progress phase and expose related WFS fields over the websocket API.
  • Wire snapshot manifest messages into the GUI tile to derive WFS restart attempt and publish per-peer offline/online deltas.
  • Include prev_stake in peer vote-account payloads and update websocket API docs accordingly.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/disco/topo/fd_topo.h Adds GUI tile config fields for expected WFS bank hash and shred version.
src/disco/gui/fd_gui_tile.c Adds a new input link kind for snapshot manifest and forwards manifest/DONE to GUI + peers subsystems.
src/disco/gui/fd_gui_printf.h / src/disco/gui/fd_gui_printf.c Adds new boot-progress JSON fields and a new wfs_offline_peers update printer; adds prev_stake output.
src/disco/gui/fd_gui_peers.h / src/disco/gui/fd_gui_peers.c Adds WFS offline peer tracking and snapshot-manifest staging/commit; computes and exposes prev_stake.
src/disco/gui/fd_gui.h / src/disco/gui/fd_gui.c Introduces the new boot-progress phase and WFS metrics sampling; stages restart attempt from manifest hard-forks.
src/app/firedancer/topology.c Wires the new snapin_manif link to the GUI and passes WFS config into the GUI tile.
book/api/websocket.md Documents new boot-progress fields, wfs_offline_peers topic, and prev_stake / vote_account schema updates.

Comment thread src/disco/gui/fd_gui_peers.h
Comment thread src/disco/gui/fd_gui_peers.h
Comment thread src/disco/gui/fd_gui.c
Comment thread src/disco/gui/fd_gui_peers.c Outdated
Comment thread src/disco/gui/fd_gui_peers.c
Comment thread src/disco/gui/fd_gui_peers.c
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

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Comment thread src/disco/gui/fd_gui.c
Comment thread book/api/websocket.md
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

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Comment thread src/disco/gui/fd_gui.c
@jherrera-jump jherrera-jump marked this pull request as ready for review March 19, 2026 22:10
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from ba494a4 to d887088 Compare March 19, 2026 22:24
@jherrera-jump jherrera-jump marked this pull request as draft March 20, 2026 20:12
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from d887088 to 6a4a0d7 Compare March 20, 2026 21:13
@jherrera-jump jherrera-jump requested a review from Copilot March 20, 2026 21:13
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

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Comment thread src/disco/gui/fd_gui_tile.c Outdated
Comment thread book/api/websocket.md Outdated
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from 6a4a0d7 to 48715e4 Compare March 20, 2026 21:21
@jherrera-jump jherrera-jump marked this pull request as ready for review March 20, 2026 21:21
Copilot AI review requested due to automatic review settings March 20, 2026 21:21
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

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Comment thread src/disco/gui/fd_gui_peers.h
Comment thread src/disco/gui/fd_gui_peers.c
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from 48715e4 to 031d505 Compare March 24, 2026 17:03
Copilot AI review requested due to automatic review settings March 25, 2026 01:45
@jherrera-jump jherrera-jump force-pushed the jherrera/gui-wait-for-supermajority branch from 031d505 to 7a2a154 Compare March 25, 2026 01:45
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

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Comment thread src/disco/gui/fd_gui_peers.c
Comment thread src/disco/gui/fd_gui_tile.c
@jherrera-jump jherrera-jump merged commit 3795e64 into firedancer-io:main Mar 27, 2026
21 checks passed
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.

3 participants