Bug hunt ledger: Cargo #315
Replies: 2 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
|
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-09-30 (run 2), main
f6b7fb9(CLI 4.0.0), latest release 4.0.0 (previous 3.3.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 is a hand-staged.socket/manifest.jsonplus blobs for agent and vendored mode (the same shapetests/e2e_vendor_cargo_build.rsuses). Hosted mode uses the wiremock sparse-registry harness fromtests/e2e_redirect_cargo_shapes.rs, with extra shapes added locally and not committed. The existing test suites and thecargo_e2e_matrixalready cover the plain shapes, lock v1–v4 and the old toolchains. This ledger tracks what they don't.vendor/(source replacement)vendor/[patch], dottedpatch.crates-io, idempotent re-run, repair,cargo update)registry = "crates-io"[patch]in config files / renamed key / custom source replacement[dependencies.x]table, trailing comment,cfg_ifrename, build-deps,[workspace.dependencies.x]table +x.workspace = true, member→member path chain, excluded non-member path dep, direct + transitive other version, optional + features/dep:,default-features = false,"1"caret, ws members plain + renamed, idempotent re-scan,cargo vendorafter redirect)vendor/, rollback)Backlog
bughunt/cargo/20260930-vendor-dirandbughunt/cargo/20260930-index-dirsstill exist: the git proxy refusedgit push --deletewith HTTP 403 in runs 1 and 2. A maintainer needs to delete them. Until deletes work, avoid new probe branches..cargo-checksum.jsonformatting: agentrollbackrestores acargo vendorchecksum file semantically but not byte-for-byte (compact JSON is re-emitted pretty-printed;sidecars/cargo.rsusesto_vec_pretty). Check whether the contract promises byte-exact rollback for sidecars before filing. It's low severity.registry-index = …deps; a project with[registries]/[registry] defaultconfig; hosted plus existing[source.crates-io] replace-withon a fresh--lockedcheckout; Windows fresh-checkout--locked..socket/vendor/cargo/<uuid>/), and vendored builds oncargo +1.41/+1.45.--global/--global-prefixagainst a CARGO_HOME with several index dirs, plus the git-index dirgithub.com-1ecc6299db9ec823(both the Agent-mode cargo apply patches only the first of several registry/src index dirs (cargo 1.84 vs 1.85+ hashes), so one cargo keeps building the unpatched crate while apply and VEX report success #339 family).repairin agent mode for a deleted vendored file; agentvexagainst a hand-edited.cargo-checksum.json.Known non-bugs
patches-api.socket.devis blocked by the sandbox proxy (403). Stage.socket/manifest.jsonplus blobs locally, or use the repo's wiremock harnesses.cfg-if.version = "1.0.4") is skipped withredirect_cargo_toml_dep_unrewritable("declared with dotted keys this rewriter does not edit"), with nothing rewritten. It's a loud, documented-by-warning limitation, not a silent failure.vendor/--mode vendoredrefusesalready_vendored_in_treewhenvendor/<crate>exists: intended ("patch it in place withapplyinstead"). What's wrong is only that the detection is hard-coded tovendor/(see 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 (a fixture pitfall).applydoesn't accept the hand-staged manifest used here (partialFailure, no events), so 3.3.0 can't be compared for these cells.apply --checkis Go-only (CLI_CONTRACT), so it returns success with no events for cargo even when patched files were reset.vexomits cargo withecosystem_not_setupunless the manifest hassetup.manual: ["cargo"], because cargo has no install hook (setup→no_files). It's documented.[patch."sparse+https://index.crates.io/"]isn't treated as crates.io by cargo 1.93 (the build ignores it), so socket-patch 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), not a socket-patch rewrite failure. Runcargo clean -p <crate>before judging a cell.All reactions