Skip to content

Commit e39521c

Browse files
committed
pip bug-hunt run 20261016T063840Z
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FGWCGWzCUFEz5ZwFpxWr7
1 parent e72b1fb commit e39521c

2 files changed

Lines changed: 58 additions & 8 deletions

File tree

‎entries/pip/20261016T063840Z.md‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[agent] 2026-10-16: pip / requirements.txt bug-hunt run
2+
3+
**Tested:** main `657fce2`; latest release v5.0.1. Main moved 4 commits since `4cc50f4` (yarn portal copies, a gemspec VEX fix, CI test moves); none touch PyPI code.
4+
5+
**Setup:** real pip 20.3.4 (py3.8), 24.0 (py3.11), 25.0.1 (py3.12) and 26.2.1 (py3.13) with real six 1.16.0 from PyPI. The hosted mock is the repo's own `in_process_vendor_pypi_takeover.rs` `mount_api` (patch API, hosted wheel, PyPI JSON), run as a long-lived throwaway `#[ignore]` test. Contest cells used the #1549 harness `vex_pipenv_pip_common::contested_by_a_non_socket_direct_reference` with the real CLI. All throwaway tests were reverted afterwards.
6+
7+
**Probe branches:** none. `git push origin --delete bughunt/pip/20260930-hash-mode` was denied again, so nine old `bughunt/pip/*` branches remain and no new probe was pushed. Linux only.
8+
9+
## Re-triage
10+
11+
No open pm:pip issue was re-run. Nothing PyPI-related merged since the last run. #1587 has an open fix PR, #1599 (not merged).
12+
13+
## Cells (Linux)
14+
15+
| Cell | Result |
16+
| --- | --- |
17+
| `list` over a hand-written hosted requirements.txt: plain, `-r` include, hash continuation, UTF-16, `Six`, marker, CRLF, real UTF-8 BOM | pass |
18+
| `list` with the hosted pin only in a `-c` file, `requirements-dev.txt` or `sub/requirements.txt` (not installed by `pip install -r requirements.txt`) | pass (not listed) |
19+
| `list` with a commented-out hosted line | `hosted_wiring_contested`, exit 1 (documented; see Known non-bugs) |
20+
| hosted marker split (1.16.0 / 1.17.0, two uuids): `list`, scoped `remove`, unscoped `rollback` of a hashed continuation file → PyPI hashes; pip 24.0 / 26.2.1 install it | pass |
21+
| `scan --mode hosted` on a hashed continuation file, pip 25.0.1 / py3.12, fresh venv with `--require-hashes` | pass (patched wheel installed) |
22+
| `vex` after the hosted install: fresh venv verifies; warm venv is omitted (`hash_mismatch`) | pass |
23+
| requirements.txt contest of a Pipfile.lock wiring: `==X`, `X == Y`, `Name==X`, `[x]==X`, marker, `(==X)` | pass (contested) |
24+
| same: `===X`, `==X.0`, `==vX` | **fail → #1602** (vex `not_affected`, exit 0) |
25+
| same: `~=X`, `==1.2.*`, `>=X,<=X` | not contested (filed only as a design note in #1602) |
26+
27+
## Issues
28+
29+
- Filed #1602: https://github.com/SocketDev/socket-patch/issues/1602
30+
31+
## False positives ruled out
32+
33+
- An apparent "BOM-first-line hosted pin is contested" turned out to be dash's `printf` writing a literal `\xef\xbb\xbf`. Real BOM files list, vex and roll back fine.
34+
- A commented-out hosted url is contested by the documented rule (CLI_CONTRACT.md `hosted_wiring_contested`: a rejected mention).
35+
- `vex` with no `--product` on a requirements-only project exits `product_undetected`, which is documented.
36+
37+
## Next
38+
39+
1. #1602: re-verify once fixed, and check the reverse direction (a Pipfile.lock `"===X"` / `"==X.0"` beside a requirements.txt wiring).
40+
2. #1587 re-verify once PR #1599 merges (plus a name-less `-e ./src/six`).
41+
3. #1567 follow-ups (a mixed `-r` include, the superseding re-vendor, the hosted → vendored takeover).
42+
4. A uv.lock (not pylock) added after vendoring requirements.txt.
43+
5. A Windows / macOS probe once branch deletion works.
44+
45+
---
46+
_Generated by [Claude Code](https://claude.ai/code)_

0 commit comments

Comments
 (0)