Bug hunt ledger: Cargo #315
Replies: 6 comments
|
[agent] 2026-09-30: Cargo bug-hunt run This is the first run, so the ledger started empty and there were no Tested: main Setup: the sandbox can't reach the Socket patch API (proxy 403). Agent and vendored cells used a hand-staged Cells
Issues
False positives ruled out
Probe runs
I couldn't delete either probe branch: Next
|
|
[agent] 2026-09-30 (UTC): Cargo bug-hunt run This is run 2. Main hasn't moved since run 1: Re-triage#338 and #339 have the same main SHA as when they were filed and no fixing PR, so their status is unchanged. I didn't comment. #336 is also unchanged. Cells
Issues
False positives ruled out
ProbesI didn't run any. 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 Cargo puts global installs: What to check (prove each with a real global install, not by reading source):
Add OS × Cargo version cells for |
|
[agent] 2026-10-01 (UTC): Cargo bug-hunt run This is run 3. Main moved to BaselineAll of the repo's cargo e2e suites pass on the new main: Re-triage
Cells: global mode (maintainer request, Linux only)
Cells: other
Issues
False positives and observations (not filed)
ProbesNone. Next
|
|
[agent] 2026-10-01 (UTC): Cargo bug-hunt run This is run 4. Main hasn't moved since run 3: v5 Re-triage
Cells
Issues
False positives ruled out
ProbesNone. Next
|
|
[agent] 2026-10-01 (UTC): Cargo bug-hunt run This is run 5. Main moved to Re-triage
Cells
Issues
False positives ruled out
ProbesNone. 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 Cargo bug-hunt routine (label pm:cargo).
Last updated: 2026-10-01 (run 5), main
6e7ef74(no cargo code changes since2463257, the v5 consolidation #277; CLI reports 4.0.0), latest release 4.0.0.Coverage matrix
Cells are "pass", "fail #N" or "untested". Every cell uses a real cargo build (
--locked/--frozen/--offline) plus a compile oracle: the patch appendspub fn socket_patched()tocfg-if, andmain.rscalls it. Patch data comes from a local public-proxy stand-in (--proxy-url, serving/patch/batch,/patch/view/<uuid>and/patch/blob/<hash>) for agent and global mode. Hosted mode uses the wiremock sparse-registry harness intests/e2e_redirect_cargo_shapes.rs, with extra shapes added locally and not committed. The repo suites andcargo_e2e_matrixalready cover the plain shapes, lock v1–v4 and the old toolchains. All of them passed on2463257in run 3. Since v5, vendored cells need the repo'stests/prebuilt_commonfixture server (SOCKET_VENDOR_URL), becausevendordownloads artifacts from the service.Cells marked (pre-v5) were last verified on
f6b7fb9and need a re-check on v5.vendor/(source replacement)[patch], re-run, repair)registry = "crates-io"cargo vendor.cargo-checksum.json--cwd= workspace member-g: scan report / hosted refusal / apply / rollback / vexcargo vendorproject (source replacement)exclude[patch.crates-io](same crate / unrelated used / unrelated unused) / path dep refusal-g)[registries.other]config, CRLF config, dead-index remove fails loudly)SOCKET_GLOBAL,--global-prefix); multi-index fail #339Backlog
-gmode on macOS and Windows across the Cargo majors: scan report, hosted refusal, apply, rollback and vex. The full checklist is in the 20261001T040000Z entry.bughunt/cargo/20260930-vendor-dirandbughunt/cargo/20260930-index-dirsstill exist.git push --deletefails through the git proxy (HTTP 403 in runs 1 and 2, "unexpected disconnect" in runs 3–5). A maintainer needs to delete them. Until deletes work, avoid new probe branches.[patch."https://github.com/rust-lang/crates.io-index"]overriding the patched crate (the URL spelling of Hosted cargo scan redirects a crate the user overrides with[patch.crates-io], silently dropping the override and breaking--locked#480), and with a user[replace]entry.[patch.crates-io]path override of the patched crate: is the patch applied to the unused registry copy, and does vex attest it?+1.41/+1.45) with a BOM/CRLF root manifest, plus v1/v2 lock re-encodes of the vendored workspace shape. Also vendored on Windows and macOS.6e7ef74).github.com-1ecc6299db9ec823under-g, and default~/.cargoversus a customCARGO_HOME.Cargo.lockdoesn't contain, andvex --product <project>lists them (see Known non-bugs).Known non-bugs
patches-api.socket.devis blocked by the sandbox proxy (403). Use a local--proxy-urlstand-in or the repo's wiremock harnesses.cfg-if.version = "1.0.4") is skipped withredirect_cargo_toml_dep_unrewritable, with nothing rewritten. It's a loud, documented-by-warning limitation.vendor/--mode vendoredrefusesalready_vendored_in_treewhenvendor/<crate>exists: intended. What's wrong is only the hard-codedvendor/detection (Agent-mode cargo apply patches the wrong copy whencargo vendoruses a custom directory (or apply runs from a workspace member), yet reports success and VEX attests not_affected #338).cargo vendor -q DIRprints no source-replacement snippet, so write.cargo/config.tomlby hand in fixtures.applydoesn't accept the hand-staged manifest (partialFailure), so it can't be compared.apply --checkis Go-only (CLI_CONTRACT).setupwas removed, and agent-modevexattests cargo patches without anysetup.manualdeclaration. The oldecosystem_not_setupnote no longer applies.[patch."sparse+https://index.crates.io/"]isn't honoured by cargo 1.93, so ignoring it is correct. The git-URL alias is refused (cargo_manifest_patch_source_alias), which is also correct.cargo vendorre-runs or re-applies is usually cargo's rlib cache (Agent-mode cargo apply/rollback has no effect on an already-built project: cargo reuses the cached rlib from target/, while apply reports success and VEX attests not_affected #387). Runcargo clean -p <crate>before judging.vex -gwithout--productexits 2 ("Could not auto-detect a top-level product PURL"): expected, since a global scope has no project PURL.scan -g --mode hosted/--global-prefix … --mode hosted/SOCKET_GLOBAL=1 scan --mode hostedexit 2 by design.remove/rollbackwith the crates.io index unreachable fails withhosted_revert_failedand leaves the files intact: correct, loud behaviour.-gpatches$CARGO_HOME/registry/src, not binaries already built bycargo install. That's inherent to cargo.Cargo.lock. It isn't filed: it's documented as "wherever the crawler finds it" and is pending a maintainer call (backlog 6).vendor --offlinewith no committed artifact refusesvendor_service_offline_conflict: artifacts come from the service (--vendor-source serviceis the default, and local building was removed). Use thetests/prebuilt_commonfixture server for vendored cells.repair/ GC deletes local beforeHash blobs, so a laterrollback --offlinefails loudly with "Before blob not found". That's by design:cleanup_unused_blobskeeps only afterHash blobs, and before-blobs are fetched on demand.cfg-if = { path = …, version = "1.0.4" }(a path dependency with a version) is refused withredirect_cargo_toml_dep_unrewritable: correct.All reactions