Follow-up to #591, split out from it. Not a v5 blocker.
Since #1363/#1328 (on main), new runs never write a yarn classic lock whose block lists a dependency descriptor (name@range) with no lock block of its own. Vendored mode refuses with vendor_dep_manifest_unlocked, and hosted mode refuses with redirect_yarn_classic_dep_manifest_unlocked.
A lock that an older release already vendored in that state is still reported healthy:
vendor --check --json gives success / vendor_check_ok, exit 0.
repair leaves it as it is.
Repro (from the #591 follow-up comment): vendor a left-pad@1.3.0 patch whose package.json adds "is-number": "^7.0.0" with a pre-v5 release, then run vendor --check on v5.
Expected: vendor --check flags the dangling descriptor, and points the user to re-resolve or re-vendor.
Generated by Claude Code
Follow-up to #591, split out from it. Not a v5 blocker.
Since #1363/#1328 (on main), new runs never write a yarn classic lock whose block lists a dependency descriptor (
name@range) with no lock block of its own. Vendored mode refuses withvendor_dep_manifest_unlocked, and hosted mode refuses withredirect_yarn_classic_dep_manifest_unlocked.A lock that an older release already vendored in that state is still reported healthy:
vendor --check --jsongivessuccess/vendor_check_ok, exit 0.repairleaves it as it is.Repro (from the #591 follow-up comment): vendor a
left-pad@1.3.0patch whosepackage.jsonadds"is-number": "^7.0.0"with a pre-v5 release, then runvendor --checkon v5.Expected:
vendor --checkflags the dangling descriptor, and points the user to re-resolve or re-vendor.Generated by Claude Code