Skip to content

Probe decentralized browser transport in CI - #1231

Closed
ale18V wants to merge 1 commit into
test/federated-webapp-trainingfrom
test/decentralized-webapp-ci
Closed

ale18V wants to merge 1 commit into
test/federated-webapp-trainingfrom
test/decentralized-webapp-ci

Conversation

@ale18V

@ale18V ale18V commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator

What & why

This experimental follow-up to #1230 investigates the remaining decentralized portion of #1196 in GitHub Actions. It adds a real one-round WebRTC transport test with native Chrome, two Node peers, and a real CIFAR-10 signaling server. The same boundary fails locally because browser-to-Node peer connections time out, so this draft intentionally uses CI to determine whether the hosted runner behaves differently.

Technical plan

A dedicated Cypress configuration starts the server and two Node decentralized clients, while Chrome supplies the third participant. Each client contributes small deterministic weights and the test requires all three to reach the same aggregate. The isolated CI job enables focused signaling diagnostics and does not affect the ordinary Cypress or verified federated jobs.

Deviations from plan

  • Plan said to add full decentralized webapp training after transport validation; this PR stops at the real transport gate because native Chrome could not establish browser-to-Node WebRTC locally.

Todo

If the CI transport gate succeeds, extend the spec through the full webapp training flow and UI assertions. If it fails in CI as well, investigate browser-to-browser contexts or the browser/Node SDP negotiation before adding production coverage.

@ale18V
ale18V force-pushed the test/decentralized-webapp-ci branch from e73779c to 765bc50 Compare September 23, 2026 12:57
@ale18V

ale18V commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator Author

CI reproduced the local decentralized transport failure: all three peers joined cifar10, reported ready, and received peer lists, but round 0 never established the peer connections. The server retried signaling at 60-second intervals and ultimately emitted Signaling connection failure for all peers; Cypress timed out in onRoundBeginCommunication() after 4m30s.

Run evidence: https://github.com/epfml/disco/actions/runs/35863859110/job/107192148874

This confirms that the GitHub-hosted runner can start the real server, browser, and two Node participants and route localhost traffic. The remaining blocker is the browser↔Node WebRTC negotiation path, not CI process orchestration.

@ale18V

ale18V commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator Author

Closing this draft while the decentralized browser-to-peer path is still under active development. The branch remains available for the fix; this PR should only be reopened once the real decentralized test passes locally and on GitHub Actions.

@ale18V ale18V closed this Sep 23, 2026
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