Bug hunt ledger: NuGet / dotnet #320
Replies: 4 comments
|
[agent] 2026-09-30: NuGet / dotnet bug-hunt run This is the first run, so the ledger started empty and there were no Tested: main Setup: there's no Socket API. Agent and vendored cells use a hand-staged Cells
Issues
False positives ruled out
Probe runs
I couldn't delete probe branch Next
|
|
[agent] 2026-09-30 (23:50 UTC): NuGet / dotnet bug-hunt run Tested: main Re-triage: #352, #353 and #354 were not re-run, because main hasn't moved since they were filed (same SHA, same binary). They stay open. Cells
Issues
False positives ruled out
Probe runs
I couldn't delete the probe branches: Next
|
|
[agent] 2026-10-01: maintainer note: test global ( This is a maintainer request, not a run report. Add it to the top of the backlog and keep it there until the cells below are covered. Ask: make sure we correctly scan global installs when Where NuGet / dotnet puts global installs: The global packages folder ( What to check (prove each with a real global install, not by reading source):
Add OS × NuGet / dotnet version cells for |
|
[agent] 2026-10-01 (05:47 UTC): NuGet / dotnet bug-hunt run Tested: main This run focused on the maintainer's global-mode ( Setup: global installs are real ones: Re-triage
Cells (global mode)
Issues
False positives ruled out
Observed, not filed (cross-PM, not NuGet-specific)
Probe runs
Next
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
[agent] Progress ledger for the scheduled NuGet / dotnet bug-hunt routine (label pm:nuget).
Last run: 2026-10-01 05:47 UTC, main
2463257(v5 consolidation, #277), release v4.0.0.Coverage matrix
Cells: OS × SDK × mode. "warm" means the global packages folder already holds the upstream package; "sln" means the lock sits in
src/<Project>/. "agent custom gpf" meansglobalPackagesFolder/RestorePackagesPathis set.<clear/>, CPM, re-run, revert)packages/)repositoryPath)Project-mode agent scan (no
-g) patches unrelated cached packages and VEX attests them: fail #427 (Linux 8; v4.0.0 too).Global mode (
-g)"default" =
~/.nuget/packages, "tool" =dotnet tool install -g(~/.dotnet/tools/.store), "user gpf" =globalPackagesFolderin the user-level NuGet.Config.Also passed on Linux 8:
SOCKET_GLOBAL=1,SOCKET_GLOBAL_PREFIX,--global-prefixwith spaces + unicode, and-gfrom inside a packages.config project (no leak).Backlog
--tool-pathtools, local tools (dotnet-tools.json), and apply/rollback/vex-gon macOS / Windows (only scan has been probed there).%APPDATA%\NuGet\NuGet.Config), plus machine-wide configs.packages/,repositoryPath), where there is no PackageReference and no lock.Also passed on Linux 8 (no issue): vendored with a BOM + CRLF
NuGet.Config(+ byte-exact revert), multi-TFM +RestoreLockedMode, and a transitive-only patched package.Known non-bugs
hosted_revert_unsupported, CLI_CONTRACT.md). This is documented.vendor_nuget_no_lockfile). The missing pin is documented. The false claim that the feed "forces" the patched copy is not; that's Vendored and hosted NuGet patches are shadowed by a warm global packages folder: silently unpatched without a lock, NU1403 with one #352.nuget.config/packages.lock.json(CLI_CONTRACT.md, README VEX table). Root-only scope is documented. Wiring the root config without pinning the member locks is Vendored and hosted NuGet leave member-project packages.lock.json unpinned in a solution layout, so every fresh restore fails NU1403 #353.applydeletes.nupkg.metadata. That's documented, and a later restore rewrites it without reverting the patch.rollbackwith no targets drops every manifest entry and GCs the blobs (README command table), so a laterremove <purl>reportsnot_found. That's documented.scan -g --mode hosted/--global-prefix --mode hostedrefuse with exit 2 by design (CLI_CONTRACT.md).apply -gon a global tool fails loudly (rc 1, not found). The silent part isscan -g(Global scan (-g) never crawls .NET global tools (~/.dotnet/tools/.store), so a patcheddotnet tool install -gpackage is silently left out of scan, apply and vex on every OS #426).NuGet.Configwith CRLF gets LF-terminated inserted lines (mixed endings). NuGet parses it fine, and revert is byte-exact, so it's cosmetic.All reactions