experimenter: Experiment end date can be incorrect if overridden in external config

External configuration files allow to change the end_date of the experiment. For example, for 1-click-pin-experiment see https://github.com/mozilla/jetstream-config/blob/cbf385c231ce8d830ccf22153a753c580047ff2e/1-click-pin-experiment.toml#L6

Experimenter still shows the end date that was configured when the experiment was initially created:

Screen Shot 2021-08-12 at 14 44 12

I’ve had a couple of cases where stakeholders/people looking at the result were confused and thought results were missing or experiments should have already completed.

This is related to an issue we found with configs overriding the reference_branch: https://github.com/mozilla/experimenter/issues/6129 One way of solving this is adding the end_date to the experiment metadata that Jetstream produces and use it as the source of truth.

┆Issue is synchronized with this Jira Task

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (14 by maintainers)

Commits related to this issue

Most upvoted comments

Ah interesting, we could potentially use that to display “Experiment analysis was skipped” in the sidebar instead of “Experiment results not yet ready”. Could that be helpful at all?

If an analysis is skipped, then there won’t be any analysis result data. So GCS won’t have any JSON files for overall, weekly, daily, … results. This is the case for the following experiment which has skip=true: https://experimenter.services.mozilla.com/nimbus/set-default-as-first-screen-100-roll-out

https://github.com/mozilla/jetstream/pull/860 adds an external_config JSON object to the metadata jetstream exports for each experiment. external_config is null if no external config exists or if the external config does not override any of the parameters: Screen Shot 2021-08-18 at 11 16 42

The experiment parameters that have not been changed and are the same as in Experimenter will be null. I also added skip which indicates that analysis is skipped for an experiment and url which links to the config in Github. Does this look reasonable?

So, if these properties are exposed via the analysis endpoint, then maybe we should override display of the local database values with the latest from analysis? Maybe even update them in the DB locally?

Yeah, that’s what I was thinking with my “I wonder if we should or if it’s plausible to pull in that metadata and change the experiment data from within Experimenter” comment. But… if the changes only impact the analysis data, updating the DB might be more trouble than it’s worth IMO, if we can simply display the overrides in a nice way at the top of the Results page, like with “Analysis date range: X - X” and probably also mention if there was a control branch/proposed enrollment override when one exists.

Probably should get @jaredlockhart’s opinion.

To me, this sounds like we “pass the ball” from Experimenter Console to Jetstream after experiment launch. (i.e. the source of truth has moved, no more edits allowed from Experimenter Console)

Yes, that sounds right 👍

So, if these properties are exposed via the analysis endpoint, then maybe we should override display of the local database values with the latest from analysis? Maybe even update them in the DB locally?

I think that would be ideal. Not sure how much work that would be on the Experimenter side. It might also be good enough to just show the parameters the analysis is based in some section on the Results page for now.

This is probably a function of me not yet being familiar with this part of Nimbus, but: Does this point to a general problem with source of truth for an experiment?

Should the end date of an experiment be overridden in external config? What’s the use case & rationale for that?

Not asserting that this shouldn’t happen, so much as trying to understand when & why it would happen. e.g. Is it expected that Experimenter Console should poll external configs to update its database and published DTOs? Do changes need to be pushed to Remote Settings based on external configs?

The config can override reference_branch, end_date, start_date, and proposed_enrollment. I think more properties could be added to that list in the future, but nothing is planned at the moment. Yeah, updating the experiment settings in Experimenter would probably be ideal.