Skip to content

Launchpad: remove the deprecated start-writing checklist#50432

Draft
taipeicoder wants to merge 3 commits into
trunkfrom
remove/start-writing-final
Draft

Launchpad: remove the deprecated start-writing checklist#50432
taipeicoder wants to merge 3 commits into
trunkfrom
remove/start-writing-final

Conversation

@taipeicoder

Copy link
Copy Markdown
Contributor

Fixes # N/A

Proposed changes

  • Remove the start-writing Launchpad checklist. Its task set is a strict subset of the design-first checklist, so no task definitions are orphaned.
  • Remove the branches that remained for the flow: the blog_launched gating, the site launch cleanup arm, and the tailored onboarding email trigger. Each now falls through to the behavior every other site intent already gets, and design-first keeps its own handling untouched.
  • Keep the retired-intent cleanup (wpcom_launchpad_clear_retired_site_intents) added earlier. It is the only thing that still clears site_intent for sites left on the flow, and it does not depend on the checklist existing.

This is the final jetpack piece of the start-writing deprecation. Calypso has removed the flow and its routing, and wpcom has removed its checklist reads and onboarding email campaign, so nothing downstream reads this checklist anymore.

Related product discussion/links

  • N/A

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

No. The tailored onboarding email campaign was already unreachable for this intent, since no site is created under the flow. design-first is unchanged.

Testing instructions

  • Check out this branch and run the package's PHP tests. All should pass:
    cd projects/packages/jetpack-mu-wpcom && composer test-php
    
  • On a site with site_intent set to design-first, confirm nothing changed:
    • The Launchpad still shows the design-first checklist.
    • The blog launch task stays disabled until the plan, domain, and blog setup tasks are complete.
    • Launching the site clears site_intent and turns the Launchpad screen off, and the tailored onboarding email still triggers.
  • On a site with site_intent set to start-writing, confirm it degrades cleanly:
    • The retired-intent cleanup clears site_intent and turns the Launchpad screen off on the next request.
    • The Launchpad is not shown, and no PHP warnings are emitted.

The start-writing flow is retired end to end: Calypso no longer routes
into it, and wpcom no longer reads its checklist or runs its onboarding
email campaign. Remove the checklist and the branches that remained for
it: the blog_launched gating, the site launch cleanup arm, and the
tailored email trigger. Each falls through to the behavior every other
site intent already gets, and design-first keeps its own handling
untouched.

The retired-intent cleanup added earlier stays. It is the only thing that
still clears site_intent for sites left on the flow, and it no longer
depends on the checklist existing.

The endpoint test's checklist_slug fixture moves to design-first, since
an unregistered slug is now rejected by the REST arg schema before the
use_goals flag is consulted.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@github-actions

github-actions Bot commented Jul 11, 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 remove/start-writing-final branch.
  • To test on Simple, run the following command on your sandbox:
bin/jetpack-downloader test jetpack-mu-wpcom-plugin remove/start-writing-final

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

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!

@jp-launch-control

jp-launch-control Bot commented Jul 11, 2026

Copy link
Copy Markdown

Code Coverage Summary

Coverage changed in 4 files.

File Coverage Δ% Δ Uncovered
projects/packages/jetpack-mu-wpcom/src/features/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-launchpad-navigator.php 0/62 (0.00%) 0.00% 2 ❤️‍🩹
projects/packages/jetpack-mu-wpcom/src/features/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-launchpad.php 144/151 (95.36%) 0.06% 0 💚
projects/packages/jetpack-mu-wpcom/src/features/launchpad/launchpad-task-definitions.php 721/1501 (48.03%) 0.22% -7 💚
projects/packages/jetpack-mu-wpcom/src/features/launchpad/launchpad.php 26/611 (4.26%) 1.20% -17 💚

Full summary · PHP report · JS report

Removing the checklist also drops the slug from the endpoint's
checklist_slug enum, so a request that passes it explicitly gets a 400
during argument validation. Calypso still builds those requests from
cached site_intent, and the full Launchpad reads that 400 as a fetch
failure and redirects to /home.

Keep the retired slugs in the enum, sourced from the same list the
site-intent cleanup uses, so a stale request degrades to an empty
checklist and the cleared state instead of erroring. Covered by a
regression test asserting the explicit slug returns 200.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
A site's wpcom_launchpad_config can still name a retired checklist as its
active_checklist_slug, from before the checklist was unregistered. The
getter returned it verbatim, so the Navigator reported a current checklist
that no longer exists while the available list, which filters unregistered
slugs, showed nothing.

Validate the stored slug against the registered checklists in the getter,
matching what the available list already does and what the setter already
enforces. This is a read-time repair, so it also covers sites whose
site_intent was cleared earlier and would be missed by an intent-gated fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant