Skip to content

docs: document enrollmentsMap 12-month retention limit#820

Merged
jaredlockhart merged 7 commits intomainfrom
enrollments-map-docs
Apr 9, 2026
Merged

docs: document enrollmentsMap 12-month retention limit#820
jaredlockhart merged 7 commits intomainfrom
enrollments-map-docs

Conversation

@jaredlockhart
Copy link
Copy Markdown
Contributor

Because

  • The enrollmentsMap targeting attribute includes both active and inactive
    enrollment records, but inactive records are permanently deleted after
    12 months (365.25 days) from the original enrollment date
  • This caused a production issue where a rollout depending on a holdback
    via enrollmentsMap started losing clients when the holdback's enrollment
    records aged out of the store
  • The existing documentation did not mention the retention behavior or the
    difference between enrollmentsMap and activeExperiments/activeRollouts

This commit

  • Expands the enrollmentsMap entry in the targeting attributes table
  • Adds a detailed subsection explaining enrollmentsMap behavior, the
    12-month retention limit, and how to handle holdback transitions
  • Adds a comparison table showing the differences between the three
    enrollment-related targeting attributes

Because

* The enrollmentsMap targeting attribute includes both active and inactive
  enrollment records, but inactive records are permanently deleted after
  12 months (365.25 days) from the original enrollment date
* This caused a production issue where a rollout depending on a holdback
  via enrollmentsMap started losing clients when the holdback's enrollment
  records aged out of the store
* The existing documentation did not mention the retention behavior or the
  difference between enrollmentsMap and activeExperiments/activeRollouts

This commit

* Expands the enrollmentsMap entry in the targeting attributes table
* Adds a detailed subsection explaining enrollmentsMap behavior, the
  12-month retention limit, and how to handle holdback transitions
* Adds a comparison table showing the differences between the three
  enrollment-related targeting attributes
Because

* Targeting cannot be modified on already-launched experiments/rollouts

This commit

* Replaces "update dependent targeting expressions" with the correct
  workflow: clone the dependent experiment with updated targeting,
  launch the clone, then end the original
Because

* Active enrollments are never cleaned up regardless of age
* The previous wording could be misread as a hard 12-month cap on all
  enrollment records

This commit

* Clarifies that enrollmentsMap entries persist indefinitely while the
  experiment is live
* Specifies the 12-month cleanup only starts after the experiment ends
* Notes that clients who enrolled earlier are affected first
* Updates the retention column in the comparison table
Because

* The docs should describe behavior, not recommend specific workflows

This commit

* Removes the holdback transition example and clone-and-replace guidance
@jaredlockhart jaredlockhart marked this pull request as ready for review April 9, 2026 16:06
```

:::warning 12-Month Retention After Ending
Enrollment records stay in `enrollmentsMap` **indefinitely while the experiment/rollout is live** — there is no time limit for active enrollments. The retention limit only applies after an experiment **ends**: once an enrollment becomes inactive, its record is permanently deleted from the client's store **12 months (365.25 days) after the original enrollment date**. Once deleted, the key is removed from `enrollmentsMap` and any targeting expression that references it will no longer match.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because

* Review feedback from Beth to link to the actual code

This commit

* Adds a Searchfox link to _cleanupOldRecipes() in ExperimentStore.sys.mjs
Because

* The webpack entry in yarn.lock was missing its resolved URL and
  integrity hash, causing yarn to install 5.106.0 instead of the
  pinned 5.89.0
* webpack 5.106.0 has a breaking change in ProgressPlugin that is
  incompatible with webpackbar 5.0.2, failing the build

This commit

* Adds the resolved URL and integrity hash for webpack 5.89.0
Because

* The mozilla-central source link could shift as lines are added/removed

This commit

* Uses a specific revision hash in the Searchfox link so it stays stable
@jaredlockhart jaredlockhart merged commit 670a8a5 into main Apr 9, 2026
2 checks passed
@jaredlockhart jaredlockhart deleted the enrollments-map-docs branch April 9, 2026 16:21
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.

2 participants