@@ -32,19 +32,11 @@ func (c *Config) LoadExperiments(
3232 printDebug func (ctx context.Context , format string , a ... interface {}),
3333) {
3434 experiments := map [experiment.Experiment ]bool {}
35- // Load from flags
36- for _ , flagValue := range c .ExperimentsFlag {
37- experiments [experiment .Experiment (flagValue )] = true
38- }
39- printDebug (ctx , fmt .Sprintf ("active flag experiments: %s" , formatExperimentMap (experiments )))
40- // Load from project config file
41- projectConfig , err := ReadProjectConfigFile (ctx , c .fs , c .os )
42- if err != nil && slackerror .ToSlackError (err ).Code != slackerror .ErrInvalidAppDirectory {
43- printDebug (ctx , fmt .Sprintf ("failed to parse project-level config file: %s" , err ))
44- } else if err == nil {
45- printDebug (ctx , fmt .Sprintf ("active project experiments: %s" , formatExperimentMap (toExperimentMap (projectConfig .Experiments ))))
46- maps .Copy (experiments , toExperimentMap (projectConfig .Experiments ))
35+ // Load from permanently enabled list (lowest priority)
36+ for _ , exp := range experiment .EnabledExperiments {
37+ experiments [exp ] = true
4738 }
39+ printDebug (ctx , fmt .Sprintf ("active permanently enabled experiments: %s" , experiment .EnabledExperiments ))
4840 // Load from system config file
4941 userConfig , err := c .SystemConfig .UserConfig (ctx )
5042 if err != nil {
@@ -53,11 +45,19 @@ func (c *Config) LoadExperiments(
5345 printDebug (ctx , fmt .Sprintf ("active system experiments: %s" , formatExperimentMap (toExperimentMap (userConfig .Experiments ))))
5446 maps .Copy (experiments , toExperimentMap (userConfig .Experiments ))
5547 }
56- // Load from permanently enabled list
57- for _ , exp := range experiment .EnabledExperiments {
58- experiments [exp ] = true
48+ // Load from project config file
49+ projectConfig , err := ReadProjectConfigFile (ctx , c .fs , c .os )
50+ if err != nil && slackerror .ToSlackError (err ).Code != slackerror .ErrInvalidAppDirectory {
51+ printDebug (ctx , fmt .Sprintf ("failed to parse project-level config file: %s" , err ))
52+ } else if err == nil {
53+ printDebug (ctx , fmt .Sprintf ("active project experiments: %s" , formatExperimentMap (toExperimentMap (projectConfig .Experiments ))))
54+ maps .Copy (experiments , toExperimentMap (projectConfig .Experiments ))
5955 }
60- printDebug (ctx , fmt .Sprintf ("active permanently enabled experiments: %s" , experiment .EnabledExperiments ))
56+ // Load from flags (highest priority)
57+ for _ , flagValue := range c .ExperimentsFlag {
58+ experiments [experiment .Experiment (flagValue )] = true
59+ }
60+ printDebug (ctx , fmt .Sprintf ("active flag experiments: %s" , formatExperimentMap (experiments )))
6161 // Audit the experiments
6262 c .experiments = experiments
6363 for name := range c .experiments {
0 commit comments