Repository navigation
Commit 1a1294b
* Start fix for #1554
Assisted-by: Claude Code:claude-opus-5-5
* Skip lockless nested npm projects in root scans
A root `scan --mode vendored` over a repo that holds an npm project
installed without a lockfile (`package-lock=false` in its .npmrc, or
`npm install --no-package-lock`) handed that project's packages to the
root's lockfile. The root lock never lists them, so every run failed
with vendor_lock_entry_not_found, exited 1 and dropped the in-run VEX,
and the suggested `npm install` could not clear it.
Such a directory, with its own package.json and node_modules and not
listed by any workspace, is now treated like a nested project with its
own lock: its packages get the nested_project_skipped warning naming
the PATH to scan, and the root run succeeds. A member of a lockless
inner workspace counts as part of that workspace's project.
Fixes #1554
Assisted-by: Claude Code:claude-opus-5-5
* Give lockless nested projects a working remedy
The nested_project_skipped warning for a project installed without a
lockfile said it had its own lockfile and told the user to run a
hosted or vendored scan of it, which is refused there for lack of a
lock. It now says the project has no lockfile and offers two remedies
that work: create the lock with `npm install --package-lock` and scan
it, or patch its node_modules in place with agent mode.
The lockless check also stops at the scan root, so a workspace file
above the directory being scanned no longer decides what counts as
nested below it; a pnpm workspace root no longer claims a directory it
does not list; and Rush projects stay the Rush root's.
Assisted-by: Claude Code:claude-opus-5-5
* Read brace globs when finding lockless projects
A pnpm-workspace.yaml whose packages: globs use braces or classes
(`{apps,libs}/*`), or that could not be read, made every lockless
project below it count as a workspace member, so a root vendored scan
still failed on it. Such globs are now matched with the shared
workspace glob grammar, and an unreadable file lists nothing, since
pnpm cannot install from it either.
Assisted-by: Claude Code:claude-opus-5-5
* Honour pnpm exclusions in unmodeled globs
The brace-glob fallback for pnpm-workspace.yaml matched a directory if
any package manager's reading did, so a `!` exclusion, a `test` or
`tests` directory, or a dot directory could still count as a member,
and a lockless project there failed the root vendored scan. The
fallback now reads each glob pnpm's way.
Assisted-by: Claude Code:claude-opus-5-5
* Strip one `!` from a pnpm exclusion glob
The brace-glob fallback stripped every leading `!`, so `!!apps/x`
excluded apps/x, while pnpm's own matcher strips one `!` and treats
the rest as a literal that matches nothing. It now strips one.
Assisted-by: Claude Code:claude-opus-5-5
* Pin setup-uv to 0.13.1 for the Pipenv legs
The nightly e2e_vex_build pipenv legs (ubuntu and macOS) went red on
2026-10-20: `uv pip install -r pylock.toml` refuses the pylock Pipenv
2026.8.0 writes with "The target environment is not supported by the
lockfile". Pipenv emits `environments = []`, and uv 0.13.2 (released
2026-10-19) started treating an empty list as "no environment
supported". setup-uv installs the latest uv when no version is given,
so the oracle drifted under an unchanged main.
Pin uv to 0.13.1, the last version these legs passed on, in ci.yml
and pipenv-compatibility.yml, as the other workflows already pin
their uv.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4ww7ytRoApPcBHiJN4bm2
(cherry picked from commit a7c9207)
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6ff86f0 commit 1a1294b
4 files changed
Lines changed: 358 additions & 14 deletions
File tree
- crates
- socket-patch-cli
- src/commands/scan
- tests/scan
- socket-patch-core/src/hosted
- docs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
666 | 666 | | |
667 | 667 | | |
668 | 668 | | |
669 | | - | |
| 669 | + | |
| 670 | + | |
670 | 671 | | |
671 | 672 | | |
672 | 673 | | |
| |||
678 | 679 | | |
679 | 680 | | |
680 | 681 | | |
681 | | - | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
682 | 688 | | |
683 | 689 | | |
684 | 690 | | |
| |||
690 | 696 | | |
691 | 697 | | |
692 | 698 | | |
693 | | - | |
| 699 | + | |
694 | 700 | | |
695 | 701 | | |
696 | 702 | | |
697 | 703 | | |
698 | 704 | | |
699 | | - | |
700 | | - | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
701 | 709 | | |
702 | 710 | | |
703 | 711 | | |
704 | 712 | | |
705 | 713 | | |
706 | | - | |
707 | | - | |
708 | | - | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
709 | 728 | | |
710 | 729 | | |
711 | 730 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
425 | 425 | | |
426 | 426 | | |
427 | 427 | | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
0 commit comments