Installing a v8 module If a contrib module's info.yml contains core: 8.x and not core_version_requirement: ^8.8 || ^9, how can a site be upgraded to Drupal 9 using composer?
composer update downloads modules in &quot;require&quot;: { which needs to be before &quot;patches&quot;: { because there needs to be a module before it can be patched. Assume the patch patches the info.yml file with core_version_requirement: ^8.8 || ^9.
So composer update can't resolve to an installable set of packages and throws errors like this:
- Root composer.json requires drupal/entity_jump_menu 1.1 -&gt; satisfiable by drupal/entity_jump_menu[1.1.0].
- drupal/entity_jump_menu 1.1.0 requires drupal/core ~8.0 -&gt; found drupal/core[8.0.0-beta6, ..., 8.9.x-dev] but it conflicts with your root composer.json require (^9.1).

It looked like the answer was changing drupal/core and drupal/core-dev to a value of &quot;^8.8||^9.1&quot;. composer update will now run, except the site is still building in version 8.9.13.

Following the suggestions on the mediacurrent blog post, I changed composer.json to the following
  &quot;repositories&quot;: [
      {
          &quot;type&quot;: &quot;composer&quot;,
          &quot;url&quot;: &quot;https://packages.drupal.org/8&quot;,
          &quot;exclude&quot;: [&quot;drupal/entity_jump_menu&quot;]
      },
      {
          &quot;type&quot;: &quot;git&quot;,
          &quot;url&quot;: &quot;git@git.drupal.org:issue/entity_jump_menu-3130218.git&quot;
      }
  ],
  &quot;require&quot;: {
      ...
      &quot;drupal/entity_jump_menu&quot;: &quot;dev-3130218-drupal-9-deprecated&quot;,
      ...   
  },
  

Which downloads the fork of the module, into vendor/drupal/entity_jump_menu. Unfortunately Drupal and/or Drush don't see the module in that directory.
I'm going to try the computerminds solution next.

The solution from computerminds adds the fork of the module to the modules/contrib directory. Here's the code.
&quot;repositories&quot;: [
    {
        &quot;type&quot;: &quot;package&quot;,
        &quot;package&quot;: {
            &quot;name&quot;: &quot;drupal/entity_jump_menu&quot;,
            &quot;type&quot;: &quot;drupal-module&quot;,
            &quot;version&quot;: &quot;dev-3130218-drupal-9-deprecated&quot;,
            &quot;source&quot;: {
                &quot;type&quot;: &quot;git&quot;,
                &quot;url&quot;: &quot;git@git.drupal.org:issue/entity_jump_menu-3130218.git&quot;,
                &quot;reference&quot;: &quot;268adc649cfb4ad716751a8643e60f5df4dbb80d&quot;
            }
        }
    },
    {
        &quot;type&quot;: &quot;composer&quot;,
        &quot;url&quot;: &quot;https://packages.drupal.org/8&quot;
    }
],
&quot;require&quot;: {
    ...
    &quot;drupal/entity_jump_menu&quot;: &quot;dev-3130218-drupal-9-deprecated&quot;,
    ...
},

Thanks for pointing me in the right direction.
You'll need to fork the module. This is more of a pain than patching but it's much better now that you can make issue forks on drupal.org.
Here's a detailed tutorial.
The basic workflow is this:

Make an issue fork on drupal.org that updates the version requirement.
Add the forked repo to your composer.json and update your site that way.
When the module gets a real Drupal 9 release, switch your composer.json back to the release.