Bug hunt ledger: Pipenv #313
Replies: 6 comments
|
[agent] 2026-09-30: Pipenv bug-hunt run This is the first run, so the ledger started empty and there were no Tested: main Setup: patch.socket.dev is blocked by the sandbox proxy (403), so a local mock patch API served a real patched Cells
Issues
False positives ruled out
Probe runs
I couldn't delete the probe branch: Next
|
|
[agent] 2026-09-30: Pipenv bug-hunt run Tested: main Re-triage: #333 and #334 are still open. Main hasn't moved since they were filed, so there's no fix to check and I didn't comment. #334 has a new-info comment (below). Cells
Issues
False positives ruled out
Probe runs
I couldn't delete either probe branch: 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 Pipenv puts global installs: What to check (prove each with a real global install, not by reading source):
Add OS × Pipenv version cells for |
|
[agent] 2026-10-01: Pipenv bug-hunt run Tested: main Re-triage
I didn't file a separate issue for the false VEX. It comes from the same Cells (Linux)
Maintainer request: global (
|
|
[agent] 2026-10-01: Pipenv bug-hunt run Tested: main Re-triage
Cells (Linux)
Issues
False positives ruled out
Next
|
|
[agent] 2026-10-01 15:41Z: Pipenv bug-hunt run Tested: main Regression check of the new main
Re-triage
Cells (Linux)
Issues
False positives ruled out
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 Pipenv bug-hunt routine (label pm:pipenv).
The routine runs every 6 hours. Each run adds one comment here with the socket-patch commit it tested, the OS × Pipenv-version × mode cells it covered, the issues it filed, updated or closed, and what it plans to probe next. The routine treats this thread as its only memory.
Last run: 2026-10-01 15:41Z, main
6e7ef74(v5 + #330 Poetry venv reorder; CLI 4.0.0).Coverage matrix
Cells marked v5 were re-run on
2463257(v5: no hosted ledger, upstream-restore rollback, service-artifact vendoring).-g(install --system)-g --mode hostedrefused exit 2 pass;-g --apply/ vex / rollback pass-g(install --system)-g --apply/ vex / rollback, SOCKET_GLOBAL,--global-prefixpass;rollback -g/remove -g/get -g --mode hosted|vendoredunwind or rewire the cwd project's Pipfile.lock (#445 / #436)-g(install --system)--global-prefixpass; hosted refused exit 2 pass;-g --apply/get -g/ vex / rollback pass-gagent scan in a venv-less project patches the global interpreter (needs a maintainer decision, see Known non-bugs)pathref,--deploy, rollback; 11 byte-exact)not_applied)Policy (socket.yml) cells, Linux 2026.8.0 hosted monorepo: every filter passes;
get <uuid>skips thepolicy_bypassedwarning (fail #453, re-checked on6e7ef74). socket.yml ×--package/--min-severity/--max-new-patchesintersections: pass (6e7ef74). Concurrent hosted scans: pass. SIGKILL mid hosted / vendored run: pass. Mirror / env-var source rollback refusal: pass (documented).Named category (
[docs]) hosted +sync --categories/install --deploy --categories/ vex / rollback: pass on 2022.12.19, 2023.12.1 and 2026.8.0; vendored: pass on 2022.12.19 and 2023.12.1 (6e7ef74). Non-registry entries (path,fileURL,git): hosted refuses withredirect_pipenv_refused, vendored withpypi_pipenv_source_already_exists, vex attests nothing: pass on 2026.8.0.-g/ agent on an unwritable prefix or a root-owned.venv, as a non-root user (2026.8.0): human mode fails loudly (pass); the--jsonenvelope drops the failure (#424); a rerun exits 0 unpatched (#454).macOS/Windows rows are from the 2026-09-30 probes on
f6b7fb9. No probe ran on v5 because branch deletion through the git proxy still fails (re-checked 2026-10-01 09:30Z);bughunt/pipenv/20260930-venv-discoveryandbughunt/pipenv/20260930-virtualenvstill need a maintainer to delete them.Backlog
-gmode): Linux is covered on 2018.11.26, 2023.12.1 and 2026.8.0, and the unwritable prefix as a non-root user is done (scan/get --json drop the agent-mode apply failure: exit 1 with failed: 0, the patch shown as "added", and no error anywhere (e.g. a read-only global ~/.m2) #424 / scan --sync / --mode agent never re-applies an already-recorded patch, so after a fresh Hatch env (or any reinstall) it exits 0 with the package unpatched #454). Still to do: macOS and Windows (blocked: no probe), 2022.12.19 (usepipenv --python <py3.10>, notPIPENV_PYTHON), and a--global-prefixwith spaces or unicode. Full checklist in the 20261001T040000Z entry.PIPENV_PYTHONvenv-name suffix on 11.PIPENV_PIPFILE(./Pipfile,sub/../Pipfile, another directory): Pipenv hashesos.path.abspath, while the crawler hashescwd.join(raw)(python_crawler.rs:990).pipenv requirements/pipenv verifyafter a hosted redirect, on 2023.12.1 and 2026.8.0.Known non-bugs
pipfile-spec< 6 (Pipenv 0–6): hosted is refused (redirect_pipenv_skipped) and vendored is refused (pypi_pipenv_spec_unsupported). Documented.pypi_pipenv_installer_unsupported). Documented.pipenv install/sync/--deploy; the stale-install warning is the designed remedy. Documented.pipenv lock/updatedrops the redirected reference (silent unpatch until re-scan). Documented.vendor_integrity_unverified. Documented.PIPENV_PIPFILE. Documented.rollbackdrops manifest entries, so a laterapplyis a no-op. Documented.$VARinsideWORKON_HOME. That's Pipenv's bug.vendor_fetch_failedagainst pypi.org in the sandbox is rustls vs the proxy CA; use aSOCKET_PYPI_JSON_APIforwarder.VIRTUAL_ENVset with noPIPENV_IGNORE_VIRTUALENVS/PIPENV_ACTIVE: Pipenv uses the activated venv too, so socket-patch patching it is correct..venvfile pointer: a relative path is joined to the project directory and an empty file means the default placement. Matches Pipenv 2026.8.0.rollbackon a project with no manifest, ledger or hosted pin exits 1 "Manifest not found". Documented (CLI_CONTRACT, truly-empty project).indexkey. Harmless for a local wheel, and rollback restores it.rollback <path>targets select installed copies, not hosted project directories; use--cwd. Documented, and cross-PM anyway.integrity.sha512on thetarballartifact; the view needsfiles; agent mode needs/patches/blob/<afterHash>.python_crawler.rsget_site_packages_paths). So an agent-modescanwithout-g, in a Pipenv project whose venv isn't created yet (or isinstall --system), patches the global site-packages in place. That's right for Docker--system, but it contradicts the-gchecklist ("a scan without-gmust never touch it"). Filing waits on a maintainer decision."hashes": [](seen in the sandbox) comes back from hosted rollback with PyPI's full hash list: not byte-exact, but a valid and stricter registry entry. The upstream restore re-derives hashes by design._meta.sourcesURL written as${PIP_INDEX_URL}, even when the variable points at pypi.org; env vars aren't expanded. Documented and fail-closed, with thegit checkoutremedy.scan -gcounts every ecosystem plus the well-known system Python paths (/usr/lib/python3*,/usr/local/lib/python3*,~/.local). That's by design; Pipenv's WORKON_HOME venvs aren't included.--prunewarns that it has no effect with--mode hosted. Documented.path,fileURL,git) are refused in hosted (warning, exit 0) and vendored (pypi_pipenv_source_already_exists, exit 1). By design; the "no Pipfile beside the lock" wording in the hosted detail is Hosted scan never sees the Pipfile, so a live Pipfile.lock conflict is treated as abandoned and a sibling requirements.txt is redirected anyway #333.by-packagemust carryvulnerabilities[*].severity, or--package/--min-severitycells give false failures.All reactions