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.