feat(framework): Persist and apply federation config overrides per run#6867
Merged
danieljanes merged 7 commits intomainfrom Mar 27, 2026
Merged
feat(framework): Persist and apply federation config overrides per run#6867danieljanes merged 7 commits intomainfrom
danieljanes merged 7 commits intomainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates how simulation/federation configuration overrides are stored (from ConfigRecord/binary blobs to SimulationConfig/JSON) and exposes the effective config to app processes via PullAppInputs.
Changes:
- Persist per-run federation config overrides on the Run record and add
LinkState.get_federation_config_overrides. - Populate
PullAppInputsResponse.federation_configby combining federation defaults with per-run overrides. - Remove legacy “GetFederationOptions” usage from the simulation runner and adjust tests/schema accordingly.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| framework/py/flwr/superlink/servicer/control/control_servicer_test.py | Updates run creation in tests to pass None for federation config overrides. |
| framework/py/flwr/superlink/servicer/control/control_servicer.py | Stores override_federation_config as run-level overrides (no ConfigRecord conversion). |
| framework/py/flwr/supercore/state/schema/linkstate_tables.py | Renames federation_options column to federation_config_overrides and changes storage type. |
| framework/py/flwr/supercore/state/schema/README.md | Updates ER diagram to reflect new column name/type. |
| framework/py/flwr/supercore/state/alembic/versions/rev_2026_03_18_add_run_type_to_run_table.py | Adds federation_config_overrides column and drops federation_options. |
| framework/py/flwr/simulation/app.py | Switches simulation runtime settings source to PullAppInputsResponse.federation_config. |
| framework/py/flwr/server/superlink/simulation/simulationio_servicer.py | Marks GetFederationOptions as not implemented. |
| framework/py/flwr/server/superlink/simulation/simulation_servicer_test.py | Updates simulation run creation to use SimulationConfig. |
| framework/py/flwr/server/superlink/serverappio/serverappio_servicer_test.py | Adjusts tests around federation options retrieval behavior. |
| framework/py/flwr/server/superlink/serverappio/serverappio_servicer.py | Merges federation defaults + run overrides and returns federation_config in PullAppInputs. |
| framework/py/flwr/server/superlink/linkstate/sql_linkstate.py | Stores/loads overrides as JSON; adds get_federation_config_overrides; removes legacy options method. |
| framework/py/flwr/server/superlink/linkstate/linkstate_test.py | Reworks tests to validate federation config overrides storage. |
| framework/py/flwr/server/superlink/linkstate/linkstate.py | Replaces abstract get_federation_options with get_federation_config_overrides. |
| framework/py/flwr/server/superlink/linkstate/in_memory_linkstate.py | Stores overrides per-run in memory; adds getter; removes legacy options store. |
| framework/py/flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor_test.py | Updates run creation call signature. |
| framework/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer_test.py | Updates run creation call signature. |
| framework/py/flwr/server/grid/inmemory_grid_test.py | Updates run creation call signature. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
framework/py/flwr/supercore/state/alembic/versions/rev_2026_03_18_add_run_type_to_run_table.py
Show resolved
Hide resolved
framework/py/flwr/server/superlink/serverappio/serverappio_servicer_test.py
Outdated
Show resolved
Hide resolved
PullAppInputs
jafermarq
previously approved these changes
Mar 27, 2026
jafermarq
approved these changes
Mar 27, 2026
danieljanes
approved these changes
Mar 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Persist simulation federation config overrides on each run and include the merged federation config directly in app input payloads.
What changed
SimulationConfigoverrides in linkstate for both in-memory and SQL backendsfederation_config_overrideson theruntablePullAppInputsPullAppInputs.federation_configinstead of the legacyGetFederationOptionsRPC