Skip to content

[DO NOT MERGE] Expiry notices: stop the rollout (prepared revert, do not merge) - #51475

Open
Copons wants to merge 1 commit into
trunkfrom
revert/expiry-notices-rollout
Open

[DO NOT MERGE] Expiry notices: stop the rollout (prepared revert, do not merge)#51475
Copons wants to merge 1 commit into
trunkfrom
revert/expiry-notices-rollout

Conversation

@Copons

@Copons Copons commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Related to DOTCOM-16615

⚠️ Prepared in advance. Do not merge unless the new expiry notices are actually causing trouble. Kept as a draft so it can't land by accident — mark it ready and merge when needed.

Proposed changes

  • Take the rollout share to 0%.
  • Move the zero check ahead of the per-site override, so zero means zero: a site still carrying wpcom_expiry_notices_enabled = 1 from before the stop does not stay on the new notices. Without that ordering this would stop most of the rollout, not the rollout.

Both halves of the swap read the same predicate, so this single change also brings the previous notices back — wpcomsh's Atomic banner here, and the legacy plan-renew prompt on the WordPress.com side. No site ends up with no notice, and none gets two.

The wpcom_expiry_notices_enabled filter still runs last, so a single site can be forced back in to verify a fix without restarting the ramp.

Related product discussion/links

Does this pull request change what data or activity we track or use?

No. It stops the new notices rendering, so their Tracks events stop firing too. Nothing is added.

Testing instructions

Sequencing matters. The gate lives in jetpack-mu-wpcom, which reaches production on a package release — slower than a WordPress.com deploy. If you need to stop the notices now, the WordPress.com-side stop is the fast lever; it forces the same predicate false and takes effect in minutes. This PR is the durable stop, and the only one that reaches Atomic sites.

  1. On a site inside the rollout, confirm the new banner renders before merging.
  2. Apply this change; confirm the new banner is gone and the previous notice has returned — Atomic sites get wpcomsh's, WordPress.com Simple sites get the legacy plan-renew prompt.
  3. On a site carrying wp option update wpcom_expiry_notices_enabled 1, confirm it is also out. That option no longer pulls a site in.
  4. Confirm the escape hatch still works: add_filter( 'wpcom_expiry_notices_enabled', '__return_true' ); puts that one site back on the new notices.

Unit tests describe the stopped contract rather than the running one, so they move with the change: 1038 pass in packages/jetpack-mu-wpcom.

To restart the rollout, put wpcom_expiry_notices_rollout_percentage() back to 10 (or higher) and restore the override-before-zero ordering if you want hand-picked sites to work while the share is 0 again.

@Copons Copons self-assigned this Aug 21, 2026
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.

  • To test on WoA, go to the Plugins menu on a WoA dev site. Click on the "Upload" button and follow the upgrade flow to be able to upload, install, and activate the Jetpack Beta plugin. Once the plugin is active, go to Jetpack > Jetpack Beta, select your plugin (WordPress.com Site Helper), and enable the revert/expiry-notices-rollout branch.
  • To test on Simple, run the following command on your sandbox:
bin/jetpack-downloader test jetpack-mu-wpcom-plugin revert/expiry-notices-rollout

Interested in more tips and information?

  • In your local development environment, use the jetpack rsync command to sync your changes to a WoA dev blog.
  • Read more about our development workflow here: PCYsg-eg0-p2
  • Figure out when your changes will be shipped to customers here: PCYsg-eg5-p2

@github-actions github-actions Bot added [mu wpcom Feature] Expiry Notices [Status] In Progress [Tests] Includes Tests Bug When a feature is broken and / or not performing as intended labels Aug 21, 2026
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Thank you for your PR!

When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:

  • ✅ Include a description of your PR changes.
  • ✅ Add a "[Status]" label (In Progress, Needs Review, ...).
  • ✅ Add testing instructions.
  • ✅ Specify whether this PR includes any changes to data or privacy.
  • ✅ Add changelog entries to affected projects

This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation 🤖


Follow this PR Review Process:

  1. Ensure all required checks appearing at the bottom of this PR are passing.
  2. Make sure to test your changes on all platforms that it applies to. You're responsible for the quality of the code you ship.
  3. You can use GitHub's Reviewers functionality to request a review.
  4. When it's reviewed and merged, you will be pinged in Slack to deploy the changes to WordPress.com simple once the build is done.

If you have questions about anything, reach out in #jetpack-developers for guidance!


Wpcomsh plugin:

  • Next scheduled release: Atomic deploys happen twice daily on weekdays (p9o2xV-2EN-p2)

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.

@github-actions github-actions Bot added the [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. label Aug 21, 2026
@Copons
Copons force-pushed the revert/expiry-notices-rollout branch from 75b85e2 to 3eea706 Compare August 21, 2026 11:06
@jp-launch-control

jp-launch-control Bot commented Aug 21, 2026

Copy link
Copy Markdown

Code Coverage Summary

Coverage changed in 1 file.

File Coverage Δ% Δ Uncovered
projects/packages/jetpack-mu-wpcom/src/features/expiry-notices/expiry-notices.php 27/38 (71.05%) -15.79% 6 💔

Full summary · PHP report · JS report

Coverage check overridden by Covered by non-unit tests Use to ignore the Code coverage requirement check when E2Es or other non-unit tests cover the code .

Base automatically changed from add/expiry-notices-wp-admin-banner to trunk August 21, 2026 11:08
@Copons Copons added DO NOT MERGE don't merge it! [Status] Needs Review This PR is ready for review. Task and removed Bug When a feature is broken and / or not performing as intended [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. [Status] In Progress labels Aug 21, 2026
@Copons Copons changed the title Expiry notices: stop the rollout (prepared revert, do not merge) [DO NOT MERGE] Expiry notices: stop the rollout (prepared revert, do not merge) Aug 21, 2026
@Copons
Copons marked this pull request as ready for review August 21, 2026 11:13
@Copons
Copons force-pushed the revert/expiry-notices-rollout branch from 3eea706 to 149e911 Compare August 21, 2026 11:14
@github-actions github-actions Bot added [Status] In Progress Bug When a feature is broken and / or not performing as intended labels Aug 21, 2026
@Copons Copons added the Covered by non-unit tests Use to ignore the Code coverage requirement check when E2Es or other non-unit tests cover the code label Aug 21, 2026
Prepared ahead of the ramp so stopping it is a merge, not a code-writing
exercise. Do not merge unless the new notices are actually causing trouble.

Takes the share to 0%, and moves that check ahead of the per-site override so
zero means zero: a site carrying `wpcom_expiry_notices_enabled` from before the
stop does not stay on the new notices. That ordering is the difference between
stopping the rollout and stopping most of it.

Both halves of the swap read the same predicate, so this one change also brings
the previous notices back -- wpcomsh's Atomic banner and, on the WordPress.com
side, the legacy plan-renew prompt. No site is left without a notice, and none
gets two.

The `wpcom_expiry_notices_enabled` filter still runs last and can still force a
single site back in, which is how you check a fix without restarting the ramp.

Restarting is putting the share back to whatever the ramp had reached. The tests
describe the stopped contract rather than the running one, so they move with it.

Rebuilt on trunk after the 20% widening landed; the previous version of this
branch was written against 10%.
@Copons
Copons force-pushed the revert/expiry-notices-rollout branch from 149e911 to 4423ab5 Compare August 21, 2026 15:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug When a feature is broken and / or not performing as intended Covered by non-unit tests Use to ignore the Code coverage requirement check when E2Es or other non-unit tests cover the code DO NOT MERGE don't merge it! [mu wpcom Feature] Expiry Notices [Package] Jetpack mu wpcom WordPress.com Features [Plugin] Wpcomsh [Status] In Progress [Status] Needs Review This PR is ready for review. Task [Tests] Includes Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant