@@ -144,6 +144,26 @@ const ABTests: ABTest[] = [
144144 groups : [ "control" , "variant" ] ,
145145 shouldForceMetricsCollection : false ,
146146 } ,
147+ /**
148+ * Puzzles & Games rollout, tier v0 (the master switch).
149+ *
150+ * Gates the baseline Puzzles & Games experience: the new Puzzles Hub
151+ * page, and the 6 V0 puzzle pages (sudoku easy/medium/hard/killer,
152+ * word-wheel, wordiply). At v0, there is no archive, no calendar, no
153+ * progress indicators, no sign-in-to-track-progress prompt, no "more
154+ * from puzzles" rail, and the hub's sub-nav has no links yet.
155+ *
156+ * This is the master switch for the whole Puzzles & Games experience:
157+ * turning it off (or down to 0%) hides everything: the hub, the V0
158+ * puzzle pages, and (by the cumulative design below) every later tier
159+ * too, since v1/v2 only take effect when this is also enabled.
160+ *
161+ * See `puzzles-new-hub-v1`/`puzzles-new-hub-v2` below for the later
162+ * rollout tiers, and `src/lib/puzzlesHubVersionExperiment.ts` /
163+ * `src/lib/puzzlesHubExperiment.ts` in dotcom-rendering for the
164+ * corresponding cumulative gate-check helpers
165+ * (`isPuzzlesHubEnabled`/`isPuzzlesHubV1Enabled`/`isPuzzlesHubV2Enabled`).
166+ */
147167 {
148168 name : "puzzles-new-hub" ,
149169 description : "Rollout of the new Puzzles Hub experience" ,
@@ -156,6 +176,68 @@ const ABTests: ABTest[] = [
156176 groups : [ "control" , "variant" ] ,
157177 shouldForceMetricsCollection : false ,
158178 } ,
179+ /**
180+ * Puzzles & Games rollout, tier v1 (w/c 12 Oct launch).
181+ *
182+ * Only takes effect when `puzzles-new-hub` (v0) is ALSO enabled for the
183+ * reader. This test does nothing on its own, by design, so the
184+ * rollout can never end up in an inconsistent state (e.g. v1 features
185+ * showing while the v0 baseline they build on is switched off).
186+ *
187+ * On top of v0, this tier activates: the full hub sub-nav links (to
188+ * /word-games, /logic-puzzles, /trivia-and-quizzes), a
189+ * sign-in-to-track-progress message, a calendar/archive view for
190+ * crosswords/logic-puzzles/word-games (not Wordiply, which has no
191+ * archive), progress indicators (Available/Completed), the "More from
192+ * Puzzles & Games" related-content rail, newsletter signup, and
193+ * changes to the existing crossword page (print CTA repositioning, a
194+ * "play other puzzles" container).
195+ *
196+ * To roll back from v1 to v0 without a deploy: flip this test's
197+ * `audienceSize` to `0 / 100` (or `status` to `"OFF"`) while leaving
198+ * `puzzles-new-hub` untouched.
199+ */
200+ {
201+ name : "puzzles-new-hub-v1" ,
202+ description :
203+ "Rollout of the v1 Puzzles & Games features (w/c 12 Oct), on top of the puzzles-new-hub v0 baseline" ,
204+ owners : [ "puzzles.team@guardian.co.uk" ] ,
205+ status : "ON" ,
206+ expirationDate : "2026-12-31" ,
207+ type : "server" ,
208+ audienceSize : 0 / 100 ,
209+ audienceSpace : "A" ,
210+ groups : [ "control" , "variant" ] ,
211+ shouldForceMetricsCollection : false ,
212+ } ,
213+ /**
214+ * Puzzles & Games rollout, tier v2 (future, no launch date confirmed
215+ * yet as of this writing).
216+ *
217+ * Only takes effect when BOTH `puzzles-new-hub` (v0) AND
218+ * `puzzles-new-hub-v1` are ALSO enabled for the reader, same
219+ * cumulative-by-design principle as v1 above, applied one tier further.
220+ *
221+ * On top of v0+v1, this tier activates: the On the Ball and Film Reveal
222+ * iframe games (Trivia and Quizzes group), a "Most played" container,
223+ * EventKit-driven navigation, migrating existing crossword pages onto
224+ * the new Puzzle Page template, and search-engine mobile app nudges.
225+ *
226+ * Kept at 0% until that work begins; there is nothing to roll back yet.
227+ */
228+ {
229+ name : "puzzles-new-hub-v2" ,
230+ description :
231+ "Rollout of the v2 Puzzles & Games features (no date confirmed yet), on top of the puzzles-new-hub/puzzles-new-hub-v1 baseline" ,
232+ owners : [ "puzzles.team@guardian.co.uk" ] ,
233+ status : "ON" ,
234+ expirationDate : "2026-12-31" ,
235+ type : "server" ,
236+ audienceSize : 0 / 100 ,
237+ audienceSpace : "A" ,
238+ groups : [ "control" , "variant" ] ,
239+ shouldForceMetricsCollection : false ,
240+ } ,
159241 {
160242 name : "identity-and-trust-consent-rr-banner-us" ,
161243 description :
@@ -215,7 +297,7 @@ const ABTests: ABTest[] = [
215297 status : "ON" ,
216298 audienceSize : 0 / 100 ,
217299 audienceSpace : "B" ,
218- groups : [ "control" , "variant" ] ,
300+ groups : [ "control" , "variant" , "variant2" ] ,
219301 shouldForceMetricsCollection : true ,
220302 } ,
221303 {
0 commit comments