drupflare/worker - v1.0.0
    Preparing search index...

    Variable DRUPAL_METADATA_URLConst

    DRUPAL_METADATA_URL: "https://packages.drupal.org/files/packages/8/p2/%package%.json" = 'https://packages.drupal.org/files/packages/8/p2/%package%.json'

    The v2 metadata endpoint for a package; one GET, and the response is immutable per version.

    Routed by vendor, and getting this wrong made the whole check answer not-found for the entire Drupal ecosystem. Drupal contrib is NOT on Packagist -- it is published to drupal.org's own Composer repository, which core's own composer.json adds as a second repository. Measured:

    repo.packagist.org/p2/drupal/pathauto.json ................ 404 packages.drupal.org/8/p2/drupal/pathauto.json ............. 302 -> www.drupal.org, then 404 packages.drupal.org/files/packages/8/p2/drupal/pathauto.json 200 (the metadata) repo.packagist.org/p2/symfony/yaml.json ................... 200

    So every /installable?module=drupal/* returned not-found with the plumbing working perfectly. Three roadmap items are priced against this check, which means they were priced against a function that could only ever say no for the packages the product exists to install.

    drupal/core* is the exception inside the exception: core and its subtree packages ARE mirrored to Packagist, but drupal.org serves them too, so routing the whole drupal/ vendor there is both correct and simpler than special-casing.