A path repository that reached staging

A local path repository committed by accident, and an install on a machine where the path does not exist.

$ composer install
  [InvalidArgumentException]
  Source path "/home/turker/code/packages/reporting"
  is not found for package turkerdev/reporting

# the guard, in CI, which should have existed in 2023
$ jq -e '.repositories // [] | map(select(.type=="path"))
         | length == 0' composer.json 
  || { echo 'a path repository is committed'; exit 1; }

A path repository is the right tool for developing a package alongside its consumer and belongs in a local override rather than in the committed manifest. The failure is at least loud — an install that cannot resolve fails immediately — which is better than the version where the path exists on the build machine and contains something stale.