fix(benchmark): allow baseline scenarios with no overlays - #44
Draft
Tehsmash wants to merge 1 commit into
Draft
Conversation
OverlayStack.from_dict silently injected logic=[scenario_id] when the
user explicitly declared empty overlays (overlays: {}), making it
impossible to express a no-overlay baseline. The fallback in
preload_scenario_configs that loads the base manifest directly was also
gated on configs_dir being None, so it was unreachable in experiments
that mix overlay and no-overlay scenarios.
Remove the fallback injection in OverlayStack.from_dict — the default
still fires in MASScenarioSpec.from_dict when the overlays key is
absent entirely. Extend the base-manifest path in
preload_scenario_configs to also trigger when the scenario's flattened
overlay list is empty, regardless of whether configs_dir is set.
Signed-off-by: Sam Betts <1769706+Tehsmash@users.noreply.github.com>
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
Fixes a bug where benchmark scenarios declared with empty overlays (
overlays: {}) were silently skipped, making it impossible to run an app "baseline" scenario with no configuration changes.Root causes:
OverlayStack.from_dictinjectedlogic=[scenario_id]whenever all overlay lists were empty, defeating any explicit attempt to declare a no-overlay scenario. The default should only fire when theoverlayskey is absent entirely — which still happens viaMASScenarioSpec.from_dict.The base-manifest loading path in
preload_scenario_configswas gated onconfigs_dir is None, so it was unreachable in experiments mixing overlay and no-overlay scenarios.Fix:
OverlayStack.from_dictA baseline scenario can now be declared as: